Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _WINNLS_
      7 #define _WINNLS_
      8 
      9 #include <_mingw_unicode.h>
     10 
     11 #ifdef __cplusplus
     12 extern "C" {
     13 #endif
     14 
     15 #ifndef NONLS
     16 
     17 #define MAX_LEADBYTES 12
     18 #define MAX_DEFAULTCHAR 2
     19 
     20 #define MB_PRECOMPOSED 0x00000001
     21 #define MB_COMPOSITE 0x00000002
     22 #define MB_USEGLYPHCHARS 0x00000004
     23 #define MB_ERR_INVALID_CHARS 0x00000008
     24 
     25 #define WC_COMPOSITECHECK 0x00000200
     26 #define WC_DISCARDNS 0x00000010
     27 #define WC_SEPCHARS 0x00000020
     28 #define WC_DEFAULTCHAR 0x00000040
     29 #if (_WIN32_WINNT >= 0x0600)
     30 #define WC_ERR_INVALID_CHARS 0x00000080
     31 #endif
     32 #define WC_NO_BEST_FIT_CHARS 0x00000400
     33 
     34 #define CT_CTYPE1 0x00000001
     35 #define CT_CTYPE2 0x00000002
     36 #define CT_CTYPE3 0x00000004
     37 
     38 #define C1_UPPER 0x0001
     39 #define C1_LOWER 0x0002
     40 #define C1_DIGIT 0x0004
     41 #define C1_SPACE 0x0008
     42 #define C1_PUNCT 0x0010
     43 #define C1_CNTRL 0x0020
     44 #define C1_BLANK 0x0040
     45 #define C1_XDIGIT 0x0080
     46 #define C1_ALPHA 0x0100
     47 #define C1_DEFINED 0x0200
     48 
     49 #define C2_LEFTTORIGHT 0x0001
     50 #define C2_RIGHTTOLEFT 0x0002
     51 
     52 #define C2_EUROPENUMBER 0x0003
     53 #define C2_EUROPESEPARATOR 0x0004
     54 #define C2_EUROPETERMINATOR 0x0005
     55 #define C2_ARABICNUMBER 0x0006
     56 #define C2_COMMONSEPARATOR 0x0007
     57 
     58 #define C2_BLOCKSEPARATOR 0x0008
     59 #define C2_SEGMENTSEPARATOR 0x0009
     60 #define C2_WHITESPACE 0x000A
     61 #define C2_OTHERNEUTRAL 0x000B
     62 
     63 #define C2_NOTAPPLICABLE 0x0000
     64 
     65 #define C3_NONSPACING 0x0001
     66 #define C3_DIACRITIC 0x0002
     67 #define C3_VOWELMARK 0x0004
     68 #define C3_SYMBOL 0x0008
     69 
     70 #define C3_KATAKANA 0x0010
     71 #define C3_HIRAGANA 0x0020
     72 #define C3_HALFWIDTH 0x0040
     73 #define C3_FULLWIDTH 0x0080
     74 #define C3_IDEOGRAPH 0x0100
     75 #define C3_KASHIDA 0x0200
     76 #define C3_LEXICAL 0x0400
     77 
     78 #define C3_ALPHA 0x8000
     79 
     80 #define C3_NOTAPPLICABLE 0x0000
     81 
     82 #define NORM_IGNORECASE 0x00000001
     83 #define NORM_IGNORENONSPACE 0x00000002
     84 #define NORM_IGNORESYMBOLS 0x00000004
     85 
     86 #define NORM_IGNOREKANATYPE 0x00010000
     87 #define NORM_IGNOREWIDTH 0x00020000
     88 
     89 #define MAP_FOLDCZONE 0x00000010
     90 #define MAP_PRECOMPOSED 0x00000020
     91 #define MAP_COMPOSITE 0x00000040
     92 #define MAP_FOLDDIGITS 0x00000080
     93 #define MAP_EXPAND_LIGATURES 0x00002000
     94 
     95 #define LCMAP_LOWERCASE 0x00000100
     96 #define LCMAP_UPPERCASE 0x00000200
     97 #define LCMAP_SORTKEY 0x00000400
     98 #define LCMAP_BYTEREV 0x00000800
     99 
    100 #define LCMAP_HIRAGANA 0x00100000
    101 #define LCMAP_KATAKANA 0x00200000
    102 #define LCMAP_HALFWIDTH 0x00400000
    103 #define LCMAP_FULLWIDTH 0x00800000
    104 
    105 #define LCMAP_LINGUISTIC_CASING 0x01000000
    106 
    107 #define LCMAP_SIMPLIFIED_CHINESE 0x02000000
    108 #define LCMAP_TRADITIONAL_CHINESE 0x04000000
    109 
    110 #define LGRPID_INSTALLED 0x00000001
    111 #define LGRPID_SUPPORTED 0x00000002
    112 
    113 #define LCID_INSTALLED 0x00000001
    114 #define LCID_SUPPORTED 0x00000002
    115 #define LCID_ALTERNATE_SORTS 0x00000004
    116 
    117 #define CP_INSTALLED 0x00000001
    118 #define CP_SUPPORTED 0x00000002
    119 
    120 #define SORT_STRINGSORT 0x00001000
    121 
    122 #define CSTR_LESS_THAN 1
    123 #define CSTR_EQUAL 2
    124 #define CSTR_GREATER_THAN 3
    125 
    126 #define CP_ACP 0
    127 #define CP_OEMCP 1
    128 #define CP_MACCP 2
    129 #define CP_THREAD_ACP 3
    130 #define CP_SYMBOL 42
    131 
    132 #define CP_UTF7 65000
    133 #define CP_UTF8 65001
    134 
    135 #define CTRY_DEFAULT 0
    136 
    137 #define CTRY_ALBANIA 355
    138 #define CTRY_ALGERIA 213
    139 #define CTRY_ARGENTINA 54
    140 #define CTRY_ARMENIA 374
    141 #define CTRY_AUSTRALIA 61
    142 #define CTRY_AUSTRIA 43
    143 #define CTRY_AZERBAIJAN 994
    144 #define CTRY_BAHRAIN 973
    145 #define CTRY_BELARUS 375
    146 #define CTRY_BELGIUM 32
    147 #define CTRY_BELIZE 501
    148 #define CTRY_BOLIVIA 591
    149 #define CTRY_BRAZIL 55
    150 #define CTRY_BRUNEI_DARUSSALAM 673
    151 #define CTRY_BULGARIA 359
    152 #define CTRY_CANADA 2
    153 #define CTRY_CARIBBEAN 1
    154 #define CTRY_CHILE 56
    155 #define CTRY_COLOMBIA 57
    156 #define CTRY_COSTA_RICA 506
    157 #define CTRY_CROATIA 385
    158 #define CTRY_CZECH 420
    159 #define CTRY_DENMARK 45
    160 #define CTRY_DOMINICAN_REPUBLIC 1
    161 #define CTRY_ECUADOR 593
    162 #define CTRY_EGYPT 20
    163 #define CTRY_EL_SALVADOR 503
    164 #define CTRY_ESTONIA 372
    165 #define CTRY_FAEROE_ISLANDS 298
    166 #define CTRY_FINLAND 358
    167 #define CTRY_FRANCE 33
    168 #define CTRY_GEORGIA 995
    169 #define CTRY_GERMANY 49
    170 #define CTRY_GREECE 30
    171 #define CTRY_GUATEMALA 502
    172 #define CTRY_HONDURAS 504
    173 #define CTRY_HONG_KONG 852
    174 #define CTRY_HUNGARY 36
    175 #define CTRY_ICELAND 354
    176 #define CTRY_INDIA 91
    177 #define CTRY_INDONESIA 62
    178 #define CTRY_IRAN 981
    179 #define CTRY_IRAQ 964
    180 #define CTRY_IRELAND 353
    181 #define CTRY_ISRAEL 972
    182 #define CTRY_ITALY 39
    183 #define CTRY_JAMAICA 1
    184 #define CTRY_JAPAN 81
    185 #define CTRY_JORDAN 962
    186 #define CTRY_KAZAKSTAN 7
    187 #define CTRY_KENYA 254
    188 #define CTRY_KUWAIT 965
    189 #define CTRY_KYRGYZSTAN 996
    190 #define CTRY_LATVIA 371
    191 #define CTRY_LEBANON 961
    192 #define CTRY_LIBYA 218
    193 #define CTRY_LIECHTENSTEIN 41
    194 #define CTRY_LITHUANIA 370
    195 #define CTRY_LUXEMBOURG 352
    196 #define CTRY_MACAU 853
    197 #define CTRY_MACEDONIA 389
    198 #define CTRY_MALAYSIA 60
    199 #define CTRY_MALDIVES 960
    200 #define CTRY_MEXICO 52
    201 #define CTRY_MONACO 33
    202 #define CTRY_MONGOLIA 976
    203 #define CTRY_MOROCCO 212
    204 #define CTRY_NETHERLANDS 31
    205 #define CTRY_NEW_ZEALAND 64
    206 #define CTRY_NICARAGUA 505
    207 #define CTRY_NORWAY 47
    208 #define CTRY_OMAN 968
    209 #define CTRY_PAKISTAN 92
    210 #define CTRY_PANAMA 507
    211 #define CTRY_PARAGUAY 595
    212 #define CTRY_PERU 51
    213 #define CTRY_PHILIPPINES 63
    214 #define CTRY_POLAND 48
    215 #define CTRY_PORTUGAL 351
    216 #define CTRY_PRCHINA 86
    217 #define CTRY_PUERTO_RICO 1
    218 #define CTRY_QATAR 974
    219 #define CTRY_ROMANIA 40
    220 #define CTRY_RUSSIA 7
    221 #define CTRY_SAUDI_ARABIA 966
    222 #define CTRY_SERBIA 381
    223 #define CTRY_SINGAPORE 65
    224 #define CTRY_SLOVAK 421
    225 #define CTRY_SLOVENIA 386
    226 #define CTRY_SOUTH_AFRICA 27
    227 #define CTRY_SOUTH_KOREA 82
    228 #define CTRY_SPAIN 34
    229 #define CTRY_SWEDEN 46
    230 #define CTRY_SWITZERLAND 41
    231 #define CTRY_SYRIA 963
    232 #define CTRY_TAIWAN 886
    233 #define CTRY_TATARSTAN 7
    234 #define CTRY_THAILAND 66
    235 #define CTRY_TRINIDAD_Y_TOBAGO 1
    236 #define CTRY_TUNISIA 216
    237 #define CTRY_TURKEY 90
    238 #define CTRY_UAE 971
    239 #define CTRY_UKRAINE 380
    240 #define CTRY_UNITED_KINGDOM 44
    241 #define CTRY_UNITED_STATES 1
    242 #define CTRY_URUGUAY 598
    243 #define CTRY_UZBEKISTAN 7
    244 #define CTRY_VENEZUELA 58
    245 #define CTRY_VIET_NAM 84
    246 #define CTRY_YEMEN 967
    247 #define CTRY_ZIMBABWE 263
    248 
    249 #define LOCALE_NOUSEROVERRIDE 0x80000000
    250 #define LOCALE_USE_CP_ACP 0x40000000
    251 #define LOCALE_RETURN_NUMBER 0x20000000
    252 
    253 #define LOCALE_ILANGUAGE 0x00000001
    254 #define LOCALE_SLANGUAGE 0x00000002
    255 #define LOCALE_SENGLANGUAGE 0x00001001
    256 #define LOCALE_SABBREVLANGNAME 0x00000003
    257 #define LOCALE_SNATIVELANGNAME 0x00000004
    258 
    259 #define LOCALE_ICOUNTRY 0x00000005
    260 #define LOCALE_SCOUNTRY 0x00000006
    261 #define LOCALE_SENGCOUNTRY 0x00001002
    262 #define LOCALE_SABBREVCTRYNAME 0x00000007
    263 #define LOCALE_SNATIVECTRYNAME 0x00000008
    264 
    265 #define LOCALE_IDEFAULTLANGUAGE 0x00000009
    266 #define LOCALE_IDEFAULTCOUNTRY 0x0000000A
    267 #define LOCALE_IDEFAULTCODEPAGE 0x0000000B
    268 #define LOCALE_IDEFAULTANSICODEPAGE 0x00001004
    269 #define LOCALE_IDEFAULTMACCODEPAGE 0x00001011
    270 
    271 #define LOCALE_SLIST 0x0000000C
    272 #define LOCALE_IMEASURE 0x0000000D
    273 
    274 #define LOCALE_SDECIMAL 0x0000000E
    275 #define LOCALE_STHOUSAND 0x0000000F
    276 #define LOCALE_SGROUPING 0x00000010
    277 #define LOCALE_IDIGITS 0x00000011
    278 #define LOCALE_ILZERO 0x00000012
    279 #define LOCALE_INEGNUMBER 0x00001010
    280 #define LOCALE_SNATIVEDIGITS 0x00000013
    281 
    282 #define LOCALE_SCURRENCY 0x00000014
    283 #define LOCALE_SINTLSYMBOL 0x00000015
    284 #define LOCALE_SMONDECIMALSEP 0x00000016
    285 #define LOCALE_SMONTHOUSANDSEP 0x00000017
    286 #define LOCALE_SMONGROUPING 0x00000018
    287 #define LOCALE_ICURRDIGITS 0x00000019
    288 #define LOCALE_IINTLCURRDIGITS 0x0000001A
    289 #define LOCALE_ICURRENCY 0x0000001B
    290 #define LOCALE_INEGCURR 0x0000001C
    291 
    292 #define LOCALE_SDATE 0x0000001D
    293 #define LOCALE_STIME 0x0000001E
    294 #define LOCALE_SSHORTDATE 0x0000001F
    295 #define LOCALE_SLONGDATE 0x00000020
    296 #define LOCALE_STIMEFORMAT 0x00001003
    297 #define LOCALE_IDATE 0x00000021
    298 #define LOCALE_ILDATE 0x00000022
    299 #define LOCALE_ITIME 0x00000023
    300 #define LOCALE_ITIMEMARKPOSN 0x00001005
    301 #define LOCALE_ICENTURY 0x00000024
    302 #define LOCALE_ITLZERO 0x00000025
    303 #define LOCALE_IDAYLZERO 0x00000026
    304 #define LOCALE_IMONLZERO 0x00000027
    305 #define LOCALE_S1159 0x00000028
    306 #define LOCALE_S2359 0x00000029
    307 
    308 #define LOCALE_ICALENDARTYPE 0x00001009
    309 #define LOCALE_IOPTIONALCALENDAR 0x0000100B
    310 #define LOCALE_IFIRSTDAYOFWEEK 0x0000100C
    311 #define LOCALE_IFIRSTWEEKOFYEAR 0x0000100D
    312 
    313 #define LOCALE_SDAYNAME1 0x0000002A
    314 #define LOCALE_SDAYNAME2 0x0000002B
    315 #define LOCALE_SDAYNAME3 0x0000002C
    316 #define LOCALE_SDAYNAME4 0x0000002D
    317 #define LOCALE_SDAYNAME5 0x0000002E
    318 #define LOCALE_SDAYNAME6 0x0000002F
    319 #define LOCALE_SDAYNAME7 0x00000030
    320 #define LOCALE_SABBREVDAYNAME1 0x00000031
    321 #define LOCALE_SABBREVDAYNAME2 0x00000032
    322 #define LOCALE_SABBREVDAYNAME3 0x00000033
    323 #define LOCALE_SABBREVDAYNAME4 0x00000034
    324 #define LOCALE_SABBREVDAYNAME5 0x00000035
    325 #define LOCALE_SABBREVDAYNAME6 0x00000036
    326 #define LOCALE_SABBREVDAYNAME7 0x00000037
    327 #define LOCALE_SMONTHNAME1 0x00000038
    328 #define LOCALE_SMONTHNAME2 0x00000039
    329 #define LOCALE_SMONTHNAME3 0x0000003A
    330 #define LOCALE_SMONTHNAME4 0x0000003B
    331 #define LOCALE_SMONTHNAME5 0x0000003C
    332 #define LOCALE_SMONTHNAME6 0x0000003D
    333 #define LOCALE_SMONTHNAME7 0x0000003E
    334 #define LOCALE_SMONTHNAME8 0x0000003F
    335 #define LOCALE_SMONTHNAME9 0x00000040
    336 #define LOCALE_SMONTHNAME10 0x00000041
    337 #define LOCALE_SMONTHNAME11 0x00000042
    338 #define LOCALE_SMONTHNAME12 0x00000043
    339 #define LOCALE_SMONTHNAME13 0x0000100E
    340 #define LOCALE_SABBREVMONTHNAME1 0x00000044
    341 #define LOCALE_SABBREVMONTHNAME2 0x00000045
    342 #define LOCALE_SABBREVMONTHNAME3 0x00000046
    343 #define LOCALE_SABBREVMONTHNAME4 0x00000047
    344 #define LOCALE_SABBREVMONTHNAME5 0x00000048
    345 #define LOCALE_SABBREVMONTHNAME6 0x00000049
    346 #define LOCALE_SABBREVMONTHNAME7 0x0000004A
    347 #define LOCALE_SABBREVMONTHNAME8 0x0000004B
    348 #define LOCALE_SABBREVMONTHNAME9 0x0000004C
    349 #define LOCALE_SABBREVMONTHNAME10 0x0000004D
    350 #define LOCALE_SABBREVMONTHNAME11 0x0000004E
    351 #define LOCALE_SABBREVMONTHNAME12 0x0000004F
    352 #define LOCALE_SABBREVMONTHNAME13 0x0000100F
    353 
    354 #define LOCALE_SPOSITIVESIGN 0x00000050
    355 #define LOCALE_SNEGATIVESIGN 0x00000051
    356 #define LOCALE_IPOSSIGNPOSN 0x00000052
    357 #define LOCALE_INEGSIGNPOSN 0x00000053
    358 #define LOCALE_IPOSSYMPRECEDES 0x00000054
    359 #define LOCALE_IPOSSEPBYSPACE 0x00000055
    360 #define LOCALE_INEGSYMPRECEDES 0x00000056
    361 #define LOCALE_INEGSEPBYSPACE 0x00000057
    362 #define LOCALE_FONTSIGNATURE 0x00000058
    363 #define LOCALE_SISO639LANGNAME 0x00000059
    364 #define LOCALE_SISO3166CTRYNAME 0x0000005A
    365 
    366 #define LOCALE_IDEFAULTEBCDICCODEPAGE 0x00001012
    367 #define LOCALE_IPAPERSIZE 0x0000100A
    368 #define LOCALE_SENGCURRNAME 0x00001007
    369 #define LOCALE_SNATIVECURRNAME 0x00001008
    370 #define LOCALE_SYEARMONTH 0x00001006
    371 #define LOCALE_SSORTNAME 0x00001013
    372 #define LOCALE_IDIGITSUBSTITUTION 0x00001014
    373 
    374 #define TIME_NOMINUTESORSECONDS 0x00000001
    375 #define TIME_NOSECONDS 0x00000002
    376 #define TIME_NOTIMEMARKER 0x00000004
    377 #define TIME_FORCE24HOURFORMAT 0x00000008
    378 
    379 #define DATE_SHORTDATE 0x00000001
    380 #define DATE_LONGDATE 0x00000002
    381 #define DATE_USE_ALT_CALENDAR 0x00000004
    382 #define DATE_YEARMONTH 0x00000008
    383 #define DATE_LTRREADING 0x00000010
    384 #define DATE_RTLREADING 0x00000020
    385 
    386 #define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE
    387 #define CAL_USE_CP_ACP LOCALE_USE_CP_ACP
    388 #define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER
    389 
    390 #define CAL_ICALINTVALUE 0x00000001
    391 #define CAL_SCALNAME 0x00000002
    392 #define CAL_IYEAROFFSETRANGE 0x00000003
    393 #define CAL_SERASTRING 0x00000004
    394 #define CAL_SSHORTDATE 0x00000005
    395 #define CAL_SLONGDATE 0x00000006
    396 #define CAL_SDAYNAME1 0x00000007
    397 #define CAL_SDAYNAME2 0x00000008
    398 #define CAL_SDAYNAME3 0x00000009
    399 #define CAL_SDAYNAME4 0x0000000a
    400 #define CAL_SDAYNAME5 0x0000000b
    401 #define CAL_SDAYNAME6 0x0000000c
    402 #define CAL_SDAYNAME7 0x0000000d
    403 #define CAL_SABBREVDAYNAME1 0x0000000e
    404 #define CAL_SABBREVDAYNAME2 0x0000000f
    405 #define CAL_SABBREVDAYNAME3 0x00000010
    406 #define CAL_SABBREVDAYNAME4 0x00000011
    407 #define CAL_SABBREVDAYNAME5 0x00000012
    408 #define CAL_SABBREVDAYNAME6 0x00000013
    409 #define CAL_SABBREVDAYNAME7 0x00000014
    410 #define CAL_SMONTHNAME1 0x00000015
    411 #define CAL_SMONTHNAME2 0x00000016
    412 #define CAL_SMONTHNAME3 0x00000017
    413 #define CAL_SMONTHNAME4 0x00000018
    414 #define CAL_SMONTHNAME5 0x00000019
    415 #define CAL_SMONTHNAME6 0x0000001a
    416 #define CAL_SMONTHNAME7 0x0000001b
    417 #define CAL_SMONTHNAME8 0x0000001c
    418 #define CAL_SMONTHNAME9 0x0000001d
    419 #define CAL_SMONTHNAME10 0x0000001e
    420 #define CAL_SMONTHNAME11 0x0000001f
    421 #define CAL_SMONTHNAME12 0x00000020
    422 #define CAL_SMONTHNAME13 0x00000021
    423 #define CAL_SABBREVMONTHNAME1 0x00000022
    424 #define CAL_SABBREVMONTHNAME2 0x00000023
    425 #define CAL_SABBREVMONTHNAME3 0x00000024
    426 #define CAL_SABBREVMONTHNAME4 0x00000025
    427 #define CAL_SABBREVMONTHNAME5 0x00000026
    428 #define CAL_SABBREVMONTHNAME6 0x00000027
    429 #define CAL_SABBREVMONTHNAME7 0x00000028
    430 #define CAL_SABBREVMONTHNAME8 0x00000029
    431 #define CAL_SABBREVMONTHNAME9 0x0000002a
    432 #define CAL_SABBREVMONTHNAME10 0x0000002b
    433 #define CAL_SABBREVMONTHNAME11 0x0000002c
    434 #define CAL_SABBREVMONTHNAME12 0x0000002d
    435 #define CAL_SABBREVMONTHNAME13 0x0000002e
    436 #define CAL_SYEARMONTH 0x0000002f
    437 #define CAL_ITWODIGITYEARMAX 0x00000030
    438 
    439 #define ENUM_ALL_CALENDARS 0xffffffff
    440 
    441 #define CAL_GREGORIAN 1
    442 #define CAL_GREGORIAN_US 2
    443 #define CAL_JAPAN 3
    444 #define CAL_TAIWAN 4
    445 #define CAL_KOREA 5
    446 #define CAL_HIJRI 6
    447 #define CAL_THAI 7
    448 #define CAL_HEBREW 8
    449 #define CAL_GREGORIAN_ME_FRENCH 9
    450 #define CAL_GREGORIAN_ARABIC 10
    451 #define CAL_GREGORIAN_XLIT_ENGLISH 11
    452 #define CAL_GREGORIAN_XLIT_FRENCH 12
    453 #if (_WIN32_WINNT >= 0x0600)
    454 #define CAL_UMALQURA 23
    455 #endif /* (_WIN32_WINNT >= 0x0600) */
    456 
    457 #define LGRPID_WESTERN_EUROPE 0x0001
    458 #define LGRPID_CENTRAL_EUROPE 0x0002
    459 #define LGRPID_BALTIC 0x0003
    460 #define LGRPID_GREEK 0x0004
    461 #define LGRPID_CYRILLIC 0x0005
    462 #define LGRPID_TURKISH 0x0006
    463 #define LGRPID_JAPANESE 0x0007
    464 #define LGRPID_KOREAN 0x0008
    465 #define LGRPID_TRADITIONAL_CHINESE 0x0009
    466 #define LGRPID_SIMPLIFIED_CHINESE 0x000a
    467 #define LGRPID_THAI 0x000b
    468 #define LGRPID_HEBREW 0x000c
    469 #define LGRPID_ARABIC 0x000d
    470 #define LGRPID_VIETNAMESE 0x000e
    471 #define LGRPID_INDIC 0x000f
    472 #define LGRPID_GEORGIAN 0x0010
    473 #define LGRPID_ARMENIAN 0x0011
    474 #define IS_HIGH_SURROGATE(c) (((c) & 0xFC00) == 0xD800)
    475 #define IS_LOW_SURROGATE(c) (((c) & 0xFC00) == 0xDC00)
    476 #define IS_SURROGATE_PAIR(hc,lc) (IS_HIGH_SURROGATE(hc) && IS_LOW_SURROGATE(lc))
    477 
    478 #define IDN_ALLOW_UNASSIGNED        0x1
    479 #define IDN_USE_STD3_ASCII_RULES    0x2
    480 
    481   typedef DWORD LGRPID;
    482   typedef DWORD LCTYPE;
    483   typedef DWORD CALTYPE;
    484   typedef DWORD CALID;
    485 
    486   typedef struct _cpinfo {
    487     UINT MaxCharSize;
    488     BYTE DefaultChar[MAX_DEFAULTCHAR];
    489     BYTE LeadByte[MAX_LEADBYTES];
    490   } CPINFO,*LPCPINFO;
    491 
    492   typedef struct _cpinfoexA {
    493     UINT MaxCharSize;
    494     BYTE DefaultChar[MAX_DEFAULTCHAR];
    495     BYTE LeadByte[MAX_LEADBYTES];
    496     WCHAR UnicodeDefaultChar;
    497     UINT CodePage;
    498     CHAR CodePageName[MAX_PATH];
    499   } CPINFOEXA,*LPCPINFOEXA;
    500 
    501   typedef struct _cpinfoexW {
    502     UINT MaxCharSize;
    503     BYTE DefaultChar[MAX_DEFAULTCHAR];
    504     BYTE LeadByte[MAX_LEADBYTES];
    505     WCHAR UnicodeDefaultChar;
    506     UINT CodePage;
    507     WCHAR CodePageName[MAX_PATH];
    508   } CPINFOEXW,*LPCPINFOEXW;
    509 
    510   __MINGW_TYPEDEF_AW(CPINFOEX)
    511   __MINGW_TYPEDEF_AW(LPCPINFOEX)
    512 
    513   typedef struct _numberfmtA {
    514     UINT NumDigits;
    515     UINT LeadingZero;
    516     UINT Grouping;
    517     LPSTR lpDecimalSep;
    518     LPSTR lpThousandSep;
    519     UINT NegativeOrder;
    520   } NUMBERFMTA,*LPNUMBERFMTA;
    521 
    522   typedef struct _numberfmtW {
    523     UINT NumDigits;
    524     UINT LeadingZero;
    525     UINT Grouping;
    526     LPWSTR lpDecimalSep;
    527     LPWSTR lpThousandSep;
    528     UINT NegativeOrder;
    529   } NUMBERFMTW,*LPNUMBERFMTW;
    530 
    531   __MINGW_TYPEDEF_AW(NUMBERFMT)
    532   __MINGW_TYPEDEF_AW(LPNUMBERFMT)
    533 
    534   typedef struct _currencyfmtA {
    535     UINT NumDigits;
    536     UINT LeadingZero;
    537     UINT Grouping;
    538     LPSTR lpDecimalSep;
    539     LPSTR lpThousandSep;
    540     UINT NegativeOrder;
    541     UINT PositiveOrder;
    542     LPSTR lpCurrencySymbol;
    543   } CURRENCYFMTA,*LPCURRENCYFMTA;
    544 
    545   typedef struct _currencyfmtW {
    546     UINT NumDigits;
    547     UINT LeadingZero;
    548     UINT Grouping;
    549     LPWSTR lpDecimalSep;
    550     LPWSTR lpThousandSep;
    551     UINT NegativeOrder;
    552     UINT PositiveOrder;
    553     LPWSTR lpCurrencySymbol;
    554   } CURRENCYFMTW,*LPCURRENCYFMTW;
    555 
    556   __MINGW_TYPEDEF_AW(CURRENCYFMT)
    557   __MINGW_TYPEDEF_AW(LPCURRENCYFMT)
    558 
    559   enum SYSNLS_FUNCTION {
    560     COMPARE_STRING = 0x0001
    561   };
    562 
    563   typedef DWORD NLS_FUNCTION;
    564 
    565   typedef struct _nlsversioninfo{
    566     DWORD dwNLSVersionInfoSize;
    567     DWORD dwNLSVersion;
    568     DWORD dwDefinedVersion;
    569   } NLSVERSIONINFO,*LPNLSVERSIONINFO;
    570 
    571   typedef LONG GEOID;
    572   typedef DWORD GEOTYPE;
    573   typedef DWORD GEOCLASS;
    574 
    575 #define GEOID_NOT_AVAILABLE -1
    576 
    577   enum SYSGEOTYPE {
    578     GEO_NATION = 0x0001,GEO_LATITUDE = 0x0002,GEO_LONGITUDE = 0x0003,GEO_ISO2 = 0x0004,GEO_ISO3 = 0x0005,GEO_RFC1766 = 0x0006,GEO_LCID = 0x0007,
    579     GEO_FRIENDLYNAME= 0x0008,GEO_OFFICIALNAME= 0x0009,GEO_TIMEZONES = 0x000A,GEO_OFFICIALLANGUAGES = 0x000B
    580   };
    581 
    582   enum SYSGEOCLASS {
    583     GEOCLASS_NATION = 16,GEOCLASS_REGION = 14
    584   };
    585 
    586   typedef enum  _NORM_FORM  {
    587     NormalizationOther   = 0,
    588     NormalizationC       = 0x1,
    589     NormalizationD       = 0x2,
    590     NormalizationKC      = 0x5,
    591     NormalizationKD      = 0x6
    592   } NORM_FORM;
    593 
    594   typedef WINBOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCA)(LGRPID,LPSTR,LPSTR,DWORD,LONG_PTR);
    595   typedef WINBOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCA)(LGRPID,LCID,LPSTR,LONG_PTR);
    596   typedef WINBOOL (CALLBACK *UILANGUAGE_ENUMPROCA)(LPSTR,LONG_PTR);
    597   typedef WINBOOL (CALLBACK *LOCALE_ENUMPROCA)(LPSTR);
    598   typedef WINBOOL (CALLBACK *CODEPAGE_ENUMPROCA)(LPSTR);
    599   typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCA)(LPSTR);
    600   typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCEXA)(LPSTR,CALID);
    601   typedef WINBOOL (CALLBACK *TIMEFMT_ENUMPROCA)(LPSTR);
    602   typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCA)(LPSTR);
    603   typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCEXA)(LPSTR,CALID);
    604   typedef WINBOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCW)(LGRPID,LPWSTR,LPWSTR,DWORD,LONG_PTR);
    605   typedef WINBOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCW)(LGRPID,LCID,LPWSTR,LONG_PTR);
    606   typedef WINBOOL (CALLBACK *UILANGUAGE_ENUMPROCW)(LPWSTR,LONG_PTR);
    607   typedef WINBOOL (CALLBACK *LOCALE_ENUMPROCW)(LPWSTR);
    608   typedef WINBOOL (CALLBACK *CODEPAGE_ENUMPROCW)(LPWSTR);
    609   typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCW)(LPWSTR);
    610   typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCEXW)(LPWSTR,CALID);
    611   typedef WINBOOL (CALLBACK *TIMEFMT_ENUMPROCW)(LPWSTR);
    612   typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCW)(LPWSTR);
    613   typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCEXW)(LPWSTR,CALID);
    614   typedef WINBOOL (CALLBACK *GEO_ENUMPROC)(GEOID);
    615 
    616 #define LANGUAGEGROUP_ENUMPROC __MINGW_NAME_AW(LANGUAGEGROUP_ENUMPROC)
    617 #define LANGGROUPLOCALE_ENUMPROC __MINGW_NAME_AW(LANGGROUPLOCALE_ENUMPROC)
    618 #define UILANGUAGE_ENUMPROC __MINGW_NAME_AW(UILANGUAGE_ENUMPROC)
    619 #define LOCALE_ENUMPROC __MINGW_NAME_AW(LOCALE_ENUMPROC)
    620 #define CODEPAGE_ENUMPROC __MINGW_NAME_AW(CODEPAGE_ENUMPROC)
    621 #define DATEFMT_ENUMPROC __MINGW_NAME_AW(DATEFMT_ENUMPROC)
    622 #define DATEFMT_ENUMPROCEX __MINGW_NAME_AW(DATEFMT_ENUMPROCEX)
    623 #define TIMEFMT_ENUMPROC __MINGW_NAME_AW(TIMEFMT_ENUMPROC)
    624 #define CALINFO_ENUMPROC __MINGW_NAME_AW(CALINFO_ENUMPROC)
    625 #define CALINFO_ENUMPROCEX __MINGW_NAME_AW(CALINFO_ENUMPROCEX)
    626 
    627 #define GetCPInfoEx __MINGW_NAME_AW(GetCPInfoEx)
    628 #define CompareString __MINGW_NAME_AW(CompareString)
    629 #define LCMapString __MINGW_NAME_AW(LCMapString)
    630 #define GetLocaleInfo __MINGW_NAME_AW(GetLocaleInfo)
    631 #define SetLocaleInfo __MINGW_NAME_AW(SetLocaleInfo)
    632 #define GetCalendarInfo __MINGW_NAME_AW(GetCalendarInfo)
    633 #define SetCalendarInfo __MINGW_NAME_AW(SetCalendarInfo)
    634 #define GetTimeFormat __MINGW_NAME_AW(GetTimeFormat)
    635 #define GetDateFormat __MINGW_NAME_AW(GetDateFormat)
    636 #define GetNumberFormat __MINGW_NAME_AW(GetNumberFormat)
    637 #define GetCurrencyFormat __MINGW_NAME_AW(GetCurrencyFormat)
    638 #define EnumCalendarInfo __MINGW_NAME_AW(EnumCalendarInfo)
    639 #define EnumCalendarInfoEx __MINGW_NAME_AW(EnumCalendarInfoEx)
    640 #define EnumTimeFormats __MINGW_NAME_AW(EnumTimeFormats)
    641 #define EnumDateFormats __MINGW_NAME_AW(EnumDateFormats)
    642 #define EnumDateFormatsEx __MINGW_NAME_AW(EnumDateFormatsEx)
    643 #define GetGeoInfo __MINGW_NAME_AW(GetGeoInfo)
    644 #define GetStringTypeEx __MINGW_NAME_AW(GetStringTypeEx)
    645 #define FoldString __MINGW_NAME_AW(FoldString)
    646 #define EnumSystemLanguageGroups __MINGW_NAME_AW(EnumSystemLanguageGroups)
    647 #define EnumLanguageGroupLocales __MINGW_NAME_AW(EnumLanguageGroupLocales)
    648 #define EnumUILanguages __MINGW_NAME_AW(EnumUILanguages)
    649 #define EnumSystemLocales __MINGW_NAME_AW(EnumSystemLocales)
    650 #define EnumSystemCodePages __MINGW_NAME_AW(EnumSystemCodePages)
    651 
    652   WINBASEAPI WINBOOL WINAPI IsValidCodePage(UINT CodePage);
    653   WINBASEAPI UINT WINAPI GetACP(void);
    654   WINBASEAPI UINT WINAPI GetOEMCP(void);
    655   WINBASEAPI WINBOOL WINAPI GetCPInfo(UINT CodePage,LPCPINFO lpCPInfo);
    656   WINBASEAPI WINBOOL WINAPI GetCPInfoExA(UINT CodePage,DWORD dwFlags,LPCPINFOEXA lpCPInfoEx);
    657   WINBASEAPI WINBOOL WINAPI GetCPInfoExW(UINT CodePage,DWORD dwFlags,LPCPINFOEXW lpCPInfoEx);
    658   WINBASEAPI WINBOOL WINAPI IsDBCSLeadByte(BYTE TestChar);
    659   WINBASEAPI WINBOOL WINAPI IsDBCSLeadByteEx(UINT CodePage,BYTE TestChar);
    660   WINBASEAPI int WINAPI MultiByteToWideChar(UINT CodePage,DWORD dwFlags,LPCSTR lpMultiByteStr,int cbMultiByte,LPWSTR lpWideCharStr,int cchWideChar);
    661   WINBASEAPI int WINAPI WideCharToMultiByte(UINT CodePage,DWORD dwFlags,LPCWSTR lpWideCharStr,int cchWideChar,LPSTR lpMultiByteStr,int cbMultiByte,LPCSTR lpDefaultChar,LPBOOL lpUsedDefaultChar);
    662   WINBASEAPI int WINAPI CompareStringA(LCID Locale,DWORD dwCmpFlags,LPCSTR lpString1,int cchCount1,LPCSTR lpString2,int cchCount2);
    663   WINBASEAPI int WINAPI CompareStringW(LCID Locale,DWORD dwCmpFlags,LPCWSTR lpString1,int cchCount1,LPCWSTR lpString2,int cchCount2);
    664   WINBASEAPI int WINAPI LCMapStringA(LCID Locale,DWORD dwMapFlags,LPCSTR lpSrcStr,int cchSrc,LPSTR lpDestStr,int cchDest);
    665   WINBASEAPI int WINAPI LCMapStringW(LCID Locale,DWORD dwMapFlags,LPCWSTR lpSrcStr,int cchSrc,LPWSTR lpDestStr,int cchDest);
    666   WINBASEAPI int WINAPI GetLocaleInfoA(LCID Locale,LCTYPE LCType,LPSTR lpLCData,int cchData);
    667   WINBASEAPI int WINAPI GetLocaleInfoW(LCID Locale,LCTYPE LCType,LPWSTR lpLCData,int cchData);
    668   WINBASEAPI WINBOOL WINAPI SetLocaleInfoA(LCID Locale,LCTYPE LCType,LPCSTR lpLCData);
    669   WINBASEAPI WINBOOL WINAPI SetLocaleInfoW(LCID Locale,LCTYPE LCType,LPCWSTR lpLCData);
    670   WINBASEAPI int WINAPI GetCalendarInfoA(LCID Locale,CALID Calendar,CALTYPE CalType,LPSTR lpCalData,int cchData,LPDWORD lpValue);
    671   WINBASEAPI int WINAPI GetCalendarInfoW(LCID Locale,CALID Calendar,CALTYPE CalType,LPWSTR lpCalData,int cchData,LPDWORD lpValue);
    672   WINBASEAPI WINBOOL WINAPI SetCalendarInfoA(LCID Locale,CALID Calendar,CALTYPE CalType,LPCSTR lpCalData);
    673   WINBASEAPI WINBOOL WINAPI SetCalendarInfoW(LCID Locale,CALID Calendar,CALTYPE CalType,LPCWSTR lpCalData);
    674   WINBASEAPI int WINAPI GetTimeFormatA(LCID Locale,DWORD dwFlags,CONST SYSTEMTIME *lpTime,LPCSTR lpFormat,LPSTR lpTimeStr,int cchTime);
    675   WINBASEAPI int WINAPI GetTimeFormatW(LCID Locale,DWORD dwFlags,CONST SYSTEMTIME *lpTime,LPCWSTR lpFormat,LPWSTR lpTimeStr,int cchTime);
    676   WINBASEAPI int WINAPI GetDateFormatA(LCID Locale,DWORD dwFlags,CONST SYSTEMTIME *lpDate,LPCSTR lpFormat,LPSTR lpDateStr,int cchDate);
    677   WINBASEAPI int WINAPI GetDateFormatW(LCID Locale,DWORD dwFlags,CONST SYSTEMTIME *lpDate,LPCWSTR lpFormat,LPWSTR lpDateStr,int cchDate);
    678   WINBASEAPI int WINAPI GetNumberFormatA(LCID Locale,DWORD dwFlags,LPCSTR lpValue,CONST NUMBERFMTA *lpFormat,LPSTR lpNumberStr,int cchNumber);
    679   WINBASEAPI int WINAPI GetNumberFormatW(LCID Locale,DWORD dwFlags,LPCWSTR lpValue,CONST NUMBERFMTW *lpFormat,LPWSTR lpNumberStr,int cchNumber);
    680   WINBASEAPI int WINAPI GetCurrencyFormatA(LCID Locale,DWORD dwFlags,LPCSTR lpValue,CONST CURRENCYFMTA *lpFormat,LPSTR lpCurrencyStr,int cchCurrency);
    681   WINBASEAPI int WINAPI GetCurrencyFormatW(LCID Locale,DWORD dwFlags,LPCWSTR lpValue,CONST CURRENCYFMTW *lpFormat,LPWSTR lpCurrencyStr,int cchCurrency);
    682   WINBASEAPI WINBOOL WINAPI EnumCalendarInfoA(CALINFO_ENUMPROCA lpCalInfoEnumProc,LCID Locale,CALID Calendar,CALTYPE CalType);
    683   WINBASEAPI WINBOOL WINAPI EnumCalendarInfoW(CALINFO_ENUMPROCW lpCalInfoEnumProc,LCID Locale,CALID Calendar,CALTYPE CalType);
    684   WINBASEAPI WINBOOL WINAPI EnumCalendarInfoExA(CALINFO_ENUMPROCEXA lpCalInfoEnumProcEx,LCID Locale,CALID Calendar,CALTYPE CalType);
    685   WINBASEAPI WINBOOL WINAPI EnumCalendarInfoExW(CALINFO_ENUMPROCEXW lpCalInfoEnumProcEx,LCID Locale,CALID Calendar,CALTYPE CalType);
    686   WINBASEAPI WINBOOL WINAPI EnumTimeFormatsA(TIMEFMT_ENUMPROCA lpTimeFmtEnumProc,LCID Locale,DWORD dwFlags);
    687   WINBASEAPI WINBOOL WINAPI EnumTimeFormatsW(TIMEFMT_ENUMPROCW lpTimeFmtEnumProc,LCID Locale,DWORD dwFlags);
    688   WINBASEAPI WINBOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA lpDateFmtEnumProc,LCID Locale,DWORD dwFlags);
    689   WINBASEAPI WINBOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW lpDateFmtEnumProc,LCID Locale,DWORD dwFlags);
    690   WINBASEAPI WINBOOL WINAPI EnumDateFormatsExA(DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx,LCID Locale,DWORD dwFlags);
    691   WINBASEAPI WINBOOL WINAPI EnumDateFormatsExW(DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx,LCID Locale,DWORD dwFlags);
    692   WINBASEAPI WINBOOL WINAPI IsValidLanguageGroup(LGRPID LanguageGroup,DWORD dwFlags);
    693   WINBASEAPI WINBOOL WINAPI GetNLSVersion(NLS_FUNCTION Function,LCID Locale,LPNLSVERSIONINFO lpVersionInformation);
    694   WINBASEAPI WINBOOL WINAPI IsNLSDefinedString(NLS_FUNCTION Function,DWORD dwFlags,LPNLSVERSIONINFO lpVersionInformation,LPCWSTR lpString,INT cchStr);
    695   WINBASEAPI WINBOOL WINAPI IsValidLocale(LCID Locale,DWORD dwFlags);
    696   WINBASEAPI int WINAPI GetGeoInfoA(GEOID Location,GEOTYPE GeoType,LPSTR lpGeoData,int cchData,LANGID LangId);
    697   WINBASEAPI int WINAPI GetGeoInfoW(GEOID Location,GEOTYPE GeoType,LPWSTR lpGeoData,int cchData,LANGID LangId);
    698   WINBASEAPI WINBOOL WINAPI EnumSystemGeoID(GEOCLASS GeoClass,GEOID ParentGeoId,GEO_ENUMPROC lpGeoEnumProc);
    699   WINBASEAPI GEOID WINAPI GetUserGeoID(GEOCLASS GeoClass);
    700   WINBASEAPI WINBOOL WINAPI SetUserGeoID(GEOID GeoId);
    701   WINBASEAPI LCID WINAPI ConvertDefaultLocale(LCID Locale);
    702   WINBASEAPI LCID WINAPI GetThreadLocale(void);
    703   WINBASEAPI WINBOOL WINAPI SetThreadLocale(LCID Locale);
    704   WINBASEAPI LANGID WINAPI GetSystemDefaultUILanguage(void);
    705   WINBASEAPI LANGID WINAPI GetUserDefaultUILanguage(void);
    706   WINBASEAPI LANGID WINAPI GetSystemDefaultLangID(void);
    707   WINBASEAPI LANGID WINAPI GetUserDefaultLangID(void);
    708   WINBASEAPI LCID WINAPI GetSystemDefaultLCID(void);
    709   WINBASEAPI LCID WINAPI GetUserDefaultLCID(void);
    710   WINBASEAPI WINBOOL WINAPI GetStringTypeExA(LCID Locale,DWORD dwInfoType,LPCSTR lpSrcStr,int cchSrc,LPWORD lpCharType);
    711   WINBASEAPI WINBOOL WINAPI GetStringTypeExW(LCID Locale,DWORD dwInfoType,LPCWSTR lpSrcStr,int cchSrc,LPWORD lpCharType);
    712   WINBASEAPI WINBOOL WINAPI GetStringTypeA(LCID Locale,DWORD dwInfoType,LPCSTR lpSrcStr,int cchSrc,LPWORD lpCharType);
    713   WINBASEAPI WINBOOL WINAPI GetStringTypeW(DWORD dwInfoType,LPCWSTR lpSrcStr,int cchSrc,LPWORD lpCharType);
    714   WINBASEAPI int WINAPI FoldStringA(DWORD dwMapFlags,LPCSTR lpSrcStr,int cchSrc,LPSTR lpDestStr,int cchDest);
    715   WINBASEAPI int WINAPI FoldStringW(DWORD dwMapFlags,LPCWSTR lpSrcStr,int cchSrc,LPWSTR lpDestStr,int cchDest);
    716   WINBASEAPI WINBOOL WINAPI EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA lpLanguageGroupEnumProc,DWORD dwFlags,LONG_PTR lParam);
    717   WINBASEAPI WINBOOL WINAPI EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW lpLanguageGroupEnumProc,DWORD dwFlags,LONG_PTR lParam);
    718   WINBASEAPI WINBOOL WINAPI EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA lpLangGroupLocaleEnumProc,LGRPID LanguageGroup,DWORD dwFlags,LONG_PTR lParam);
    719   WINBASEAPI WINBOOL WINAPI EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW lpLangGroupLocaleEnumProc,LGRPID LanguageGroup,DWORD dwFlags,LONG_PTR lParam);
    720   WINBASEAPI WINBOOL WINAPI EnumUILanguagesA(UILANGUAGE_ENUMPROCA lpUILanguageEnumProc,DWORD dwFlags,LONG_PTR lParam);
    721   WINBASEAPI WINBOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW lpUILanguageEnumProc,DWORD dwFlags,LONG_PTR lParam);
    722   WINBASEAPI WINBOOL WINAPI EnumSystemLocalesA(LOCALE_ENUMPROCA lpLocaleEnumProc,DWORD dwFlags);
    723   WINBASEAPI WINBOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW lpLocaleEnumProc,DWORD dwFlags);
    724   WINBASEAPI WINBOOL WINAPI EnumSystemCodePagesA(CODEPAGE_ENUMPROCA lpCodePageEnumProc,DWORD dwFlags);
    725   WINBASEAPI WINBOOL WINAPI EnumSystemCodePagesW(CODEPAGE_ENUMPROCW lpCodePageEnumProc,DWORD dwFlags);
    726   WINBASEAPI WINBOOL WINAPI IsNormalizedString(NORM_FORM NormForm,LPCWSTR lpString,int cwLength);
    727   WINBASEAPI int WINAPI NormalizeString(NORM_FORM NormForm,LPCWSTR lpSrcString,int cwSrcLength,LPWSTR lpDstString,int cwDstLength);
    728   WINBASEAPI int WINAPI IdnToAscii(DWORD dwFlags,LPCWSTR lpUnicodeCharStr,int cchUnicodeChar,LPWSTR lpASCIICharStr,int cchASCIIChar);
    729   WINBASEAPI int WINAPI IdnToNameprepUnicode(DWORD dwFlags,LPCWSTR lpUnicodeCharStr,int cchUnicodeChar,LPWSTR lpNameprepCharStr,int cchNameprepChar);
    730   WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags,LPCWSTR lpASCIICharStr,int cchASCIIChar,LPWSTR lpUnicodeCharStr,int cchUnicodeChar);
    731 
    732 WINBASEAPI LANGID WINAPI SetThreadUILanguage(
    733   LANGID LangId
    734 );
    735 
    736 #if (_WIN32_WINNT >= 0x0600)
    737 
    738 typedef struct _FILEMUIINFO {
    739   DWORD dwSize;
    740   DWORD dwVersion;
    741   DWORD dwFileType;
    742   BYTE  pChecksum[16];
    743   BYTE  pServiceChecksum[16];
    744   DWORD dwLanguageNameOffset;
    745   DWORD dwTypeIDMainSize;
    746   DWORD dwTypeIDMainOffset;
    747   DWORD dwTypeNameMainOffset;
    748   DWORD dwTypeIDMUISize;
    749   DWORD dwTypeIDMUIOffset;
    750   DWORD dwTypeNameMUIOffset;
    751   BYTE  abBuffer[8];
    752 } FILEMUIINFO, *PFILEMUIINFO;
    753 
    754 typedef struct _nlsversioninfoex {
    755   DWORD dwNLSVersionInfoSize;
    756   DWORD dwNLSVersion;
    757   DWORD dwDefinedVersion;
    758   DWORD dwEffectiveId;
    759   GUID  guidCustomVersion;
    760 } NLSVERSIONINFOEX, *LPNLSVERSIONINFOEX;
    761 
    762 WINBASEAPI int WINAPI CompareStringEx(
    763   LPCWSTR lpLocaleName,
    764   DWORD dwCmpFlags,
    765   LPCWSTR lpString1,
    766   int cchCount1,
    767   LPCWSTR lpString2,
    768   int cchCount2,
    769   LPNLSVERSIONINFO lpVersionInformation,
    770   LPVOID lpReserved,
    771   LPARAM lParam
    772 );
    773 
    774 WINBASEAPI int WINAPI CompareStringOrdinal(
    775   LPCWSTR lpString1,
    776   int cchCount1,
    777   LPCWSTR lpString2,
    778   int cchCount2,
    779   WINBOOL bIgnoreCase
    780 );
    781 
    782 typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCEXEX)(
    783   LPWSTR lpCalendarInfoString,
    784   CALID Calendar,
    785   LPWSTR lpReserved,
    786   LPARAM lParam
    787 );
    788 
    789 typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCEXEX)(
    790   LPWSTR lpDateFormatString,
    791   CALID CalendarID,
    792   LPARAM lParam
    793 );
    794 
    795 WINBASEAPI WINBOOL WINAPI EnumCalendarInfoExEx(
    796   CALINFO_ENUMPROCEXEX pCalInfoEnumProcExEx,
    797   LPCWSTR lpLocaleName,
    798   CALID Calendar,
    799   LPCWSTR lpReserved,
    800   CALTYPE CalType,
    801   LPARAM lParam
    802 );
    803 
    804 WINBASEAPI WINBOOL WINAPI EnumDateFormatsExEx(
    805   DATEFMT_ENUMPROCEXEX lpDateFmtEnumProcExEx,
    806   LPCWSTR lpLocaleName,
    807   DWORD dwFlags,
    808   LPARAM lParam
    809 );
    810 
    811 typedef WINBOOL (CALLBACK *LOCALE_ENUMPROCEX)(
    812   LPWSTR lpLocaleString,
    813   DWORD dwFlags,
    814   LPARAM lParam
    815 );
    816 
    817 WINBASEAPI WINBOOL WINAPI EnumSystemLocalesEx(
    818   LOCALE_ENUMPROCEX lpLocaleEnumProcEx,
    819   DWORD dwFlags,
    820   LPARAM lParam,
    821   LPVOID lpReserved
    822 );
    823 
    824 typedef WINBOOL (CALLBACK *TIMEFMT_ENUMPROCEX)(
    825   LPWSTR lpTimeFormatString,
    826   LPARAM lParam
    827 );
    828 
    829 WINBASEAPI WINBOOL WINAPI EnumTimeFormatsEx(
    830   TIMEFMT_ENUMPROCEX lpTimeFmtEnumProcEx,
    831   LPCWSTR lpLocaleName,
    832   DWORD dwFlags,
    833   LPARAM lParam
    834 );
    835 
    836 WINBASEAPI int WINAPI FindNLSString(
    837   LCID Locale,
    838   DWORD dwFindNLSStringFlags,
    839   LPCWSTR lpStringSource,
    840   int cchSource,
    841   LPCWSTR lpStringValue,
    842   int cchValue,
    843   LPINT pcchFound
    844 );
    845 
    846 WINBASEAPI int WINAPI FindNLSStringEx(
    847   LPCWSTR lpLocaleName,
    848   DWORD dwFindNLSStringFlags,
    849   LPCWSTR lpStringSource,
    850   int cchSource,
    851   LPCWSTR lpStringValue,
    852   int cchValue,
    853   LPINT pcchFound,
    854   LPNLSVERSIONINFO lpVersionInformation,
    855   LPVOID lpReserved,
    856   LPARAM lParam
    857 );
    858 
    859 WINBASEAPI int WINAPI GetDateFormatEx(
    860   LPCWSTR lpLocaleName,
    861   DWORD dwFlags,
    862   const SYSTEMTIME *lpDate,
    863   LPCWSTR lpFormat,
    864   LPWSTR lpDateStr,
    865   int cchDate,
    866   LPCWSTR lpCalendar
    867 );
    868 
    869 WINBASEAPI int WINAPI GetDurationFormat(
    870   LCID Locale,
    871   DWORD dwFlags,
    872   const SYSTEMTIME *lpDuration,
    873   ULONGLONG ullDuration,
    874   LPCWSTR lpFormat,
    875   LPWSTR lpDurationStr,
    876   int cchDuration
    877 );
    878 
    879 WINBASEAPI int WINAPI GetDurationFormatEx(
    880   LPCWSTR lpLocaleName,
    881   DWORD dwFlags,
    882   const SYSTEMTIME *lpDuration,
    883   ULONGLONG ullDuration,
    884   LPCWSTR lpFormat,
    885   LPWSTR lpDurationStr,
    886   int cchDuration
    887 );
    888 
    889 WINBASEAPI WINBOOL WINAPI GetFileMUIInfo(
    890   DWORD dwFlags,
    891   PCWSTR pcwszFilePath,
    892   PFILEMUIINFO pFileMUIInfo,
    893   DWORD *pcbFileMUIInfo
    894 );
    895 
    896 WINBASEAPI WINBOOL WINAPI GetFileMUIPath(
    897   DWORD dwFlags,
    898   PCWSTR pcwszFilePath,
    899   PWSTR pwszLanguage,
    900   PULONG pcchLanguage,
    901   PWSTR pwszFileMUIPath,
    902   PULONG pcchFileMUIPath,
    903   PULONGLONG pululEnumerator
    904 );
    905 
    906 WINBASEAPI int WINAPI GetLocaleInfoEx(
    907   LPCWSTR lpLocaleName,
    908   LCTYPE LCType,
    909   LPWSTR lpLCData,
    910   int cchData
    911 );
    912 
    913 WINBASEAPI WINBOOL WINAPI GetNLSVersion(
    914   NLS_FUNCTION Function,
    915   LCID Locale,
    916   LPNLSVERSIONINFO lpVersionInformation
    917 );
    918 
    919 WINBASEAPI WINBOOL WINAPI GetNLSVersionEx(
    920   NLS_FUNCTION function,
    921   LPCWSTR lpLocaleName,
    922   LPNLSVERSIONINFOEX lpVersionInformation
    923 );
    924 
    925 WINBASEAPI int WINAPI GetNumberFormatEx(
    926   LPCWSTR lpLocaleName,
    927   DWORD dwFlags,
    928   LPCWSTR lpValue,
    929   const NUMBERFMT *lpFormat,
    930   LPWSTR lpNumberStr,
    931   int cchNumber
    932 );
    933 
    934 WINBASEAPI int WINAPI GetStringScripts(
    935   DWORD dwFlags,
    936   LPCWSTR lpString,
    937   int cchString,
    938   LPWSTR lpScripts,
    939   int cchScripts
    940 );
    941 
    942 WINBASEAPI int WINAPI GetSystemDefaultLocaleName(
    943   LPWSTR lpLocaleName,
    944   int cchLocaleName
    945 );
    946 
    947 typedef WCHAR *PZZWSTR; /*__nullnullterminated*/
    948 typedef CONST WCHAR *PCZZWSTR; /*__nullnullterminated*/
    949 
    950 WINBASEAPI WINBOOL WINAPI GetSystemPreferredUILanguages(
    951   DWORD dwFlags,
    952   PULONG pulNumLanguages,
    953   PZZWSTR pwszLanguagesBuffer,
    954   PULONG pcchLanguagesBuffer
    955 );
    956 
    957 WINBASEAPI WINBOOL WINAPI GetThreadPreferredUILanguages(
    958   DWORD dwFlags,
    959   PULONG pulNumLanguages,
    960   PZZWSTR pwszLanguagesBuffer,
    961   PULONG pcchLanguagesBuffer
    962 );
    963 
    964 WINBASEAPI LANGID WINAPI GetThreadUILanguage(void);
    965 
    966 WINBASEAPI WINBOOL WINAPI SetThreadPreferredUILanguages(
    967   DWORD dwFlags,
    968   PCZZWSTR pwszLanguagesBuffer,
    969   PULONG pulNumLanguages
    970 );
    971 
    972 WINBASEAPI int WINAPI GetTimeFormatEx(
    973   LPCWSTR lpLocaleName,
    974   DWORD dwFlags,
    975   const SYSTEMTIME *lpTime,
    976   LPCWSTR lpFormat,
    977   LPWSTR lpTimeStr,
    978   int cchTime
    979 );
    980 
    981 WINBASEAPI WINBOOL WINAPI GetUILanguageInfo(
    982   DWORD dwFlags,
    983   PCZZWSTR pwmszLanguage,
    984   PZZWSTR pwszFallbackLanguages,
    985   PDWORD pcchFallbackLanguages,
    986   PDWORD pdwAttributes
    987 );
    988 
    989 WINBASEAPI int WINAPI GetUserDefaultLocaleName(
    990   LPWSTR lpLocaleName,
    991   int cchLocaleName
    992 );
    993 
    994 WINBASEAPI WINBOOL WINAPI GetUserPreferredUILanguages(
    995   DWORD dwFlags,
    996   PULONG pulNumLanguages,
    997   PZZWSTR pwszLanguagesBuffer,
    998   PULONG pcchLanguagesBuffer
    999 );
   1000 
   1001 WINBASEAPI int WINAPI LCIDToLocaleName(
   1002   LCID Locale,
   1003   LPWSTR lpName,
   1004   int cchName,
   1005   DWORD dwFlags
   1006 );
   1007 
   1008 WINBASEAPI int WINAPI LCMapStringEx(
   1009   LPCWSTR lpLocaleName,
   1010   DWORD dwMapFlags,
   1011   LPCWSTR lpSrcStr,
   1012   int cchSrc,
   1013   LPWSTR lpDestStr,
   1014   int cchDest,
   1015   LPNLSVERSIONINFO lpVersionInformation,
   1016   LPVOID lpReserved,
   1017   LPARAM lParam
   1018 );
   1019 
   1020 WINBASEAPI LCID WINAPI LocaleNameToLCID(
   1021   LPCWSTR lpName,
   1022   DWORD dwFlags
   1023 );
   1024 
   1025 WINBASEAPI WINBOOL WINAPI RtlIsValidLocaleName(
   1026   LPCWSTR LocaleName,
   1027   ULONG Flags
   1028 );
   1029 
   1030 WINBASEAPI WINBOOL WINAPI VerifyScripts(
   1031   DWORD dwFlags,
   1032   LPCWSTR lpLocaleScripts,
   1033   int cchLocaleScripts,
   1034   LPCWSTR lpTestScripts,
   1035   int cchTestScripts
   1036 );
   1037 
   1038 #endif /* (_WIN32_WINNT >= 0x0600) */
   1039 
   1040 #if (_WIN32_WINNT >= 0x0601)
   1041 WINBASEAPI WINBOOL WINAPI GetProcessPreferredUILanguages(
   1042   DWORD dwFlags,
   1043   PULONG pulNumLanguages,
   1044   PZZWSTR pwszLanguagesBuffer,
   1045   PULONG pcchLanguagesBuffer
   1046 );
   1047 
   1048 #endif /* (_WIN32_WINNT >= 0x0601) */
   1049 
   1050 #endif
   1051 
   1052 #ifdef __cplusplus
   1053 }
   1054 #endif
   1055 #endif
   1056