--- mstools/h/winnls.h 2018/08/09 18:20:01 1.1.1.1 +++ mstools/h/winnls.h 2018/08/09 18:21:06 1.1.1.3 @@ -32,9 +32,8 @@ Author: /* * String Length Maximums. */ -#define MAX_LANG_LEN 255 /* maximum language length */ -#define MAX_CTRY_LEN 255 /* maximum country length */ -#define MAX_CP_LEN 255 /* maximum codepage length */ +#define MAX_LEADBYTES 12 /* 5 ranges, 2 bytes ea., 0 term. */ +#define MAX_DEFAULTCHAR 2 /* single or double byte */ /* @@ -42,10 +41,14 @@ Author: */ #define MB_PRECOMPOSED 0x00000001 /* use precomposed chars */ #define MB_COMPOSITE 0x00000002 /* use composite chars */ +#define MB_USEGLYPHCHARS 0x00000004 /* use glyph chars, not ctrl chars */ +#define WC_DEFAULTCHECK 0x00000100 /* check for default char */ +#define WC_COMPOSITECHECK 0x00000200 /* convert composite to precomposed */ #define WC_DISCARDNS 0x00000010 /* discard non-spacing chars */ -#define WC_SEPCHARS 0x00000020 /* generate seperate chars */ -#define WC_REPLACEBASE 0x00000040 /* replace base char w/ default */ +#define WC_SEPCHARS 0x00000020 /* generate separate chars */ +#define WC_DEFAULTCHAR 0x00000040 /* replace w/ default char */ + /* @@ -53,83 +56,82 @@ Author: */ #define CT_CTYPE1 0x00000001 /* ctype 1 information */ #define CT_CTYPE2 0x00000002 /* ctype 2 information */ +#define CT_CTYPE3 0x00000004 /* ctype 3 information */ /* * CType 1 Flag Bits. */ -#define C1_UPPERCASE 0x0001 /* upper case */ -#define C1_LOWERCASE 0x0002 /* lower case */ -#define C1_DIGIT 0x0004 /* 0-9 */ -#define C1_WHITESPACE 0x0008 /* tab,CR,NL,vertical tab,form feed */ -#define C1_PUNCTUATION 0x0010 /* punctuation character */ -#define C1_CONTROLCHAR 0x0020 /* control character */ -#define C1_ALPHA 0x0100 /* A-Z, a-z */ -#define C1_NONSPACING 0x0200 /* nonspacing character */ -#define C1_SYMBOL 0x0400 /* ! @ # $ % ^ & * ( ) etc. */ -#define C1_ISNUMERIC 0x0800 /* numeric value */ +#define C1_UPPER 0x0001 /* upper case */ +#define C1_LOWER 0x0002 /* lower case */ +#define C1_DIGIT 0x0004 /* decimal digits */ +#define C1_SPACE 0x0008 /* spacing characters */ +#define C1_PUNCT 0x0010 /* punctuation characters */ +#define C1_CNTRL 0x0020 /* control characters */ +#define C1_BLANK 0x0040 /* blank characters */ +#define C1_XDIGIT 0x0080 /* other digits */ +#define C1_ALPHA 0x0100 /* any letter */ /* * CType 2 Flag Bits. */ -#define C2_LEFTTORIGHT 0x0001 /* left to right */ -#define C2_RIGHTTOLEFT 0x0002 /* right to left */ +#define C2_LEFTTORIGHT 0x1 /* left to right */ +#define C2_RIGHTTOLEFT 0x2 /* right to left */ + +#define C2_EUROPENUMBER 0x3 /* European number, digit */ +#define C2_EUROPESEPARATOR 0x4 /* European numeric separator */ +#define C2_EUROPETERMINATOR 0x5 /* European numeric terminator */ +#define C2_ARABICNUMBER 0x6 /* Arabic number */ +#define C2_COMMONSEPARATOR 0x7 /* common numeric separator */ -#define C2_EUROPENUMBER 0x0004 /* European number, digit */ -#define C2_EUROPESEPERATOR 0x0008 /* European numeric seperator */ -#define C2_EUROPETERMINATOR 0x0010 /* European numeric terminator */ -#define C2_ARABICNUMBER 0x0020 /* Arabic number */ -#define C2_COMMONSEPERATOR 0x0040 /* common numeric seperator */ - -#define C2_BLOCKSEPERATOR 0x0080 /* block seperator paragraph */ -#define C2_SEGMENTSEPERATOR 0x0100 /* segment seperator */ -#define C2_WHITESPACE 0x0200 /* white space */ -#define C2_OTHERNEUTRAL 0x0400 /* other neutrals */ +#define C2_BLOCKSEPARATOR 0x8 /* block separator */ +#define C2_SEGMENTSEPARATOR 0x9 /* segment separator */ +#define C2_WHITESPACE 0xA /* white space */ +#define C2_OTHERNEUTRAL 0xB /* other neutrals */ +#define C2_NOTAPPLICABLE 0x0 /* no implicit directionality */ /* - * String Flags. + * CType 3 Flag Bits. */ -#define STR_IGNORECASE 0x00000001 /* ignore case */ -#define STR_IGNORENONSPACE 0x00000002 /* ignore nonspacing chars */ -#define STR_IGNORESYMBOLS 0x00000004 /* ignore symbols */ +#define C3_NONSPACING 0x0001 /* nonspacing character */ +#define C3_DIACRITIC 0x0002 /* diacritic mark */ +#define C3_VOWELMARK 0x0004 /* vowel mark */ +#define C3_SYMBOL 0x0008 /* symbols */ + +#define C3_NOTAPPLICABLE 0x0 /* ctype 3 is not applicable */ + /* - * Mapping Flags. + * String Flags. */ -#define MAP_UPPERCASE 0x00000010 /* upper case letters */ -#define MAP_LOWERCASE 0x00000020 /* lower case letters */ -#define MAP_CTYPE1 0x00000040 /* ctype 1 info */ -#define MAP_CTYPE2 0x00000080 /* ctype 2 info */ +#define NORM_IGNORECASE 0x00000001 /* ignore case */ +#define NORM_IGNORENONSPACE 0x00000002 /* ignore nonspacing chars */ +#define NORM_IGNORESYMBOLS 0x00000004 /* ignore symbols */ -#define MAP_COLLATE 0x00000100 /* collation (sort) table */ -#define MAP_SORTKEY 0x00000200 /* sort key */ -#define MAP_UCTOMB 0x00000400 /* UC to MB table */ -#define MAP_MBTOUC 0x00000800 /* MB to UC table */ - -#define MAP_FOLDCZONE 0x00001000 /* fold compatibility zone chars */ -#define MAP_PRECOMPOSED 0x00002000 /* accented to precomposed chars */ -#define MAP_COMPOSITE 0x00004000 /* accented to composite chars */ -#define MAP_ASCIIDIGITS 0x00008000 /* all digits to ASCII 0-9 */ +/* + * Locale Independent Mapping Flags. + */ +#define MAP_FOLDCZONE 0x00000010 /* fold compatibility zone chars */ +#define MAP_PRECOMPOSED 0x00000020 /* accented to precomposed chars */ +#define MAP_COMPOSITE 0x00000040 /* accented to composite chars */ +#define MAP_FOLDDIGITS 0x00000080 /* all digits to ASCII 0-9 */ /* - * Locale Information Flags. + * Locale Dependent Mapping Flags. */ -#define LI_CPDATA 0x00000001 /* code page data */ -#define LI_CTRYDATA 0x00000002 /* country data */ -#define LI_LANGDATA 0x00000004 /* language data */ -#define LI_LCMONETARY 0x00000008 /* monetary conventions */ -#define LI_LCNUMERIC 0x00000010 /* numeric conventions */ -#define LI_DATETIMEFMT 0x00000020 /* date/time formats */ -#define LI_DATETIMESTR 0x00000040 /* date/time strings */ +#define LCMAP_LOWERCASE 0x00000100 /* lower case letters */ +#define LCMAP_UPPERCASE 0x00000200 /* upper case letters */ +#define LCMAP_SORTKEY 0x00000400 /* WC sort key (normalize) */ +#define LCMAP_BYTEREV 0x00000800 /* byte reversal */ /* - * Qualified Locale Flags. + * Code Page Default Values. */ -#define QF_LCID 0x00000001 /* LCID structure */ -#define QF_STRINGS 0x00000002 /* LCSTRINGS structure */ +#define CP_ACP 0 /* default to ANSI code page */ +#define CP_OEMCP 1 /* default to OEM code page */ /* @@ -190,8 +192,9 @@ Author: * language ID that sublanguage ID can be combined with to form a * valid language ID. */ -#define SUBLANG_DEFAULT 0x01 /* language/process default */ #define SUBLANG_NEUTRAL 0x00 /* language neutral */ +#define SUBLANG_DEFAULT 0x01 /* user default */ +#define SUBLANG_SYS_DEFAULT 0x02 /* system default */ #define SUBLANG_CHINESE_SIMPLIFIED 0x02 /* Chinese (Simplified) */ #define SUBLANG_CHINESE_TRADITIONAL 0x01 /* Chinese (Traditional) */ @@ -201,12 +204,14 @@ Author: #define SUBLANG_ENGLISH_UK 0x02 /* English (UK) */ #define SUBLANG_ENGLISH_AUS 0x03 /* English (Australian) */ #define SUBLANG_ENGLISH_CAN 0x04 /* English (Canadian) */ +#define SUBLANG_ENGLISH_NZ 0x05 /* English (New Zealand) */ #define SUBLANG_FRENCH 0x01 /* French */ #define SUBLANG_FRENCH_BELGIAN 0x02 /* French (Belgian) */ #define SUBLANG_FRENCH_CANADIAN 0x03 /* French (Canadian) */ #define SUBLANG_FRENCH_SWISS 0x04 /* French (Swiss) */ #define SUBLANG_GERMAN 0x01 /* German */ #define SUBLANG_GERMAN_SWISS 0x02 /* German (Swiss) */ +#define SUBLANG_GERMAN_AUSTRIAN 0x03 /* German (Austrian) */ #define SUBLANG_ITALIAN 0x01 /* Italian */ #define SUBLANG_ITALIAN_SWISS 0x02 /* Italian (Swiss) */ #define SUBLANG_NORWEGIAN_BOKMAL 0x01 /* Norwegian (Bokmal) */ @@ -220,7 +225,142 @@ Author: #define SUBLANG_SPANISH_MODERN 0x03 /* Spanish (Modern) */ +/* + * Country Codes. + */ +#define CTRY_DEFAULT 0 + +#define CTRY_AUSTRALIA 61 /* Australia */ +#define CTRY_AUSTRIA 43 /* Austria */ +#define CTRY_BELGIUM 32 /* Belgium */ +#define CTRY_BRAZIL 55 /* Brazil */ +#define CTRY_CANADA 2 /* Canada */ +#define CTRY_DENMARK 45 /* Denmark */ +#define CTRY_FINLAND 358 /* Finland */ +#define CTRY_FRANCE 33 /* France */ +#define CTRY_GERMANY 49 /* Germany */ +#define CTRY_ICELAND 354 /* Iceland */ +#define CTRY_IRELAND 353 /* Ireland */ +#define CTRY_ITALY 39 /* Italy */ +#define CTRY_JAPAN 81 /* Japan */ +#define CTRY_MEXICO 52 /* Mexico */ +#define CTRY_NETHERLANDS 31 /* Netherlands */ +#define CTRY_NEW_ZEALAND 64 /* New Zealand */ +#define CTRY_NORWAY 47 /* Norway */ +#define CTRY_PORTUGAL 351 /* Portugal */ +#define CTRY_PRCHINA 86 /* PR China */ +#define CTRY_SOUTH_KOREA 82 /* South Korea */ +#define CTRY_SPAIN 34 /* Spain */ +#define CTRY_SWEDEN 46 /* Sweden */ +#define CTRY_SWITZERLAND 41 /* Switzerland */ +#define CTRY_TAIWAN 886 /* Taiwan */ +#define CTRY_UNITED_KINGDOM 44 /* United Kingdom */ +#define CTRY_UNITED_STATES 1 /* United States */ + +/* + * Locale Types. + * + * These types are used for the GetLocaleInfoW NLS API routine. + */ +#define LOCALE_ILANGUAGE 0x0001 /* language id */ +#define LOCALE_SLANGUAGE 0x0002 /* localized name of language */ +#define LOCALE_SENGLANGUAGE 0x1001 /* English name of language */ +#define LOCALE_SABBREVLANGNAME 0x0003 /* abbreviated language name */ +#define LOCALE_SNATIVELANGNAME 0x0004 /* native name of language */ +#define LOCALE_ICOUNTRY 0x0005 /* country code */ +#define LOCALE_SCOUNTRY 0x0006 /* localized name of country */ +#define LOCALE_SENGCOUNTRY 0x1002 /* English name of country */ +#define LOCALE_SABBREVCTRYNAME 0x0007 /* abbreviated country name */ +#define LOCALE_SNATIVECTRYNAME 0x0008 /* native name of country */ +#define LOCALE_IDEFAULTLANGUAGE 0x0009 /* default language id */ +#define LOCALE_IDEFAULTCOUNTRY 0x000A /* default country code */ +#define LOCALE_IDEFAULTCODEPAGE 0x000B /* default code page */ + +#define LOCALE_SLIST 0x000C /* list item separator */ +#define LOCALE_IMEASURE 0x000D /* 0 = metric, 1 = US */ + +#define LOCALE_SDECIMAL 0x000E /* decimal separator */ +#define LOCALE_STHOUSAND 0x000F /* thousand separator */ +#define LOCALE_SGROUPING 0x0010 /* digit grouping */ +#define LOCALE_IDIGITS 0x0011 /* number of fractional digits */ +#define LOCALE_ILZERO 0x0012 /* leading zeros for decimal */ +#define LOCALE_SNATIVEDIGITS 0x0013 /* native ascii 0-9 */ + +#define LOCALE_SCURRENCY 0x0014 /* local monetary symbol */ +#define LOCALE_SINTLSYMBOL 0x0015 /* intl monetary symbol */ +#define LOCALE_SMONDECIMALSEP 0x0016 /* monetary decimal separator */ +#define LOCALE_SMONTHOUSANDSEP 0x0017 /* monetary thousand separator */ +#define LOCALE_SMONGROUPING 0x0018 /* monetary grouping */ +#define LOCALE_ICURRDIGITS 0x0019 /* # local monetary digits */ +#define LOCALE_IINTLCURRDIGITS 0x001A /* # intl monetary digits */ +#define LOCALE_ICURRENCY 0x001B /* positive currency mode */ +#define LOCALE_INEGCURR 0x001C /* negative currency mode */ + +#define LOCALE_SDATE 0x001D /* date separator */ +#define LOCALE_STIME 0x001E /* time separator */ +#define LOCALE_SSHORTDATE 0x001F /* short date-time separator */ +#define LOCALE_SLONGDATE 0x0020 /* long date-time separator */ +#define LOCALE_IDATE 0x0021 /* short date format ordering */ +#define LOCALE_ILDATE 0x0022 /* long date format ordering */ +#define LOCALE_ITIME 0x0023 /* time format specifier */ +#define LOCALE_ICENTURY 0x0024 /* century format specifier */ +#define LOCALE_ITLZERO 0x0025 /* leading zeros in time field */ +#define LOCALE_IDAYLZERO 0x0026 /* leading zeros in day field */ +#define LOCALE_IMONLZERO 0x0027 /* leading zeros in month field */ +#define LOCALE_S1159 0x0028 /* AM designator */ +#define LOCALE_S2359 0x0029 /* PM designator */ + +#define LOCALE_SDAYNAME1 0x002A /* long name for Monday */ +#define LOCALE_SDAYNAME2 0x002B /* long name for Tuesday */ +#define LOCALE_SDAYNAME3 0x002C /* long name for Wednesday */ +#define LOCALE_SDAYNAME4 0x002D /* long name for Thursday */ +#define LOCALE_SDAYNAME5 0x002E /* long name for Friday */ +#define LOCALE_SDAYNAME6 0x002F /* long name for Saturday */ +#define LOCALE_SDAYNAME7 0x0030 /* long name for Sunday */ +#define LOCALE_SABBREVDAYNAME1 0x0031 /* abbreviated name for Monday */ +#define LOCALE_SABBREVDAYNAME2 0x0032 /* abbreviated name for Tuesday */ +#define LOCALE_SABBREVDAYNAME3 0x0033 /* abbreviated name for Wednesday */ +#define LOCALE_SABBREVDAYNAME4 0x0034 /* abbreviated name for Thursday */ +#define LOCALE_SABBREVDAYNAME5 0x0035 /* abbreviated name for Friday */ +#define LOCALE_SABBREVDAYNAME6 0x0036 /* abbreviated name for Saturday */ +#define LOCALE_SABBREVDAYNAME7 0x0037 /* abbreviated name for Sunday */ +#define LOCALE_SMONTHNAME1 0x0038 /* long name for January */ +#define LOCALE_SMONTHNAME2 0x0039 /* long name for February */ +#define LOCALE_SMONTHNAME3 0x003A /* long name for March */ +#define LOCALE_SMONTHNAME4 0x003B /* long name for April */ +#define LOCALE_SMONTHNAME5 0x003C /* long name for May */ +#define LOCALE_SMONTHNAME6 0x003D /* long name for June */ +#define LOCALE_SMONTHNAME7 0x003E /* long name for July */ +#define LOCALE_SMONTHNAME8 0x003F /* long name for August */ +#define LOCALE_SMONTHNAME9 0x0040 /* long name for September */ +#define LOCALE_SMONTHNAME10 0x0041 /* long name for October */ +#define LOCALE_SMONTHNAME11 0x0042 /* long name for November */ +#define LOCALE_SMONTHNAME12 0x0043 /* long name for December */ +#define LOCALE_SABBREVMONTHNAME1 0x0044 /* abbreviated name for January */ +#define LOCALE_SABBREVMONTHNAME2 0x0045 /* abbreviated name for February */ +#define LOCALE_SABBREVMONTHNAME3 0x0046 /* abbreviated name for March */ +#define LOCALE_SABBREVMONTHNAME4 0x0047 /* abbreviated name for April */ +#define LOCALE_SABBREVMONTHNAME5 0x0048 /* abbreviated name for May */ +#define LOCALE_SABBREVMONTHNAME6 0x0049 /* abbreviated name for June */ +#define LOCALE_SABBREVMONTHNAME7 0x004A /* abbreviated name for July */ +#define LOCALE_SABBREVMONTHNAME8 0x004B /* abbreviated name for August */ +#define LOCALE_SABBREVMONTHNAME9 0x004C /* abbreviated name for September */ +#define LOCALE_SABBREVMONTHNAME10 0x004D /* abbreviated name for October */ +#define LOCALE_SABBREVMONTHNAME11 0x004E /* abbreviated name for November */ +#define LOCALE_SABBREVMONTHNAME12 0x004F /* abbreviated name for December */ + +#define LOCALE_SPOSITIVESIGN 0x0050 /* positive sign */ +#define LOCALE_SNEGATIVESIGN 0x0051 /* negative sign */ +#define LOCALE_IPOSSIGNPOSN 0x0052 /* positive sign position */ +#define LOCALE_INEGSIGNPOSN 0x0053 /* negative sign position */ +#define LOCALE_IPOSSYMPRECEDES 0x0054 /* mon sym precedes pos amt */ +#define LOCALE_IPOSSEPBYSPACE 0x0055 /* mon sym sep by space from pos */ +#define LOCALE_INEGSYMPRECEDES 0x0056 /* mon sym precedes neg amt */ +#define LOCALE_INEGSEPBYSPACE 0x0057 /* mon sym sep by space from neg */ + + + /***************************************************************************\ * Typedefs * @@ -228,30 +368,21 @@ Author: \***************************************************************************/ /* - * Handles. + * IDs. */ -typedef HANDLE HLOCALE; /* locale handle */ -typedef HANDLE HLCID; /* lcid handle */ +typedef DWORD LCID; /* locale ID */ +typedef WORD LANGID; /* language ID */ +typedef int LCTYPE; /* locale type constant */ /* - * Locale ID. + * CP Info. */ -typedef struct _lcid { - WORD wLanguage; /* language id */ - UINT Country; /* country id */ - UINT CodePage; /* codepage id */ -} LCID, *LPLCID; - - -/* - * Locale Strings. - */ -typedef struct _lcstrings { - CHAR szLanguage[MAX_LANG_LEN]; /* language name */ - CHAR szCountry[MAX_CTRY_LEN]; /* country name */ - CHAR szCodePage[MAX_CP_LEN]; /* codepage name */ -} LCSTRINGS, *LPLCSTRINGS; +typedef struct _cpinfo { + UINT MaxCharSize; /* max length (bytes) of a char */ + BYTE DefaultChar[MAX_DEFAULTCHAR]; /* default character */ + BYTE LeadByte[MAX_LEADBYTES]; /* lead byte ranges */ +} CPINFO, *LPCPINFO; @@ -270,19 +401,51 @@ typedef struct _lcstrings { * | Sublanguage ID | Primary Language ID | * +-----------------------+-------------------------+ * 15 10 9 0 bit + * + * + * Language ID creation/extraction macros: + * + * MAKELANGID - construct language id from primary language id and + * sublanguage id. + * PRIMARYLANGID - extract primary language id from a language id. + * SUBLANGID - extract sublanguage id from a language id. */ +#define MAKELANGID(p, s) ((((USHORT)(s)) << 10) | (USHORT)(p)) +#define PRIMARYLANGID(lgid) ((USHORT)(lgid) & 0x3ff) +#define SUBLANGID(lgid) ((USHORT)(lgid) >> 10) + /* - * Language ID creation/extraction macros: + * A locale ID is a 32 bit value which is the combination of a + * language ID and a reserved area. The bits are allocated as follows: * - * MAKELANGID - construct language id from primary language id and - * sublanguage id. - * PRIMARYLANGID - extract primary language id from a language id. - * SUBLANGID - extract sublanguage id from a language id. + * +-----------------------+-------------------------+ + * | Reserved | Language ID | + * +-----------------------+-------------------------+ + * 31 16 15 0 bit + * + * + * Locale ID creation macro: + * + * MAKELCID - construct locale id from a language id. */ -#define MAKELANGID(p, s) ((((USHORT)(s)) << 10) | (USHORT)(p)) -#define PRIMARYLANGID(lgid) ((USHORT)(lgid) & 0x1ff) -#define SUBLANGID(lgid) ((USHORT)(lgid) >> 10) +#define MAKELCID(lgid) ((DWORD)(((WORD)(lgid)) | (((DWORD)((WORD)(0))) << 16))) + + +/* + * Get the language id from a locale id. + */ +#define LANGIDFROMLCID(lcid) ((WORD)(lcid)) + + +/* + * Default System and User IDs for language and locale. + */ +#define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT)) +#define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)) + +#define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT)) +#define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT)) @@ -293,38 +456,40 @@ typedef struct _lcstrings { \***************************************************************************/ /* - * MBCS Translation APIs. + * Code Page Dependent APIs. */ -int APIENTRY MultiByteToWideChar(UINT, LPSTR, int, LPWSTR, int *, DWORD); -int APIENTRY WideCharToMultiByte(UINT, LPWSTR, int, LPSTR, int *, LPSTR, - LPBOOL, DWORD); -int APIENTRY MultiByteToMultiByte(UINT, UINT, LPSTR, int, UINT, LPSTR, - int *); -int APIENTRY GetDBCSLeadBytes(UINT, UINT *, LPBYTE, int *); +BOOL APIENTRY IsValidCodePage(UINT CodePage); +UINT APIENTRY GetACP(void); +UINT APIENTRY GetOEMCP(void); +BOOL APIENTRY GetCPInfo(UINT, LPCPINFO); +BOOL APIENTRY IsDBCSLeadByte(BYTE); +int APIENTRY MultiByteToWideChar(UINT, DWORD, LPSTR, int, LPWSTR, int); +int APIENTRY WideCharToMultiByte(UINT, DWORD, LPWSTR, int, LPSTR, int, + LPSTR, LPBOOL); /* - * High Level APIs. + * Locale Dependent APIs. */ -HLOCALE APIENTRY OpenLocale(LPLCID); -BOOL APIENTRY CloseLocale(HLOCALE); -BOOL APIENTRY GetCharType(HLOCALE, DWORD, WCHAR, LPWORD); -int APIENTRY CompareString(HLOCALE, DWORD, LPWSTR, int, LPWSTR, int); -int APIENTRY MapString(HLOCALE, DWORD, LPWSTR, int, LPWSTR, int *); -int APIENTRY QueryMap(HLOCALE, DWORD, DWORD, WCHAR, WCHAR, LPVOID, LPDWORD); +int APIENTRY CompareStringW(LCID, DWORD, LPWSTR, int, LPWSTR, int); +int APIENTRY LCMapStringW(LCID, DWORD, LPWSTR, int, LPWSTR, int); +int APIENTRY GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int); + +LANGID APIENTRY GetSystemDefaultLangID(void); +LANGID APIENTRY GetUserDefaultLangID(void); +LCID APIENTRY GetSystemDefaultLCID(void); +LCID APIENTRY GetUserDefaultLCID(void); /* - * Low Level APIs. + * Locale Independent APIs. */ -HLCID APIENTRY BeginEnumLocale(DWORD, LPLCID); -BOOL APIENTRY GetNextLocale(HLCID, LPLCID); -BOOL APIENTRY EndEnumLocale(HLCID); -int APIENTRY GetLocaleInfo(LPLCID, DWORD, LPVOID, LPDWORD); -BOOL APIENTRY GetQualifiedLocale(DWORD, LPVOID, LPLCID, LPLCSTRINGS); +BOOL APIENTRY GetStringTypeW(DWORD, LPWSTR, int, LPWORD); +int APIENTRY FoldStringW(DWORD, LPWSTR, int, LPWSTR, int); #endif // NONLS #endif // _WINNLS_ +