--- mstools/h/winnls.h 2018/08/09 18:20:29 1.1.1.2 +++ mstools/h/winnls.h 2018/08/09 18:23:01 1.1.1.4 @@ -20,6 +20,10 @@ Author: #ifndef _WINNLS_ #define _WINNLS_ +#ifdef __cplusplus +extern "C" { +#endif + #ifndef NONLS @@ -74,21 +78,21 @@ Author: /* * CType 2 Flag Bits. */ -#define C2_LEFTTORIGHT 0x1 /* left to right */ -#define C2_RIGHTTOLEFT 0x2 /* right to left */ +#define C2_LEFTTORIGHT 0x0001 /* left to right */ +#define C2_RIGHTTOLEFT 0x0002 /* 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_BLOCKSEPARATOR 0x8 /* block separator */ -#define C2_SEGMENTSEPARATOR 0x9 /* segment separator */ -#define C2_WHITESPACE 0xA /* white space */ -#define C2_OTHERNEUTRAL 0xB /* other neutrals */ +#define C2_EUROPENUMBER 0x0003 /* European number, digit */ +#define C2_EUROPESEPARATOR 0x0004 /* European numeric separator */ +#define C2_EUROPETERMINATOR 0x0005 /* European numeric terminator */ +#define C2_ARABICNUMBER 0x0006 /* Arabic number */ +#define C2_COMMONSEPARATOR 0x0007 /* common numeric separator */ + +#define C2_BLOCKSEPARATOR 0x0008 /* block separator */ +#define C2_SEGMENTSEPARATOR 0x0009 /* segment separator */ +#define C2_WHITESPACE 0x000A /* white space */ +#define C2_OTHERNEUTRAL 0x000B /* other neutrals */ -#define C2_NOTAPPLICABLE 0x0 /* no implicit directionality */ +#define C2_NOTAPPLICABLE 0x0000 /* no implicit directionality */ /* * CType 3 Flag Bits. @@ -98,7 +102,7 @@ Author: #define C3_VOWELMARK 0x0004 /* vowel mark */ #define C3_SYMBOL 0x0008 /* symbols */ -#define C3_NOTAPPLICABLE 0x0 /* ctype 3 is not applicable */ +#define C3_NOTAPPLICABLE 0x0000 /* ctype 3 is not applicable */ /* @@ -113,8 +117,8 @@ Author: * 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_PRECOMPOSED 0x00000020 /* convert to precomposed chars */ +#define MAP_COMPOSITE 0x00000040 /* convert to composite chars */ #define MAP_FOLDDIGITS 0x00000080 /* all digits to ASCII 0-9 */ @@ -128,101 +132,43 @@ Author: /* - * Code Page Default Values. - */ -#define CP_ACP 0 /* default to ANSI code page */ -#define CP_OEMCP 1 /* default to OEM code page */ - - -/* - * Language IDs. - * - * The following two combinations of primary language ID and - * sublanguage ID have special semantics: + * Sorting Flags. * - * Primary Language ID Sublanguage ID Result - * ------------------- --------------- ------------------------ - * LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral - * LANG_NEUTRAL SUBLANG_DEFAULT Process default language + * WORD Sort: culturally correct sort + * hyphen and apostrophe are special cased + * example: "coop" and "co-op" will sort together in a list + * + * co_op <------- underscore (symbol) + * coat + * comb + * coop + * co-op <------- hyphen (punctuation) + * cork + * went + * were + * we're <------- apostrophe (punctuation) + * + * + * STRING Sort: hyphen and apostrophe will sort with all other symbols + * + * co-op <------- hyphen (punctuation) + * co_op <------- underscore (symbol) + * coat + * comb + * coop + * cork + * we're <------- apostrophe (punctuation) + * went + * were */ +#define SORT_STRINGSORT 0x00001000 /* use string sort method */ -/* - * Primary language IDs. - */ -#define LANG_NEUTRAL 0x00 - -#define LANG_ALBANIAN 0x1c -#define LANG_ARABIC 0x01 -#define LANG_BAHASA 0x21 -#define LANG_BULGARIAN 0x02 -#define LANG_CATALAN 0x03 -#define LANG_CHINESE 0x04 -#define LANG_CZECH 0x05 -#define LANG_DANISH 0x06 -#define LANG_DUTCH 0x13 -#define LANG_ENGLISH 0x09 -#define LANG_FINNISH 0x0b -#define LANG_FRENCH 0x0c -#define LANG_GERMAN 0x07 -#define LANG_GREEK 0x08 -#define LANG_HEBREW 0x0d -#define LANG_HUNGARIAN 0x0e -#define LANG_ICELANDIC 0x0f -#define LANG_ITALIAN 0x10 -#define LANG_JAPANESE 0x11 -#define LANG_KOREAN 0x12 -#define LANG_NORWEGIAN 0x14 -#define LANG_POLISH 0x15 -#define LANG_PORTUGUESE 0x16 -#define LANG_RHAETO_ROMAN 0x17 -#define LANG_ROMANIAN 0x18 -#define LANG_RUSSIAN 0x19 -#define LANG_SERBO_CROATIAN 0x1a -#define LANG_SLOVAK 0x1b -#define LANG_SPANISH 0x0a -#define LANG_SWEDISH 0x1d -#define LANG_THAI 0x1e -#define LANG_TURKISH 0x1f -#define LANG_URDU 0x20 /* - * Sublanguage IDs. - * - * The name immediately following SUBLANG_ dictates which primary - * language ID that sublanguage ID can be combined with to form a - * valid language ID. - */ -#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) */ -#define SUBLANG_DUTCH 0x01 /* Dutch */ -#define SUBLANG_DUTCH_BELGIAN 0x02 /* Dutch (Belgian) */ -#define SUBLANG_ENGLISH_US 0x01 /* English (USA) */ -#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) */ -#define SUBLANG_NORWEGIAN_NYNORSK 0x02 /* Norwegian (Nynorsk) */ -#define SUBLANG_PORTUGUESE 0x02 /* Portuguese */ -#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 /* Portuguese (Brazilian) */ -#define SUBLANG_SERBO_CROATIAN_CYRILLIC 0x02 /* Serbo-Croatian (Cyrillic) */ -#define SUBLANG_SERBO_CROATIAN_LATIN 0x01 /* Croato-Serbian (Latin) */ -#define SUBLANG_SPANISH 0x01 /* Spanish */ -#define SUBLANG_SPANISH_MEXICAN 0x02 /* Spanish (Mexican) */ -#define SUBLANG_SPANISH_MODERN 0x03 /* Spanish (Modern) */ + * Code Page Default Values. + */ +#define CP_ACP 0 /* default to ANSI code page */ +#define CP_OEMCP 1 /* default to OEM code page */ /* @@ -262,105 +208,126 @@ Author: * Locale Types. * * These types are used for the GetLocaleInfoW NLS API routine. + * + * LOCALE_NOUSEROVERRIDE is also used in GetTimeFormatW and GetDateFormatW. */ -#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 */ - - - +#define LOCALE_NOUSEROVERRIDE 0x80000000 /* do not use user overrides */ + +#define LOCALE_ILANGUAGE 0x00000001 /* language id */ +#define LOCALE_SLANGUAGE 0x00000002 /* localized name of language */ +#define LOCALE_SENGLANGUAGE 0x00001001 /* English name of language */ +#define LOCALE_SABBREVLANGNAME 0x00000003 /* abbreviated language name */ +#define LOCALE_SNATIVELANGNAME 0x00000004 /* native name of language */ +#define LOCALE_ICOUNTRY 0x00000005 /* country code */ +#define LOCALE_SCOUNTRY 0x00000006 /* localized name of country */ +#define LOCALE_SENGCOUNTRY 0x00001002 /* English name of country */ +#define LOCALE_SABBREVCTRYNAME 0x00000007 /* abbreviated country name */ +#define LOCALE_SNATIVECTRYNAME 0x00000008 /* native name of country */ +#define LOCALE_IDEFAULTLANGUAGE 0x00000009 /* default language id */ +#define LOCALE_IDEFAULTCOUNTRY 0x0000000A /* default country code */ +#define LOCALE_IDEFAULTCODEPAGE 0x0000000B /* default code page */ + +#define LOCALE_SLIST 0x0000000C /* list item separator */ +#define LOCALE_IMEASURE 0x0000000D /* 0 = metric, 1 = US */ + +#define LOCALE_SDECIMAL 0x0000000E /* decimal separator */ +#define LOCALE_STHOUSAND 0x0000000F /* thousand separator */ +#define LOCALE_SGROUPING 0x00000010 /* digit grouping */ +#define LOCALE_IDIGITS 0x00000011 /* number of fractional digits */ +#define LOCALE_ILZERO 0x00000012 /* leading zeros for decimal */ +#define LOCALE_SNATIVEDIGITS 0x00000013 /* native ascii 0-9 */ + +#define LOCALE_SCURRENCY 0x00000014 /* local monetary symbol */ +#define LOCALE_SINTLSYMBOL 0x00000015 /* intl monetary symbol */ +#define LOCALE_SMONDECIMALSEP 0x00000016 /* monetary decimal separator */ +#define LOCALE_SMONTHOUSANDSEP 0x00000017 /* monetary thousand separator */ +#define LOCALE_SMONGROUPING 0x00000018 /* monetary grouping */ +#define LOCALE_ICURRDIGITS 0x00000019 /* # local monetary digits */ +#define LOCALE_IINTLCURRDIGITS 0x0000001A /* # intl monetary digits */ +#define LOCALE_ICURRENCY 0x0000001B /* positive currency mode */ +#define LOCALE_INEGCURR 0x0000001C /* negative currency mode */ + +#define LOCALE_SDATE 0x0000001D /* date separator */ +#define LOCALE_STIME 0x0000001E /* time separator */ +#define LOCALE_SSHORTDATE 0x0000001F /* short date format string */ +#define LOCALE_SLONGDATE 0x00000020 /* long date format string */ +#define LOCALE_STIMEFORMAT 0x00001003 /* time format string */ +#define LOCALE_IDATE 0x00000021 /* short date format ordering */ +#define LOCALE_ILDATE 0x00000022 /* long date format ordering */ +#define LOCALE_ITIME 0x00000023 /* time format specifier */ +#define LOCALE_ICENTURY 0x00000024 /* century format specifier */ +#define LOCALE_ITLZERO 0x00000025 /* leading zeros in time field */ +#define LOCALE_IDAYLZERO 0x00000026 /* leading zeros in day field */ +#define LOCALE_IMONLZERO 0x00000027 /* leading zeros in month field */ +#define LOCALE_S1159 0x00000028 /* AM designator */ +#define LOCALE_S2359 0x00000029 /* PM designator */ + +#define LOCALE_SDAYNAME1 0x0000002A /* long name for Monday */ +#define LOCALE_SDAYNAME2 0x0000002B /* long name for Tuesday */ +#define LOCALE_SDAYNAME3 0x0000002C /* long name for Wednesday */ +#define LOCALE_SDAYNAME4 0x0000002D /* long name for Thursday */ +#define LOCALE_SDAYNAME5 0x0000002E /* long name for Friday */ +#define LOCALE_SDAYNAME6 0x0000002F /* long name for Saturday */ +#define LOCALE_SDAYNAME7 0x00000030 /* long name for Sunday */ +#define LOCALE_SABBREVDAYNAME1 0x00000031 /* abbreviated name for Monday */ +#define LOCALE_SABBREVDAYNAME2 0x00000032 /* abbreviated name for Tuesday */ +#define LOCALE_SABBREVDAYNAME3 0x00000033 /* abbreviated name for Wednesday */ +#define LOCALE_SABBREVDAYNAME4 0x00000034 /* abbreviated name for Thursday */ +#define LOCALE_SABBREVDAYNAME5 0x00000035 /* abbreviated name for Friday */ +#define LOCALE_SABBREVDAYNAME6 0x00000036 /* abbreviated name for Saturday */ +#define LOCALE_SABBREVDAYNAME7 0x00000037 /* abbreviated name for Sunday */ +#define LOCALE_SMONTHNAME1 0x00000038 /* long name for January */ +#define LOCALE_SMONTHNAME2 0x00000039 /* long name for February */ +#define LOCALE_SMONTHNAME3 0x0000003A /* long name for March */ +#define LOCALE_SMONTHNAME4 0x0000003B /* long name for April */ +#define LOCALE_SMONTHNAME5 0x0000003C /* long name for May */ +#define LOCALE_SMONTHNAME6 0x0000003D /* long name for June */ +#define LOCALE_SMONTHNAME7 0x0000003E /* long name for July */ +#define LOCALE_SMONTHNAME8 0x0000003F /* long name for August */ +#define LOCALE_SMONTHNAME9 0x00000040 /* long name for September */ +#define LOCALE_SMONTHNAME10 0x00000041 /* long name for October */ +#define LOCALE_SMONTHNAME11 0x00000042 /* long name for November */ +#define LOCALE_SMONTHNAME12 0x00000043 /* long name for December */ +#define LOCALE_SABBREVMONTHNAME1 0x00000044 /* abbreviated name for January */ +#define LOCALE_SABBREVMONTHNAME2 0x00000045 /* abbreviated name for February */ +#define LOCALE_SABBREVMONTHNAME3 0x00000046 /* abbreviated name for March */ +#define LOCALE_SABBREVMONTHNAME4 0x00000047 /* abbreviated name for April */ +#define LOCALE_SABBREVMONTHNAME5 0x00000048 /* abbreviated name for May */ +#define LOCALE_SABBREVMONTHNAME6 0x00000049 /* abbreviated name for June */ +#define LOCALE_SABBREVMONTHNAME7 0x0000004A /* abbreviated name for July */ +#define LOCALE_SABBREVMONTHNAME8 0x0000004B /* abbreviated name for August */ +#define LOCALE_SABBREVMONTHNAME9 0x0000004C /* abbreviated name for September */ +#define LOCALE_SABBREVMONTHNAME10 0x0000004D /* abbreviated name for October */ +#define LOCALE_SABBREVMONTHNAME11 0x0000004E /* abbreviated name for November */ +#define LOCALE_SABBREVMONTHNAME12 0x0000004F /* abbreviated name for December */ + +#define LOCALE_SPOSITIVESIGN 0x00000050 /* positive sign */ +#define LOCALE_SNEGATIVESIGN 0x00000051 /* negative sign */ +#define LOCALE_IPOSSIGNPOSN 0x00000052 /* positive sign position */ +#define LOCALE_INEGSIGNPOSN 0x00000053 /* negative sign position */ +#define LOCALE_IPOSSYMPRECEDES 0x00000054 /* mon sym precedes pos amt */ +#define LOCALE_IPOSSEPBYSPACE 0x00000055 /* mon sym sep by space from pos amt */ +#define LOCALE_INEGSYMPRECEDES 0x00000056 /* mon sym precedes neg amt */ +#define LOCALE_INEGSEPBYSPACE 0x00000057 /* mon sym sep by space from neg amt */ + + +/* + * Time Flags for GetTimeFormatW. + */ +#define TIME_NOMINUTESORSECONDS 0x00000001 /* do not use minutes or seconds */ +#define TIME_NOSECONDS 0x00000002 /* do not use seconds */ +#define TIME_NOTIMEMARKER 0x00000004 /* do not use time marker */ +#define TIME_FORCE24HOURFORMAT 0x00000008 /* always use 24 hour format */ + + +/* + * Date Flags for GetDateFormatW. + */ +#define DATE_SHORTDATE 0x00000001 /* use short date picture */ +#define DATE_LONGDATE 0x00000002 /* use long date picture */ + + + /***************************************************************************\ * Typedefs * @@ -368,11 +335,10 @@ Author: \***************************************************************************/ /* - * IDs. + * Locale type constant */ -typedef DWORD LCID; /* locale ID */ -typedef WORD LANGID; /* language ID */ -typedef int LCTYPE; /* locale type constant */ + +typedef DWORD LCTYPE; /* @@ -392,61 +358,6 @@ typedef struct _cpinfo { * Define all macros for the NLS component here. \***************************************************************************/ -/* - * A language ID is a 16 bit value which is the combination of a - * primary language ID and a secondary language ID. The bits are - * allocated as follows: - * - * +-----------------------+-------------------------+ - * | 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) - - -/* - * 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: - * - * +-----------------------+-------------------------+ - * | Reserved | Language ID | - * +-----------------------+-------------------------+ - * 31 16 15 0 bit - * - * - * Locale ID creation macro: - * - * MAKELCID - construct locale id from a language id. - */ -#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)) - /***************************************************************************\ @@ -458,37 +369,157 @@ typedef struct _cpinfo { /* * Code Page Dependent APIs. */ -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); +BOOL +WINAPI +IsValidCodePage( + UINT CodePage); + +UINT +WINAPI +GetACP(void); + +UINT +WINAPI +GetOEMCP(void); + +BOOL +WINAPI +GetCPInfo( + UINT CodePage, + LPCPINFO lpCPInfo); + +BOOL +WINAPI +IsDBCSLeadByte( + BYTE TestChar); + +int +WINAPI +MultiByteToWideChar( + UINT CodePage, + DWORD dwFlags, + LPCSTR lpMultiByteStr, + int cchMultiByte, + LPWSTR lpWideCharStr, + int cchWideChar); + +int +WINAPI +WideCharToMultiByte( + UINT CodePage, + DWORD dwFlags, + LPCWSTR lpWideCharStr, + int cchWideChar, + LPSTR lpMultiByteStr, + int cchMultiByte, + LPCSTR lpDefaultChar, + LPBOOL lpUsedDefaultChar); /* * Locale Dependent APIs. */ -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); +int +WINAPI +CompareStringW( + LCID Locale, + DWORD dwCmpFlags, + LPCWSTR lpString1, + int cchCount1, + LPCWSTR lpString2, + int cchCount2); + +int +WINAPI +LCMapStringW( + LCID Locale, + DWORD dwMapFlags, + LPCWSTR lpSrcStr, + int cchSrc, + LPWSTR lpDestStr, + int cchDest); + +int +WINAPI +GetLocaleInfoW( + LCID Locale, + LCTYPE LCType, + LPWSTR lpLCData, + int cchData); + +int +WINAPI +GetTimeFormatW( + LCID Locale, + DWORD dwFlags, + CONST SYSTEMTIME *lpTime, + LPCWSTR lpFormat, + LPWSTR lpTimeStr, + int cchTime); + +int +WINAPI +GetDateFormatW( + LCID Locale, + DWORD dwFlags, + CONST SYSTEMTIME *lpDate, + LPCWSTR lpFormat, + LPWSTR lpDateStr, + int cchDate); + +LCID +WINAPI +GetThreadLocale(void); + +BOOL +WINAPI +SetThreadLocale( + LCID Locale + ); + +LANGID +WINAPI +GetSystemDefaultLangID(void); + +LANGID +WINAPI +GetUserDefaultLangID(void); + +LCID +WINAPI +GetSystemDefaultLCID(void); + +LCID +WINAPI +GetUserDefaultLCID(void); /* * Locale Independent APIs. */ -BOOL APIENTRY GetStringTypeW(DWORD, LPWSTR, int, LPWORD); -int APIENTRY FoldStringW(DWORD, LPWSTR, int, LPWSTR, int); +BOOL +WINAPI +GetStringTypeW( + DWORD dwInfoType, + LPCWSTR lpSrcStr, + int cchSrc, + LPWORD lpCharType); + +int +WINAPI +FoldStringW( + DWORD dwMapFlags, + LPCWSTR lpSrcStr, + int cchSrc, + LPWSTR lpDestStr, + int cchDest); #endif // NONLS -#endif // _WINNLS_ +#ifdef __cplusplus +} +#endif +#endif // _WINNLS_