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
12extern "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
732WINBASEAPI LANGID WINAPI SetThreadUILanguage(
733  LANGID LangId
734);
735
736#if (_WIN32_WINNT >= 0x0600)
737
738typedef 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
754typedef struct _nlsversioninfoex {
755  DWORD dwNLSVersionInfoSize;
756  DWORD dwNLSVersion;
757  DWORD dwDefinedVersion;
758  DWORD dwEffectiveId;
759  GUID  guidCustomVersion;
760} NLSVERSIONINFOEX, *LPNLSVERSIONINFOEX;
761
762WINBASEAPI 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
774WINBASEAPI int WINAPI CompareStringOrdinal(
775  LPCWSTR lpString1,
776  int cchCount1,
777  LPCWSTR lpString2,
778  int cchCount2,
779  WINBOOL bIgnoreCase
780);
781
782typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCEXEX)(
783  LPWSTR lpCalendarInfoString,
784  CALID Calendar,
785  LPWSTR lpReserved,
786  LPARAM lParam
787);
788
789typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCEXEX)(
790  LPWSTR lpDateFormatString,
791  CALID CalendarID,
792  LPARAM lParam
793);
794
795WINBASEAPI WINBOOL WINAPI EnumCalendarInfoExEx(
796  CALINFO_ENUMPROCEXEX pCalInfoEnumProcExEx,
797  LPCWSTR lpLocaleName,
798  CALID Calendar,
799  LPCWSTR lpReserved,
800  CALTYPE CalType,
801  LPARAM lParam
802);
803
804WINBASEAPI WINBOOL WINAPI EnumDateFormatsExEx(
805  DATEFMT_ENUMPROCEXEX lpDateFmtEnumProcExEx,
806  LPCWSTR lpLocaleName,
807  DWORD dwFlags,
808  LPARAM lParam
809);
810
811typedef WINBOOL (CALLBACK *LOCALE_ENUMPROCEX)(
812  LPWSTR lpLocaleString,
813  DWORD dwFlags,
814  LPARAM lParam
815);
816
817WINBASEAPI WINBOOL WINAPI EnumSystemLocalesEx(
818  LOCALE_ENUMPROCEX lpLocaleEnumProcEx,
819  DWORD dwFlags,
820  LPARAM lParam,
821  LPVOID lpReserved
822);
823
824typedef WINBOOL (CALLBACK *TIMEFMT_ENUMPROCEX)(
825  LPWSTR lpTimeFormatString,
826  LPARAM lParam
827);
828
829WINBASEAPI WINBOOL WINAPI EnumTimeFormatsEx(
830  TIMEFMT_ENUMPROCEX lpTimeFmtEnumProcEx,
831  LPCWSTR lpLocaleName,
832  DWORD dwFlags,
833  LPARAM lParam
834);
835
836WINBASEAPI 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
846WINBASEAPI 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
859WINBASEAPI 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
869WINBASEAPI 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
879WINBASEAPI 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
889WINBASEAPI WINBOOL WINAPI GetFileMUIInfo(
890  DWORD dwFlags,
891  PCWSTR pcwszFilePath,
892  PFILEMUIINFO pFileMUIInfo,
893  DWORD *pcbFileMUIInfo
894);
895
896WINBASEAPI 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
906WINBASEAPI int WINAPI GetLocaleInfoEx(
907  LPCWSTR lpLocaleName,
908  LCTYPE LCType,
909  LPWSTR lpLCData,
910  int cchData
911);
912
913WINBASEAPI WINBOOL WINAPI GetNLSVersion(
914  NLS_FUNCTION Function,
915  LCID Locale,
916  LPNLSVERSIONINFO lpVersionInformation
917);
918
919WINBASEAPI WINBOOL WINAPI GetNLSVersionEx(
920  NLS_FUNCTION function,
921  LPCWSTR lpLocaleName,
922  LPNLSVERSIONINFOEX lpVersionInformation
923);
924
925WINBASEAPI int WINAPI GetNumberFormatEx(
926  LPCWSTR lpLocaleName,
927  DWORD dwFlags,
928  LPCWSTR lpValue,
929  const NUMBERFMT *lpFormat,
930  LPWSTR lpNumberStr,
931  int cchNumber
932);
933
934WINBASEAPI int WINAPI GetStringScripts(
935  DWORD dwFlags,
936  LPCWSTR lpString,
937  int cchString,
938  LPWSTR lpScripts,
939  int cchScripts
940);
941
942WINBASEAPI int WINAPI GetSystemDefaultLocaleName(
943  LPWSTR lpLocaleName,
944  int cchLocaleName
945);
946
947typedef WCHAR *PZZWSTR; /*__nullnullterminated*/
948typedef CONST WCHAR *PCZZWSTR; /*__nullnullterminated*/
949
950WINBASEAPI WINBOOL WINAPI GetSystemPreferredUILanguages(
951  DWORD dwFlags,
952  PULONG pulNumLanguages,
953  PZZWSTR pwszLanguagesBuffer,
954  PULONG pcchLanguagesBuffer
955);
956
957WINBASEAPI WINBOOL WINAPI GetThreadPreferredUILanguages(
958  DWORD dwFlags,
959  PULONG pulNumLanguages,
960  PZZWSTR pwszLanguagesBuffer,
961  PULONG pcchLanguagesBuffer
962);
963
964WINBASEAPI LANGID WINAPI GetThreadUILanguage(void);
965
966WINBASEAPI WINBOOL WINAPI SetThreadPreferredUILanguages(
967  DWORD dwFlags,
968  PCZZWSTR pwszLanguagesBuffer,
969  PULONG pulNumLanguages
970);
971
972WINBASEAPI int WINAPI GetTimeFormatEx(
973  LPCWSTR lpLocaleName,
974  DWORD dwFlags,
975  const SYSTEMTIME *lpTime,
976  LPCWSTR lpFormat,
977  LPWSTR lpTimeStr,
978  int cchTime
979);
980
981WINBASEAPI WINBOOL WINAPI GetUILanguageInfo(
982  DWORD dwFlags,
983  PCZZWSTR pwmszLanguage,
984  PZZWSTR pwszFallbackLanguages,
985  PDWORD pcchFallbackLanguages,
986  PDWORD pdwAttributes
987);
988
989WINBASEAPI int WINAPI GetUserDefaultLocaleName(
990  LPWSTR lpLocaleName,
991  int cchLocaleName
992);
993
994WINBASEAPI WINBOOL WINAPI GetUserPreferredUILanguages(
995  DWORD dwFlags,
996  PULONG pulNumLanguages,
997  PZZWSTR pwszLanguagesBuffer,
998  PULONG pcchLanguagesBuffer
999);
1000
1001WINBASEAPI int WINAPI LCIDToLocaleName(
1002  LCID Locale,
1003  LPWSTR lpName,
1004  int cchName,
1005  DWORD dwFlags
1006);
1007
1008WINBASEAPI 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
1020WINBASEAPI LCID WINAPI LocaleNameToLCID(
1021  LPCWSTR lpName,
1022  DWORD dwFlags
1023);
1024
1025WINBASEAPI WINBOOL WINAPI RtlIsValidLocaleName(
1026  LPCWSTR LocaleName,
1027  ULONG Flags
1028);
1029
1030WINBASEAPI 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)
1041WINBASEAPI 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