Module:    Win32-Kernel
Copyright:    Original Code is Copyright (c) 1995-2004 Functional Objects, Inc.
              All rights reserved.
License:      See License.txt in this distribution for details.
Warranty:     Distributed WITHOUT WARRANTY OF ANY KIND

// This file is automatically generated from "winnls.h"; do not edit.


// Adapted from:
/*++


Module Name:

    winnls.h

Abstract:

    Procedure declarations, constant definitions, and macros for the
    NLS component.

--*/
define inline-only constant $MAX-LEADBYTES              =   12;
define inline-only constant $MAX-DEFAULTCHAR            =    2;
define inline-only constant $MB-PRECOMPOSED             = #x00000001;
define inline-only constant $MB-COMPOSITE               = #x00000002;
define inline-only constant $MB-USEGLYPHCHARS           = #x00000004;
define inline-only constant $MB-ERR-INVALID-CHARS       = #x00000008;
define inline-only constant $WC-COMPOSITECHECK          = #x00000200;
define inline-only constant $WC-DISCARDNS               = #x00000010;
define inline-only constant $WC-SEPCHARS                = #x00000020;
define inline-only constant $WC-DEFAULTCHAR             = #x00000040;
define inline-only constant $CT-CTYPE1                  = #x00000001;
define inline-only constant $CT-CTYPE2                  = #x00000002;
define inline-only constant $CT-CTYPE3                  = #x00000004;
define inline-only constant $C1-UPPER                   = #x0001;
define inline-only constant $C1-LOWER                   = #x0002;
define inline-only constant $C1-DIGIT                   = #x0004;
define inline-only constant $C1-SPACE                   = #x0008;
define inline-only constant $C1-PUNCT                   = #x0010;
define inline-only constant $C1-CNTRL                   = #x0020;
define inline-only constant $C1-BLANK                   = #x0040;
define inline-only constant $C1-XDIGIT                  = #x0080;
define inline-only constant $C1-ALPHA                   = #x0100;
define inline-only constant $C2-LEFTTORIGHT             = #x0001;
define inline-only constant $C2-RIGHTTOLEFT             = #x0002;
define inline-only constant $C2-EUROPENUMBER            = #x0003;
define inline-only constant $C2-EUROPESEPARATOR         = #x0004;
define inline-only constant $C2-EUROPETERMINATOR        = #x0005;
define inline-only constant $C2-ARABICNUMBER            = #x0006;
define inline-only constant $C2-COMMONSEPARATOR         = #x0007;
define inline-only constant $C2-BLOCKSEPARATOR          = #x0008;
define inline-only constant $C2-SEGMENTSEPARATOR        = #x0009;
define inline-only constant $C2-WHITESPACE              = #x000A;
define inline-only constant $C2-OTHERNEUTRAL            = #x000B;
define inline-only constant $C2-NOTAPPLICABLE           = #x0000;
define inline-only constant $C3-NONSPACING              = #x0001;
define inline-only constant $C3-DIACRITIC               = #x0002;
define inline-only constant $C3-VOWELMARK               = #x0004;
define inline-only constant $C3-SYMBOL                  = #x0008;
define inline-only constant $C3-KATAKANA                = #x0010;
define inline-only constant $C3-HIRAGANA                = #x0020;
define inline-only constant $C3-HALFWIDTH               = #x0040;
define inline-only constant $C3-FULLWIDTH               = #x0080;
define inline-only constant $C3-IDEOGRAPH               = #x0100;
define inline-only constant $C3-KASHIDA                 = #x0200;
define inline-only constant $C3-LEXICAL                 = #x0400;
define inline-only constant $C3-ALPHA                   = #x8000;
define inline-only constant $C3-NOTAPPLICABLE           = #x0000;
define inline-only constant $NORM-IGNORECASE            = #x00000001;
define inline-only constant $NORM-IGNORENONSPACE        = #x00000002;
define inline-only constant $NORM-IGNORESYMBOLS         = #x00000004;
define inline-only constant $NORM-IGNOREKANATYPE        = #x00010000;
define inline-only constant $NORM-IGNOREWIDTH           = #x00020000;
define inline-only constant $MAP-FOLDCZONE              = #x00000010;
define inline-only constant $MAP-PRECOMPOSED            = #x00000020;
define inline-only constant $MAP-COMPOSITE              = #x00000040;
define inline-only constant $MAP-FOLDDIGITS             = #x00000080;
define inline-only constant $LCMAP-LOWERCASE            = #x00000100;
define inline-only constant $LCMAP-UPPERCASE            = #x00000200;
define inline-only constant $LCMAP-SORTKEY              = #x00000400;
define inline-only constant $LCMAP-BYTEREV              = #x00000800;
define inline-only constant $LCMAP-HIRAGANA             = #x00100000;
define inline-only constant $LCMAP-KATAKANA             = #x00200000;
define inline-only constant $LCMAP-HALFWIDTH            = #x00400000;
define inline-only constant $LCMAP-FULLWIDTH            = #x00800000;
define inline-only constant $LCMAP-LINGUISTIC-CASING    = #x01000000;
define inline-only constant $LCMAP-SIMPLIFIED-CHINESE   = #x02000000;
define inline-only constant $LCMAP-TRADITIONAL-CHINESE  = #x04000000;
define inline-only constant $LCID-INSTALLED             = #x00000001;
define inline-only constant $LCID-SUPPORTED             = #x00000002;
define inline-only constant $LCID-ALTERNATE-SORTS       = #x00000004;
define inline-only constant $CP-INSTALLED               = #x00000001;
define inline-only constant $CP-SUPPORTED               = #x00000002;
define inline-only constant $SORT-STRINGSORT            = #x00001000;
define inline-only constant $CSTR-LESS-THAN             =    1;
define inline-only constant $CSTR-EQUAL                 =    2;
define inline-only constant $CSTR-GREATER-THAN          =    3;
define inline-only constant $CP-ACP                     =    0;
define inline-only constant $CP-OEMCP                   =    1;
define inline-only constant $CP-MACCP                   =    2;
define inline-only constant $CP-SYMBOL                  =   42;
define inline-only constant $CP-UTF7                    = 65000;
define inline-only constant $CP-UTF8                    = 65001;
define inline-only constant $CTRY-DEFAULT               =    0;
define inline-only constant $CTRY-ALBANIA               =  355;
define inline-only constant $CTRY-ALGERIA               =  213;
define inline-only constant $CTRY-ARGENTINA             =   54;
define inline-only constant $CTRY-AUSTRALIA             =   61;
define inline-only constant $CTRY-AUSTRIA               =   43;
define inline-only constant $CTRY-BAHRAIN               =  973;
define inline-only constant $CTRY-BELARUS               =  375;
define inline-only constant $CTRY-BELGIUM               =   32;
define inline-only constant $CTRY-BELIZE                =  501;
define inline-only constant $CTRY-BOLIVIA               =  591;
define inline-only constant $CTRY-BRAZIL                =   55;
define inline-only constant $CTRY-BRUNEI-DARUSSALAM     =  673;
define inline-only constant $CTRY-BULGARIA              =  359;
define inline-only constant $CTRY-CANADA                =    2;
define inline-only constant $CTRY-CARIBBEAN             =    1;
define inline-only constant $CTRY-CHILE                 =   56;
define inline-only constant $CTRY-COLOMBIA              =   57;
define inline-only constant $CTRY-COSTA-RICA            =  506;
define inline-only constant $CTRY-CROATIA               =  385;
define inline-only constant $CTRY-CZECH                 =  420;
define inline-only constant $CTRY-DENMARK               =   45;
define inline-only constant $CTRY-DOMINICAN-REPUBLIC    =    1;
define inline-only constant $CTRY-ECUADOR               =  593;
define inline-only constant $CTRY-EGYPT                 =   20;
define inline-only constant $CTRY-EL-SALVADOR           =  503;
define inline-only constant $CTRY-ESTONIA               =  372;
define inline-only constant $CTRY-FAEROE-ISLANDS        =  298;
define inline-only constant $CTRY-FINLAND               =  358;
define inline-only constant $CTRY-FRANCE                =   33;
define inline-only constant $CTRY-GERMANY               =   49;
define inline-only constant $CTRY-GREECE                =   30;
define inline-only constant $CTRY-GUATEMALA             =  502;
define inline-only constant $CTRY-HONDURAS              =  504;
define inline-only constant $CTRY-HONG-KONG             =  852;
define inline-only constant $CTRY-HUNGARY               =   36;
define inline-only constant $CTRY-ICELAND               =  354;
define inline-only constant $CTRY-INDIA                 =   91;
define inline-only constant $CTRY-INDONESIA             =   62;
define inline-only constant $CTRY-IRAN                  =  981;
define inline-only constant $CTRY-IRAQ                  =  964;
define inline-only constant $CTRY-IRELAND               =  353;
define inline-only constant $CTRY-ISRAEL                =  972;
define inline-only constant $CTRY-ITALY                 =   39;
define inline-only constant $CTRY-JAMAICA               =    1;
define inline-only constant $CTRY-JAPAN                 =   81;
define inline-only constant $CTRY-JORDAN                =  962;
define inline-only constant $CTRY-KENYA                 =  254;
define inline-only constant $CTRY-KUWAIT                =  965;
define inline-only constant $CTRY-LATVIA                =  371;
define inline-only constant $CTRY-LEBANON               =  961;
define inline-only constant $CTRY-LIBYA                 =  218;
define inline-only constant $CTRY-LIECHTENSTEIN         =   41;
define inline-only constant $CTRY-LITHUANIA             =  370;
define inline-only constant $CTRY-LUXEMBOURG            =  352;
define inline-only constant $CTRY-MACAU                 =  853;
define inline-only constant $CTRY-MACEDONIA             =  389;
define inline-only constant $CTRY-MALAYSIA              =   60;
define inline-only constant $CTRY-MEXICO                =   52;
define inline-only constant $CTRY-MONACO                =   33;
define inline-only constant $CTRY-MOROCCO               =  212;
define inline-only constant $CTRY-NETHERLANDS           =   31;
define inline-only constant $CTRY-NEW-ZEALAND           =   64;
define inline-only constant $CTRY-NICARAGUA             =  505;
define inline-only constant $CTRY-NORWAY                =   47;
define inline-only constant $CTRY-OMAN                  =  968;
define inline-only constant $CTRY-PAKISTAN              =   92;
define inline-only constant $CTRY-PANAMA                =  507;
define inline-only constant $CTRY-PARAGUAY              =  595;
define inline-only constant $CTRY-PERU                  =   51;
define inline-only constant $CTRY-PHILIPPINES           =   63;
define inline-only constant $CTRY-POLAND                =   48;
define inline-only constant $CTRY-PORTUGAL              =  351;
define inline-only constant $CTRY-PRCHINA               =   86;
define inline-only constant $CTRY-PUERTO-RICO           =    1;
define inline-only constant $CTRY-QATAR                 =  974;
define inline-only constant $CTRY-ROMANIA               =   40;
define inline-only constant $CTRY-RUSSIA                =    7;
define inline-only constant $CTRY-SAUDI-ARABIA          =  966;
define inline-only constant $CTRY-SERBIA                =  381;
define inline-only constant $CTRY-SINGAPORE             =   65;
define inline-only constant $CTRY-SLOVAK                =  421;
define inline-only constant $CTRY-SLOVENIA              =  386;
define inline-only constant $CTRY-SOUTH-AFRICA          =   27;
define inline-only constant $CTRY-SOUTH-KOREA           =   82;
define inline-only constant $CTRY-SPAIN                 =   34;
define inline-only constant $CTRY-SWEDEN                =   46;
define inline-only constant $CTRY-SWITZERLAND           =   41;
define inline-only constant $CTRY-SYRIA                 =  963;
define inline-only constant $CTRY-TAIWAN                =  886;
define inline-only constant $CTRY-THAILAND              =   66;
define inline-only constant $CTRY-TRINIDAD-Y-TOBAGO     =    1;
define inline-only constant $CTRY-TUNISIA               =  216;
define inline-only constant $CTRY-TURKEY                =   90;
define inline-only constant $CTRY-UAE                   =  971;
define inline-only constant $CTRY-UKRAINE               =  380;
define inline-only constant $CTRY-UNITED-KINGDOM        =   44;
define inline-only constant $CTRY-UNITED-STATES         =    1;
define inline-only constant $CTRY-URUGUAY               =  598;
define inline-only constant $CTRY-VENEZUELA             =   58;
define inline-only constant $CTRY-VIET-NAM              =   84;
define inline-only constant $CTRY-YEMEN                 =  967;
define inline-only constant $CTRY-ZIMBABWE              =  263;
define inline-only constant $LOCALE-NOUSEROVERRIDE      =
	as(<machine-word>, #x80000000);
define inline-only constant $LOCALE-USE-CP-ACP          =
	as(<machine-word>, #x40000000);
define inline-only constant $LOCALE-RETURN-NUMBER       =
	as(<machine-word>, #x20000000);
define inline-only constant $LOCALE-ILANGUAGE           = #x00000001;
define inline-only constant $LOCALE-SLANGUAGE           = #x00000002;
define inline-only constant $LOCALE-SENGLANGUAGE        = #x00001001;
define inline-only constant $LOCALE-SABBREVLANGNAME     = #x00000003;
define inline-only constant $LOCALE-SNATIVELANGNAME     = #x00000004;
define inline-only constant $LOCALE-ICOUNTRY            = #x00000005;
define inline-only constant $LOCALE-SCOUNTRY            = #x00000006;
define inline-only constant $LOCALE-SENGCOUNTRY         = #x00001002;
define inline-only constant $LOCALE-SABBREVCTRYNAME     = #x00000007;
define inline-only constant $LOCALE-SNATIVECTRYNAME     = #x00000008;
define inline-only constant $LOCALE-IDEFAULTLANGUAGE    = #x00000009;
define inline-only constant $LOCALE-IDEFAULTCOUNTRY     = #x0000000A;
define inline-only constant $LOCALE-IDEFAULTCODEPAGE    = #x0000000B;
define inline-only constant $LOCALE-IDEFAULTANSICODEPAGE =
	#x00001004;
define inline-only constant $LOCALE-IDEFAULTMACCODEPAGE = #x00001011;
define inline-only constant $LOCALE-SLIST               = #x0000000C;
define inline-only constant $LOCALE-IMEASURE            = #x0000000D;
define inline-only constant $LOCALE-SDECIMAL            = #x0000000E;
define inline-only constant $LOCALE-STHOUSAND           = #x0000000F;
define inline-only constant $LOCALE-SGROUPING           = #x00000010;
define inline-only constant $LOCALE-IDIGITS             = #x00000011;
define inline-only constant $LOCALE-ILZERO              = #x00000012;
define inline-only constant $LOCALE-INEGNUMBER          = #x00001010;
define inline-only constant $LOCALE-SNATIVEDIGITS       = #x00000013;
define inline-only constant $LOCALE-SCURRENCY           = #x00000014;
define inline-only constant $LOCALE-SINTLSYMBOL         = #x00000015;
define inline-only constant $LOCALE-SMONDECIMALSEP      = #x00000016;
define inline-only constant $LOCALE-SMONTHOUSANDSEP     = #x00000017;
define inline-only constant $LOCALE-SMONGROUPING        = #x00000018;
define inline-only constant $LOCALE-ICURRDIGITS         = #x00000019;
define inline-only constant $LOCALE-IINTLCURRDIGITS     = #x0000001A;
define inline-only constant $LOCALE-ICURRENCY           = #x0000001B;
define inline-only constant $LOCALE-INEGCURR            = #x0000001C;
define inline-only constant $LOCALE-SDATE               = #x0000001D;
define inline-only constant $LOCALE-STIME               = #x0000001E;
define inline-only constant $LOCALE-SSHORTDATE          = #x0000001F;
define inline-only constant $LOCALE-SLONGDATE           = #x00000020;
define inline-only constant $LOCALE-STIMEFORMAT         = #x00001003;
define inline-only constant $LOCALE-IDATE               = #x00000021;
define inline-only constant $LOCALE-ILDATE              = #x00000022;
define inline-only constant $LOCALE-ITIME               = #x00000023;
define inline-only constant $LOCALE-ITIMEMARKPOSN       = #x00001005;
define inline-only constant $LOCALE-ICENTURY            = #x00000024;
define inline-only constant $LOCALE-ITLZERO             = #x00000025;
define inline-only constant $LOCALE-IDAYLZERO           = #x00000026;
define inline-only constant $LOCALE-IMONLZERO           = #x00000027;
define inline-only constant $LOCALE-S1159               = #x00000028;
define inline-only constant $LOCALE-S2359               = #x00000029;
define inline-only constant $LOCALE-ICALENDARTYPE       = #x00001009;
define inline-only constant $LOCALE-IOPTIONALCALENDAR   = #x0000100B;
define inline-only constant $LOCALE-IFIRSTDAYOFWEEK     = #x0000100C;
define inline-only constant $LOCALE-IFIRSTWEEKOFYEAR    = #x0000100D;
define inline-only constant $LOCALE-SDAYNAME1           = #x0000002A;
define inline-only constant $LOCALE-SDAYNAME2           = #x0000002B;
define inline-only constant $LOCALE-SDAYNAME3           = #x0000002C;
define inline-only constant $LOCALE-SDAYNAME4           = #x0000002D;
define inline-only constant $LOCALE-SDAYNAME5           = #x0000002E;
define inline-only constant $LOCALE-SDAYNAME6           = #x0000002F;
define inline-only constant $LOCALE-SDAYNAME7           = #x00000030;
define inline-only constant $LOCALE-SABBREVDAYNAME1     = #x00000031;
define inline-only constant $LOCALE-SABBREVDAYNAME2     = #x00000032;
define inline-only constant $LOCALE-SABBREVDAYNAME3     = #x00000033;
define inline-only constant $LOCALE-SABBREVDAYNAME4     = #x00000034;
define inline-only constant $LOCALE-SABBREVDAYNAME5     = #x00000035;
define inline-only constant $LOCALE-SABBREVDAYNAME6     = #x00000036;
define inline-only constant $LOCALE-SABBREVDAYNAME7     = #x00000037;
define inline-only constant $LOCALE-SMONTHNAME1         = #x00000038;
define inline-only constant $LOCALE-SMONTHNAME2         = #x00000039;
define inline-only constant $LOCALE-SMONTHNAME3         = #x0000003A;
define inline-only constant $LOCALE-SMONTHNAME4         = #x0000003B;
define inline-only constant $LOCALE-SMONTHNAME5         = #x0000003C;
define inline-only constant $LOCALE-SMONTHNAME6         = #x0000003D;
define inline-only constant $LOCALE-SMONTHNAME7         = #x0000003E;
define inline-only constant $LOCALE-SMONTHNAME8         = #x0000003F;
define inline-only constant $LOCALE-SMONTHNAME9         = #x00000040;
define inline-only constant $LOCALE-SMONTHNAME10        = #x00000041;
define inline-only constant $LOCALE-SMONTHNAME11        = #x00000042;
define inline-only constant $LOCALE-SMONTHNAME12        = #x00000043;
define inline-only constant $LOCALE-SMONTHNAME13        = #x0000100E;
define inline-only constant $LOCALE-SABBREVMONTHNAME1   = #x00000044;
define inline-only constant $LOCALE-SABBREVMONTHNAME2   = #x00000045;
define inline-only constant $LOCALE-SABBREVMONTHNAME3   = #x00000046;
define inline-only constant $LOCALE-SABBREVMONTHNAME4   = #x00000047;
define inline-only constant $LOCALE-SABBREVMONTHNAME5   = #x00000048;
define inline-only constant $LOCALE-SABBREVMONTHNAME6   = #x00000049;
define inline-only constant $LOCALE-SABBREVMONTHNAME7   = #x0000004A;
define inline-only constant $LOCALE-SABBREVMONTHNAME8   = #x0000004B;
define inline-only constant $LOCALE-SABBREVMONTHNAME9   = #x0000004C;
define inline-only constant $LOCALE-SABBREVMONTHNAME10  = #x0000004D;
define inline-only constant $LOCALE-SABBREVMONTHNAME11  = #x0000004E;
define inline-only constant $LOCALE-SABBREVMONTHNAME12  = #x0000004F;
define inline-only constant $LOCALE-SABBREVMONTHNAME13  = #x0000100F;
define inline-only constant $LOCALE-SPOSITIVESIGN       = #x00000050;
define inline-only constant $LOCALE-SNEGATIVESIGN       = #x00000051;
define inline-only constant $LOCALE-IPOSSIGNPOSN        = #x00000052;
define inline-only constant $LOCALE-INEGSIGNPOSN        = #x00000053;
define inline-only constant $LOCALE-IPOSSYMPRECEDES     = #x00000054;
define inline-only constant $LOCALE-IPOSSEPBYSPACE      = #x00000055;
define inline-only constant $LOCALE-INEGSYMPRECEDES     = #x00000056;
define inline-only constant $LOCALE-INEGSEPBYSPACE      = #x00000057;
define inline-only constant $LOCALE-FONTSIGNATURE       = #x00000058;
define inline-only constant $LOCALE-SISO639LANGNAME     = #x00000059;
define inline-only constant $LOCALE-SISO3166CTRYNAME    = #x0000005A;
define inline-only constant $TIME-NOMINUTESORSECONDS    = #x00000001;
define inline-only constant $TIME-NOSECONDS             = #x00000002;
define inline-only constant $TIME-NOTIMEMARKER          = #x00000004;
define inline-only constant $TIME-FORCE24HOURFORMAT     = #x00000008;
define inline-only constant $DATE-SHORTDATE             = #x00000001;
define inline-only constant $DATE-LONGDATE              = #x00000002;
define inline-only constant $DATE-USE-ALT-CALENDAR      = #x00000004;
define inline-only constant $CAL-ICALINTVALUE           = #x00000001;
define inline-only constant $CAL-SCALNAME               = #x00000002;
define inline-only constant $CAL-IYEAROFFSETRANGE       = #x00000003;
define inline-only constant $CAL-SERASTRING             = #x00000004;
define inline-only constant $CAL-SSHORTDATE             = #x00000005;
define inline-only constant $CAL-SLONGDATE              = #x00000006;
define inline-only constant $CAL-SDAYNAME1              = #x00000007;
define inline-only constant $CAL-SDAYNAME2              = #x00000008;
define inline-only constant $CAL-SDAYNAME3              = #x00000009;
define inline-only constant $CAL-SDAYNAME4              = #x0000000a;
define inline-only constant $CAL-SDAYNAME5              = #x0000000b;
define inline-only constant $CAL-SDAYNAME6              = #x0000000c;
define inline-only constant $CAL-SDAYNAME7              = #x0000000d;
define inline-only constant $CAL-SABBREVDAYNAME1        = #x0000000e;
define inline-only constant $CAL-SABBREVDAYNAME2        = #x0000000f;
define inline-only constant $CAL-SABBREVDAYNAME3        = #x00000010;
define inline-only constant $CAL-SABBREVDAYNAME4        = #x00000011;
define inline-only constant $CAL-SABBREVDAYNAME5        = #x00000012;
define inline-only constant $CAL-SABBREVDAYNAME6        = #x00000013;
define inline-only constant $CAL-SABBREVDAYNAME7        = #x00000014;
define inline-only constant $CAL-SMONTHNAME1            = #x00000015;
define inline-only constant $CAL-SMONTHNAME2            = #x00000016;
define inline-only constant $CAL-SMONTHNAME3            = #x00000017;
define inline-only constant $CAL-SMONTHNAME4            = #x00000018;
define inline-only constant $CAL-SMONTHNAME5            = #x00000019;
define inline-only constant $CAL-SMONTHNAME6            = #x0000001a;
define inline-only constant $CAL-SMONTHNAME7            = #x0000001b;
define inline-only constant $CAL-SMONTHNAME8            = #x0000001c;
define inline-only constant $CAL-SMONTHNAME9            = #x0000001d;
define inline-only constant $CAL-SMONTHNAME10           = #x0000001e;
define inline-only constant $CAL-SMONTHNAME11           = #x0000001f;
define inline-only constant $CAL-SMONTHNAME12           = #x00000020;
define inline-only constant $CAL-SMONTHNAME13           = #x00000021;
define inline-only constant $CAL-SABBREVMONTHNAME1      = #x00000022;
define inline-only constant $CAL-SABBREVMONTHNAME2      = #x00000023;
define inline-only constant $CAL-SABBREVMONTHNAME3      = #x00000024;
define inline-only constant $CAL-SABBREVMONTHNAME4      = #x00000025;
define inline-only constant $CAL-SABBREVMONTHNAME5      = #x00000026;
define inline-only constant $CAL-SABBREVMONTHNAME6      = #x00000027;
define inline-only constant $CAL-SABBREVMONTHNAME7      = #x00000028;
define inline-only constant $CAL-SABBREVMONTHNAME8      = #x00000029;
define inline-only constant $CAL-SABBREVMONTHNAME9      = #x0000002a;
define inline-only constant $CAL-SABBREVMONTHNAME10     = #x0000002b;
define inline-only constant $CAL-SABBREVMONTHNAME11     = #x0000002c;
define inline-only constant $CAL-SABBREVMONTHNAME12     = #x0000002d;
define inline-only constant $CAL-SABBREVMONTHNAME13     = #x0000002e;
define inline-only constant $ENUM-ALL-CALENDARS         = $FFFFFFFF;
define inline-only constant $CAL-GREGORIAN              =    1;
define inline-only constant $CAL-GREGORIAN-US           =    2;
define inline-only constant $CAL-JAPAN                  =    3;
define inline-only constant $CAL-TAIWAN                 =    4;
define inline-only constant $CAL-KOREA                  =    5;
define inline-only constant $CAL-HIJRI                  =    6;
define inline-only constant $CAL-THAI                   =    7;
define inline-only constant $CAL-HEBREW                 =    8;
define inline-only constant $CAL-GREGORIAN-ME-FRENCH    =    9;
define inline-only constant $CAL-GREGORIAN-ARABIC       =   10;
define inline-only constant $CAL-GREGORIAN-XLIT-ENGLISH =   11;
define inline-only constant $CAL-GREGORIAN-XLIT-FRENCH  =   12;
define inline constant <CALTYPE> = <DWORD>;
define inline constant <CALID> = <DWORD>;

define C-struct <CPINFO>
  sealed inline-only slot MaxCharSize-value :: <UINT>;
  sealed inline-only array slot DefaultChar-array :: <C-BYTE>,
	length: $MAX-DEFAULTCHAR, address-getter: DefaultChar-value;
  sealed inline-only array slot LeadByte-array :: <C-BYTE>,
	length: $MAX-LEADBYTES, address-getter: LeadByte-value;
  pointer-type-name: <LPCPINFO>;
  c-name: "struct _cpinfo";
end C-struct <CPINFO>;

define C-struct <CPINFOEXA>
  sealed inline-only slot MaxCharSize-value :: <UINT>;
  sealed inline-only array slot DefaultChar-array :: <C-BYTE>,
	length: $MAX-DEFAULTCHAR, address-getter: DefaultChar-value;
  sealed inline-only array slot LeadByte-array :: <C-BYTE>,
	length: $MAX-LEADBYTES, address-getter: LeadByte-value;
  sealed inline-only slot UnicodeDefaultChar-value :: <WCHAR>;
  sealed inline-only slot CodePage-value :: <UINT>;
  sealed inline-only array slot CodePageName-array :: <CHAR>,
	length: $MAX-PATH, address-getter: CodePageName-value;
  pointer-type-name: <LPCPINFOEXA>;
  c-name: "struct _cpinfoexA";
end C-struct <CPINFOEXA>;
define inline constant <CPINFOEX> = <CPINFOEXA>;
define inline constant <LPCPINFOEX> = <LPCPINFOEXA>;

define C-struct <NUMBERFMTA>
  sealed inline-only slot NumDigits-value :: <UINT>;
  sealed inline-only slot LeadingZero-value :: <UINT>;
  sealed inline-only slot Grouping-value :: <UINT>;
  sealed inline-only slot lpDecimalSep-value :: <LPSTR>;
  sealed inline-only slot lpThousandSep-value :: <LPSTR>;
  sealed inline-only slot NegativeOrder-value :: <UINT>;
  pointer-type-name: <LPNUMBERFMTA>;
  c-name: "struct _numberfmtA";
end C-struct <NUMBERFMTA>;
define inline constant <NUMBERFMT> = <NUMBERFMTA>;
define inline constant <LPNUMBERFMT> = <LPNUMBERFMTA>;

define C-struct <CURRENCYFMTA>
  sealed inline-only slot NumDigits-value :: <UINT>;
  sealed inline-only slot LeadingZero-value :: <UINT>;
  sealed inline-only slot Grouping-value :: <UINT>;
  sealed inline-only slot lpDecimalSep-value :: <LPSTR>;
  sealed inline-only slot lpThousandSep-value :: <LPSTR>;
  sealed inline-only slot NegativeOrder-value :: <UINT>;
  sealed inline-only slot PositiveOrder-value :: <UINT>;
  sealed inline-only slot lpCurrencySymbol-value :: <LPSTR>;
  pointer-type-name: <LPCURRENCYFMTA>;
  c-name: "struct _currencyfmtA";
end C-struct <CURRENCYFMTA>;
define inline constant <CURRENCYFMT> = <CURRENCYFMTA>;
define inline constant <LPCURRENCYFMT> = <LPCURRENCYFMTA>;

define C-subtype <LOCALE-ENUMPROCA> ( <C-function-pointer> ) end;
define macro <LOCALE-ENUMPROC>-callback-wrapper
 { <LOCALE-ENUMPROC>-callback-wrapper(?new:name,?old:name) } =>
 { define C-callable-wrapper ?new of ?old
  parameter lpstr1     :: <LPSTR>;
  result value :: <BOOL>;
  c-modifiers: "__stdcall";
 end C-callable-wrapper }
end;

define C-subtype <CODEPAGE-ENUMPROCA> ( <C-function-pointer> ) end;
define macro <CODEPAGE-ENUMPROC>-callback-wrapper
 { <CODEPAGE-ENUMPROC>-callback-wrapper(?new:name,?old:name) } =>
 { define C-callable-wrapper ?new of ?old
  parameter lpstr1     :: <LPSTR>;
  result value :: <BOOL>;
  c-modifiers: "__stdcall";
 end C-callable-wrapper }
end;

define C-subtype <DATEFMT-ENUMPROCA> ( <C-function-pointer> ) end;
define macro <DATEFMT-ENUMPROC>-callback-wrapper
 { <DATEFMT-ENUMPROC>-callback-wrapper(?new:name,?old:name) } =>
 { define C-callable-wrapper ?new of ?old
  parameter lpstr1     :: <LPSTR>;
  result value :: <BOOL>;
  c-modifiers: "__stdcall";
 end C-callable-wrapper }
end;

define C-subtype <DATEFMT-ENUMPROCEXA> ( <C-function-pointer> ) end;
define macro <DATEFMT-ENUMPROCEX>-callback-wrapper
 { <DATEFMT-ENUMPROCEX>-callback-wrapper(?new:name,?old:name) } =>
 { define C-callable-wrapper ?new of ?old
  parameter lpstr1     :: <LPSTR>;
  parameter calid2     :: <CALID>;
  result value :: <BOOL>;
  c-modifiers: "__stdcall";
 end C-callable-wrapper }
end;

define C-subtype <TIMEFMT-ENUMPROCA> ( <C-function-pointer> ) end;
define macro <TIMEFMT-ENUMPROC>-callback-wrapper
 { <TIMEFMT-ENUMPROC>-callback-wrapper(?new:name,?old:name) } =>
 { define C-callable-wrapper ?new of ?old
  parameter lpstr1     :: <LPSTR>;
  result value :: <BOOL>;
  c-modifiers: "__stdcall";
 end C-callable-wrapper }
end;

define C-subtype <CALINFO-ENUMPROCA> ( <C-function-pointer> ) end;
define macro <CALINFO-ENUMPROC>-callback-wrapper
 { <CALINFO-ENUMPROC>-callback-wrapper(?new:name,?old:name) } =>
 { define C-callable-wrapper ?new of ?old
  parameter lpstr1     :: <LPSTR>;
  result value :: <BOOL>;
  c-modifiers: "__stdcall";
 end C-callable-wrapper }
end;

define C-subtype <CALINFO-ENUMPROCEXA> ( <C-function-pointer> ) end;
define macro <CALINFO-ENUMPROCEX>-callback-wrapper
 { <CALINFO-ENUMPROCEX>-callback-wrapper(?new:name,?old:name) } =>
 { define C-callable-wrapper ?new of ?old
  parameter lpstr1     :: <LPSTR>;
  parameter calid2     :: <CALID>;
  result value :: <BOOL>;
  c-modifiers: "__stdcall";
 end C-callable-wrapper }
end;
define inline-only constant <LOCALE-ENUMPROC> = <LOCALE-ENUMPROCA>;
define inline-only constant <CODEPAGE-ENUMPROC> = <CODEPAGE-ENUMPROCA>;
define inline-only constant <DATEFMT-ENUMPROC> = <DATEFMT-ENUMPROCA>;
define inline-only constant <DATEFMT-ENUMPROCEX> = <DATEFMT-ENUMPROCEXA>;
define inline-only constant <TIMEFMT-ENUMPROC> = <TIMEFMT-ENUMPROCA>;
define inline-only constant <CALINFO-ENUMPROC> = <CALINFO-ENUMPROCA>;
define inline-only constant <CALINFO-ENUMPROCEX> = <CALINFO-ENUMPROCEXA>;

define inline-only C-function IsValidCodePage
  parameter CodePage   :: <UINT>;
  result value :: <BOOL>;
  c-name: "IsValidCodePage", c-modifiers: "__stdcall";
end;

define inline-only C-function GetACP
  result value :: <UINT>;
  c-name: "GetACP", c-modifiers: "__stdcall";
end;

define inline-only C-function GetOEMCP
  result value :: <UINT>;
  c-name: "GetOEMCP", c-modifiers: "__stdcall";
end;

define inline-only C-function GetCPInfo
  parameter CodePage   :: <UINT>;
  parameter lpCPInfo   :: <LPCPINFO>;
  result value :: <BOOL>;
  c-name: "GetCPInfo", c-modifiers: "__stdcall";
end;

define inline-only C-function GetCPInfoEx
  parameter CodePage   :: <UINT>;
  parameter dwFlags    :: <DWORD>;
  parameter lpCPInfoEx :: <LPCPINFOEXA>;
  result value :: <BOOL>;
  c-name: "GetCPInfoExA", c-modifiers: "__stdcall";
end;

define inline-only C-function IsDBCSLeadByte
  parameter TestChar   :: <C-BYTE>;
  result value :: <BOOL>;
  c-name: "IsDBCSLeadByte", c-modifiers: "__stdcall";
end;

define inline-only C-function IsDBCSLeadByteEx
  parameter CodePage   :: <UINT>;
  parameter TestChar   :: <C-BYTE>;
  result value :: <BOOL>;
  c-name: "IsDBCSLeadByteEx", c-modifiers: "__stdcall";
end;

define inline-only C-function MultiByteToWideChar
  parameter CodePage   :: <UINT>;
  parameter dwFlags    :: <DWORD>;
  parameter lpMultiByteStr :: <LPCSTR>;
  parameter cchMultiByte :: <C-int>;
  parameter lpWideCharStr :: <LPWSTR>;
  parameter cchWideChar :: <C-int>;
  result value :: <C-int>;
  c-name: "MultiByteToWideChar", c-modifiers: "__stdcall";
end;

define inline-only C-function WideCharToMultiByte
  parameter CodePage   :: <UINT>;
  parameter dwFlags    :: <DWORD>;
  parameter lpWideCharStr :: <LPCWSTR>;
  parameter cchWideChar :: <C-int>;
  parameter lpMultiByteStr :: <LPSTR>;
  parameter cchMultiByte :: <C-int>;
  parameter lpDefaultChar :: <LPCSTR>;
  output parameter lpUsedDefaultChar :: <LPBOOL>;
  result value :: <C-int>;
  c-name: "WideCharToMultiByte", c-modifiers: "__stdcall";
end;

define inline-only C-function CompareString
  parameter Locale     :: <LCID>;
  parameter dwCmpFlags :: <DWORD>;
  parameter lpString1  :: <LPCSTR>;
  parameter cchCount1  :: <C-int>;
  parameter lpString2  :: <LPCSTR>;
  parameter cchCount2  :: <C-int>;
  result value :: <C-int>;
  c-name: "CompareStringA", c-modifiers: "__stdcall";
end;

define inline-only C-function LCMapString
  parameter Locale     :: <LCID>;
  parameter dwMapFlags :: <DWORD>;
  parameter lpSrcStr   :: <LPCSTR>;
  parameter cchSrc     :: <C-int>;
  parameter lpDestStr  :: <LPSTR>;
  parameter cchDest    :: <C-int>;
  result value :: <C-int>;
  c-name: "LCMapStringA", c-modifiers: "__stdcall";
end;

define inline-only C-function GetLocaleInfo
  parameter Locale     :: <LCID>;
  parameter LCType     :: <LCTYPE>;
  parameter lpLCData   :: <LPSTR>;
  parameter cchData    :: <C-int>;
  result value :: <C-int>;
  c-name: "GetLocaleInfoA", c-modifiers: "__stdcall";
end;

define inline-only C-function SetLocaleInfo
  parameter Locale     :: <LCID>;
  parameter LCType     :: <LCTYPE>;
  parameter lpLCData   :: <LPCSTR>;
  result value :: <BOOL>;
  c-name: "SetLocaleInfoA", c-modifiers: "__stdcall";
end;

define inline-only C-function GetTimeFormat
  parameter Locale     :: <LCID>;
  parameter dwFlags    :: <DWORD>;
  parameter lpTime     ::  /* const */ <LPSYSTEMTIME>;
  parameter lpFormat   :: <LPCSTR>;
  parameter lpTimeStr  :: <LPSTR>;
  parameter cchTime    :: <C-int>;
  result value :: <C-int>;
  c-name: "GetTimeFormatA", c-modifiers: "__stdcall";
end;

define inline-only C-function GetDateFormat
  parameter Locale     :: <LCID>;
  parameter dwFlags    :: <DWORD>;
  parameter lpDate     ::  /* const */ <LPSYSTEMTIME>;
  parameter lpFormat   :: <LPCSTR>;
  parameter lpDateStr  :: <LPSTR>;
  parameter cchDate    :: <C-int>;
  result value :: <C-int>;
  c-name: "GetDateFormatA", c-modifiers: "__stdcall";
end;

define inline-only C-function GetNumberFormat
  parameter Locale     :: <LCID>;
  parameter dwFlags    :: <DWORD>;
  parameter lpValue    :: <LPCSTR>;
  parameter lpFormat   ::  /* const */ <LPNUMBERFMTA>;
  parameter lpNumberStr :: <LPSTR>;
  parameter cchNumber  :: <C-int>;
  result value :: <C-int>;
  c-name: "GetNumberFormatA", c-modifiers: "__stdcall";
end;

define inline-only C-function GetCurrencyFormat
  parameter Locale     :: <LCID>;
  parameter dwFlags    :: <DWORD>;
  parameter lpValue    :: <LPCSTR>;
  parameter lpFormat   ::  /* const */ <LPCURRENCYFMTA>;
  parameter lpCurrencyStr :: <LPSTR>;
  parameter cchCurrency :: <C-int>;
  result value :: <C-int>;
  c-name: "GetCurrencyFormatA", c-modifiers: "__stdcall";
end;

define inline-only C-function EnumCalendarInfo
  parameter lpCalInfoEnumProc :: <CALINFO-ENUMPROCA>;
  parameter Locale     :: <LCID>;
  parameter Calendar   :: <CALID>;
  parameter CalType    :: <CALTYPE>;
  result value :: <BOOL>;
  c-name: "EnumCalendarInfoA", c-modifiers: "__stdcall";
end;

define inline-only C-function EnumTimeFormats
  parameter lpTimeFmtEnumProc :: <TIMEFMT-ENUMPROCA>;
  parameter Locale     :: <LCID>;
  parameter dwFlags    :: <DWORD>;
  result value :: <BOOL>;
  c-name: "EnumTimeFormatsA", c-modifiers: "__stdcall";
end;

define inline-only C-function EnumDateFormats
  parameter lpDateFmtEnumProc :: <DATEFMT-ENUMPROCA>;
  parameter Locale     :: <LCID>;
  parameter dwFlags    :: <DWORD>;
  result value :: <BOOL>;
  c-name: "EnumDateFormatsA", c-modifiers: "__stdcall";
end;

define inline-only C-function IsValidLocale
  parameter Locale     :: <LCID>;
  parameter dwFlags    :: <DWORD>;
  result value :: <BOOL>;
  c-name: "IsValidLocale", c-modifiers: "__stdcall";
end;

define inline-only C-function ConvertDefaultLocale
  parameter Locale     :: <LCID>;
  result value :: <LCID>;
  c-name: "ConvertDefaultLocale", c-modifiers: "__stdcall";
end;

define inline-only C-function GetSystemDefaultLangID
  result value :: <LANGID>;
  c-name: "GetSystemDefaultLangID", c-modifiers: "__stdcall";
end;

define inline-only C-function GetUserDefaultLangID
  result value :: <LANGID>;
  c-name: "GetUserDefaultLangID", c-modifiers: "__stdcall";
end;

define inline-only C-function GetSystemDefaultLCID
  result value :: <LCID>;
  c-name: "GetSystemDefaultLCID", c-modifiers: "__stdcall";
end;

define inline-only C-function GetUserDefaultLCID
  result value :: <LCID>;
  c-name: "GetUserDefaultLCID", c-modifiers: "__stdcall";
end;

define inline-only C-function GetStringTypeEx
  parameter Locale     :: <LCID>;
  parameter dwInfoType :: <DWORD>;
  parameter lpSrcStr   :: <LPCSTR>;
  parameter cchSrc     :: <C-int>;
  parameter lpCharType :: <LPWORD>;
  result value :: <BOOL>;
  c-name: "GetStringTypeExA", c-modifiers: "__stdcall";
end;

define inline-only C-function FoldString
  parameter dwMapFlags :: <DWORD>;
  parameter lpSrcStr   :: <LPCSTR>;
  parameter cchSrc     :: <C-int>;
  parameter lpDestStr  :: <LPSTR>;
  parameter cchDest    :: <C-int>;
  result value :: <C-int>;
  c-name: "FoldStringA", c-modifiers: "__stdcall";
end;

define inline-only C-function EnumSystemLocales
  parameter lpLocaleEnumProc :: <LOCALE-ENUMPROCA>;
  parameter dwFlags    :: <DWORD>;
  result value :: <BOOL>;
  c-name: "EnumSystemLocalesA", c-modifiers: "__stdcall";
end;

define inline-only C-function EnumSystemCodePages
  parameter lpCodePageEnumProc :: <CODEPAGE-ENUMPROCA>;
  parameter dwFlags    :: <DWORD>;
  result value :: <BOOL>;
  c-name: "EnumSystemCodePagesA", c-modifiers: "__stdcall";
end;

define sealed domain make (singleton(<LPCPINFO>));
define sealed domain initialize (<LPCPINFO>);
define sealed domain make (singleton(<LPCPINFOEXA>));
define sealed domain initialize (<LPCPINFOEXA>);
define sealed domain make (singleton(<LPNUMBERFMTA>));
define sealed domain initialize (<LPNUMBERFMTA>);
define sealed domain make (singleton(<LPCURRENCYFMTA>));
define sealed domain initialize (<LPCURRENCYFMTA>);
