1 {******************************************************************************}
2 {                                                                              }
3 { National Language Support API interface Unit for Object Pascal               }
4 {                                                                              }
5 { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
6 { Corporation. All Rights Reserved.                                            }
7 {                                                                              }
8 { The original file is: winnls.h, released June 2000. The original Pascal      }
9 { code is: WinNLS.pas, released December 2000. The initial developer of the    }
10 { Pascal code is Marcel van Brakel (brakelm att chello dott nl).               }
11 {                                                                              }
12 { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
13 { Marcel van Brakel. All Rights Reserved.                                      }
14 {                                                                              }
15 { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
16 {                                                                              }
17 { You may retrieve the latest version of this file at the Project JEDI         }
18 { APILIB home page, located at http://jedi-apilib.sourceforge.net              }
19 {                                                                              }
20 { The contents of this file are used with permission, subject to the Mozilla   }
21 { Public License Version 1.1 (the "License"); you may not use this file except }
22 { in compliance with the License. You may obtain a copy of the License at      }
23 { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
24 {                                                                              }
25 { Software distributed under the License is distributed on an "AS IS" basis,   }
26 { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
27 { the specific language governing rights and limitations under the License.    }
28 {                                                                              }
29 { Alternatively, the contents of this file may be used under the terms of the  }
30 { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
31 { provisions of the LGPL License are applicable instead of those above.        }
32 { If you wish to allow use of your version of this file only under the terms   }
33 { of the LGPL License and not to allow others to use your version of this file }
34 { under the MPL, indicate your decision by deleting  the provisions above and  }
35 { replace  them with the notice and other provisions required by the LGPL      }
36 { License.  If you do not delete the provisions above, a recipient may use     }
37 { your version of this file under either the MPL or the LGPL License.          }
38 {                                                                              }
39 { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
40 {                                                                              }
41 {******************************************************************************}
42 
43 // $Id: JwaWinNLS.pas,v 1.12 2007/09/05 11:58:54 dezipaitor Exp $
44 
45 {$IFNDEF JWA_OMIT_SECTIONS}
46 unit JwaWinNLS;
47 
48 {$WEAKPACKAGEUNIT}
49 {$ENDIF JWA_OMIT_SECTIONS}
50 
51 {$HPPEMIT ''}
52 {$HPPEMIT '#include "WinNls.h"'}
53 {$HPPEMIT ''}
54 
55 {$IFNDEF JWA_OMIT_SECTIONS}
56 
57 {$I jediapilib.inc}
58 
59 interface
60 
61 uses
62   JwaWinType, JwaWinBase;
63 {$ENDIF JWA_OMIT_SECTIONS}
64 {$IFNDEF JWA_IMPLEMENTATIONSECTION}
65 
66 ////////////////////////////////////////////////////////////////////////////
67 //
68 //  Constants
69 //
70 //  Define all constants for the NLS component here.
71 //
72 ////////////////////////////////////////////////////////////////////////////
73 
74 //
75 //  String Length Maximums.
76 //
77 
78 const
79 
80   MAX_LEADBYTES   = 12; // 5 ranges, 2 bytes ea., 0 term.
81   {$EXTERNALSYM MAX_LEADBYTES}
82   MAX_DEFAULTCHAR = 2; // single or double byte
83   {$EXTERNALSYM MAX_DEFAULTCHAR}
84 
85 //
86 //  MBCS and Unicode Translation Flags.
87 //
88 
89   MB_PRECOMPOSED       = $00000001; // use precomposed chars
90   {$EXTERNALSYM MB_PRECOMPOSED}
91   MB_COMPOSITE         = $00000002; // use composite chars
92   {$EXTERNALSYM MB_COMPOSITE}
93   MB_USEGLYPHCHARS     = $00000004; // use glyph chars, not ctrl chars
94   {$EXTERNALSYM MB_USEGLYPHCHARS}
95   MB_ERR_INVALID_CHARS = $00000008; // error for invalid chars
96   {$EXTERNALSYM MB_ERR_INVALID_CHARS}
97 
98   WC_COMPOSITECHECK = $00000200; // convert composite to precomposed
99   {$EXTERNALSYM WC_COMPOSITECHECK}
100   WC_DISCARDNS      = $00000010; // discard non-spacing chars
101   {$EXTERNALSYM WC_DISCARDNS}
102   WC_SEPCHARS       = $00000020; // generate separate chars
103   {$EXTERNALSYM WC_SEPCHARS}
104   WC_DEFAULTCHAR    = $00000040; // replace w/ default char
105   {$EXTERNALSYM WC_DEFAULTCHAR}
106 
107   WC_NO_BEST_FIT_CHARS = $00000400; // do not use best fit chars
108   {$EXTERNALSYM WC_NO_BEST_FIT_CHARS}
109 
110 //
111 //  Character Type Flags.
112 //
113 
114   CT_CTYPE1 = $00000001; // ctype 1 information
115   {$EXTERNALSYM CT_CTYPE1}
116   CT_CTYPE2 = $00000002; // ctype 2 information
117   {$EXTERNALSYM CT_CTYPE2}
118   CT_CTYPE3 = $00000004; // ctype 3 information
119   {$EXTERNALSYM CT_CTYPE3}
120 
121 //
122 //  CType 1 Flag Bits.
123 //
124 
125   C1_UPPER  = $0001; // upper case
126   {$EXTERNALSYM C1_UPPER}
127   C1_LOWER  = $0002; // lower case
128   {$EXTERNALSYM C1_LOWER}
129   C1_DIGIT  = $0004; // decimal digits
130   {$EXTERNALSYM C1_DIGIT}
131   C1_SPACE  = $0008; // spacing characters
132   {$EXTERNALSYM C1_SPACE}
133   C1_PUNCT  = $0010; // punctuation characters
134   {$EXTERNALSYM C1_PUNCT}
135   C1_CNTRL  = $0020; // control characters
136   {$EXTERNALSYM C1_CNTRL}
137   C1_BLANK  = $0040; // blank characters
138   {$EXTERNALSYM C1_BLANK}
139   C1_XDIGIT = $0080; // other digits
140   {$EXTERNALSYM C1_XDIGIT}
141   C1_ALPHA  = $0100; // any linguistic character
142   {$EXTERNALSYM C1_ALPHA}
143   C1_DEFINED = $0200; // defined character
144   {$EXTERNALSYM C1_DEFINED}
145 
146 //
147 //  CType 2 Flag Bits.
148 //
149 
150   C2_LEFTTORIGHT = $0001; // left to right
151   {$EXTERNALSYM C2_LEFTTORIGHT}
152   C2_RIGHTTOLEFT = $0002; // right to left
153   {$EXTERNALSYM C2_RIGHTTOLEFT}
154 
155   C2_EUROPENUMBER     = $0003; // European number, digit
156   {$EXTERNALSYM C2_EUROPENUMBER}
157   C2_EUROPESEPARATOR  = $0004; // European numeric separator
158   {$EXTERNALSYM C2_EUROPESEPARATOR}
159   C2_EUROPETERMINATOR = $0005; // European numeric terminator
160   {$EXTERNALSYM C2_EUROPETERMINATOR}
161   C2_ARABICNUMBER     = $0006; // Arabic number
162   {$EXTERNALSYM C2_ARABICNUMBER}
163   C2_COMMONSEPARATOR  = $0007; // common numeric separator
164   {$EXTERNALSYM C2_COMMONSEPARATOR}
165 
166   C2_BLOCKSEPARATOR   = $0008; // block separator
167   {$EXTERNALSYM C2_BLOCKSEPARATOR}
168   C2_SEGMENTSEPARATOR = $0009; // segment separator
169   {$EXTERNALSYM C2_SEGMENTSEPARATOR}
170   C2_WHITESPACE       = $000A; // white space
171   {$EXTERNALSYM C2_WHITESPACE}
172   C2_OTHERNEUTRAL     = $000B; // other neutrals
173   {$EXTERNALSYM C2_OTHERNEUTRAL}
174 
175   C2_NOTAPPLICABLE = $0000; // no implicit directionality
176   {$EXTERNALSYM C2_NOTAPPLICABLE}
177 
178 //
179 //  CType 3 Flag Bits.
180 //
181 
182   C3_NONSPACING = $0001; // nonspacing character
183   {$EXTERNALSYM C3_NONSPACING}
184   C3_DIACRITIC  = $0002; // diacritic mark
185   {$EXTERNALSYM C3_DIACRITIC}
186   C3_VOWELMARK  = $0004; // vowel mark
187   {$EXTERNALSYM C3_VOWELMARK}
188   C3_SYMBOL     = $0008; // symbols
189   {$EXTERNALSYM C3_SYMBOL}
190 
191   C3_KATAKANA  = $0010; // katakana character
192   {$EXTERNALSYM C3_KATAKANA}
193   C3_HIRAGANA  = $0020; // hiragana character
194   {$EXTERNALSYM C3_HIRAGANA}
195   C3_HALFWIDTH = $0040; // half width character
196   {$EXTERNALSYM C3_HALFWIDTH}
197   C3_FULLWIDTH = $0080; // full width character
198   {$EXTERNALSYM C3_FULLWIDTH}
199   C3_IDEOGRAPH = $0100; // ideographic character
200   {$EXTERNALSYM C3_IDEOGRAPH}
201   C3_KASHIDA   = $0200; // Arabic kashida character
202   {$EXTERNALSYM C3_KASHIDA}
203   C3_LEXICAL   = $0400; // lexical character
204   {$EXTERNALSYM C3_LEXICAL}
205 
206   C3_ALPHA = $8000; // any linguistic char (C1_ALPHA)
207   {$EXTERNALSYM C3_ALPHA}
208 
209   C3_NOTAPPLICABLE = $0000; // ctype 3 is not applicable
210   {$EXTERNALSYM C3_NOTAPPLICABLE}
211 
212 //
213 //  String Flags.
214 //
215 
216   NORM_IGNORECASE     = $00000001; // ignore case
217   {$EXTERNALSYM NORM_IGNORECASE}
218   NORM_IGNORENONSPACE = $00000002; // ignore nonspacing chars
219   {$EXTERNALSYM NORM_IGNORENONSPACE}
220   NORM_IGNORESYMBOLS  = $00000004; // ignore symbols
221   {$EXTERNALSYM NORM_IGNORESYMBOLS}
222 
223   NORM_IGNOREKANATYPE = $00010000; // ignore kanatype
224   {$EXTERNALSYM NORM_IGNOREKANATYPE}
225   NORM_IGNOREWIDTH    = $00020000; // ignore width
226   {$EXTERNALSYM NORM_IGNOREWIDTH}
227 
228 //
229 //  Locale Independent Mapping Flags.
230 //
231 
232   MAP_FOLDCZONE   = $00000010; // fold compatibility zone chars
233   {$EXTERNALSYM MAP_FOLDCZONE}
234   MAP_PRECOMPOSED = $00000020; // convert to precomposed chars
235   {$EXTERNALSYM MAP_PRECOMPOSED}
236   MAP_COMPOSITE   = $00000040; // convert to composite chars
237   {$EXTERNALSYM MAP_COMPOSITE}
238   MAP_FOLDDIGITS  = $00000080; // all digits to ASCII 0-9
239   {$EXTERNALSYM MAP_FOLDDIGITS}
240 
241   MAP_EXPAND_LIGATURES = $00002000; // expand all ligatures
242   {$EXTERNALSYM MAP_EXPAND_LIGATURES}
243 
244 //
245 //  Locale Dependent Mapping Flags.
246 //
247 
248   LCMAP_LOWERCASE = $00000100; // lower case letters
249   {$EXTERNALSYM LCMAP_LOWERCASE}
250   LCMAP_UPPERCASE = $00000200; // upper case letters
251   {$EXTERNALSYM LCMAP_UPPERCASE}
252   LCMAP_SORTKEY   = $00000400; // WC sort key (normalize)
253   {$EXTERNALSYM LCMAP_SORTKEY}
254   LCMAP_BYTEREV   = $00000800; // byte reversal
255   {$EXTERNALSYM LCMAP_BYTEREV}
256 
257   LCMAP_HIRAGANA  = $00100000; // map katakana to hiragana
258   {$EXTERNALSYM LCMAP_HIRAGANA}
259   LCMAP_KATAKANA  = $00200000; // map hiragana to katakana
260   {$EXTERNALSYM LCMAP_KATAKANA}
261   LCMAP_HALFWIDTH = $00400000; // map double byte to single byte
262   {$EXTERNALSYM LCMAP_HALFWIDTH}
263   LCMAP_FULLWIDTH = $00800000; // map single byte to double byte
264   {$EXTERNALSYM LCMAP_FULLWIDTH}
265 
266   LCMAP_LINGUISTIC_CASING = $01000000; // use linguistic rules for casing
267   {$EXTERNALSYM LCMAP_LINGUISTIC_CASING}
268 
269   LCMAP_SIMPLIFIED_CHINESE  = $02000000; // map traditional chinese to simplified chinese
270   {$EXTERNALSYM LCMAP_SIMPLIFIED_CHINESE}
271   LCMAP_TRADITIONAL_CHINESE = $04000000; // map simplified chinese to traditional chinese
272   {$EXTERNALSYM LCMAP_TRADITIONAL_CHINESE}
273 
274 //
275 //  Language Group Enumeration Flags.
276 //
277 
278   LGRPID_INSTALLED = $00000001; // installed language group ids
279   {$EXTERNALSYM LGRPID_INSTALLED}
280   LGRPID_SUPPORTED = $00000002; // supported language group ids
281   {$EXTERNALSYM LGRPID_SUPPORTED}
282 
283 
284 //
285 //  Locale Enumeration Flags.
286 //
287 
288   LCID_INSTALLED       = $00000001; // installed locale ids
289   {$EXTERNALSYM LCID_INSTALLED}
290   LCID_SUPPORTED       = $00000002; // supported locale ids
291   {$EXTERNALSYM LCID_SUPPORTED}
292   LCID_ALTERNATE_SORTS = $00000004; // alternate sort locale ids
293   {$EXTERNALSYM LCID_ALTERNATE_SORTS}
294 
295 //
296 //  Code Page Enumeration Flags.
297 //
298 
299   CP_INSTALLED = $00000001; // installed code page ids
300   {$EXTERNALSYM CP_INSTALLED}
301   CP_SUPPORTED = $00000002; // supported code page ids
302   {$EXTERNALSYM CP_SUPPORTED}
303 
304 //
305 //  Sorting Flags.
306 //
307 //    WORD Sort:    culturally correct sort
308 //                  hyphen and apostrophe are special cased
309 //                  example: "coop" and "co-op" will sort together in a list
310 //
311 //                        co_op     <-------  underscore (symbol)
312 //                        coat
313 //                        comb
314 //                        coop
315 //                        co-op     <-------  hyphen (punctuation)
316 //                        cork
317 //                        went
318 //                        were
319 //                        we're     <-------  apostrophe (punctuation)
320 //
321 //
322 //    STRING Sort:  hyphen and apostrophe will sort with all other symbols
323 //
324 //                        co-op     <-------  hyphen (punctuation)
325 //                        co_op     <-------  underscore (symbol)
326 //                        coat
327 //                        comb
328 //                        coop
329 //                        cork
330 //                        we're     <-------  apostrophe (punctuation)
331 //                        went
332 //                        were
333 //
334 
335   SORT_STRINGSORT = $00001000; // use string sort method
336   {$EXTERNALSYM SORT_STRINGSORT}
337 
338 //
339 //  Compare String Return Values.
340 //
341 
342   CSTR_LESS_THAN    = 1; // string 1 less than string 2
343   {$EXTERNALSYM CSTR_LESS_THAN}
344   CSTR_EQUAL        = 2; // string 1 equal to string 2
345   {$EXTERNALSYM CSTR_EQUAL}
346   CSTR_GREATER_THAN = 3; // string 1 greater than string 2
347   {$EXTERNALSYM CSTR_GREATER_THAN}
348 
349 //
350 //  Code Page Default Values.
351 //
352 
353   CP_ACP        = 0; // default to ANSI code page
354   {$EXTERNALSYM CP_ACP}
355   CP_OEMCP      = 1; // default to OEM  code page
356   {$EXTERNALSYM CP_OEMCP}
357   CP_MACCP      = 2; // default to MAC  code page
358   {$EXTERNALSYM CP_MACCP}
359   CP_THREAD_ACP = 3; // current thread's ANSI code page
360   {$EXTERNALSYM CP_THREAD_ACP}
361   CP_SYMBOL     = 42; // SYMBOL translations
362   {$EXTERNALSYM CP_SYMBOL}
363 
364   CP_UTF7 = 65000; // UTF-7 translation
365   {$EXTERNALSYM CP_UTF7}
366   CP_UTF8 = 65001; // UTF-8 translation
367   {$EXTERNALSYM CP_UTF8}
368 
369 //
370 //  Country/Region Codes.
371 //
372 
373   CTRY_DEFAULT = 0;
374   {$EXTERNALSYM CTRY_DEFAULT}
375 
376   CTRY_ALBANIA            = 355; // Albania
377   {$EXTERNALSYM CTRY_ALBANIA}
378   CTRY_ALGERIA            = 213; // Algeria
379   {$EXTERNALSYM CTRY_ALGERIA}
380   CTRY_ARGENTINA          = 54; // Argentina
381   {$EXTERNALSYM CTRY_ARGENTINA}
382   CTRY_ARMENIA            = 374; // Armenia
383   {$EXTERNALSYM CTRY_ARMENIA}
384   CTRY_AUSTRALIA          = 61; // Australia
385   {$EXTERNALSYM CTRY_AUSTRALIA}
386   CTRY_AUSTRIA            = 43; // Austria
387   {$EXTERNALSYM CTRY_AUSTRIA}
388   CTRY_AZERBAIJAN         = 994; // Azerbaijan
389   {$EXTERNALSYM CTRY_AZERBAIJAN}
390   CTRY_BAHRAIN            = 973; // Bahrain
391   {$EXTERNALSYM CTRY_BAHRAIN}
392   CTRY_BELARUS            = 375; // Belarus
393   {$EXTERNALSYM CTRY_BELARUS}
394   CTRY_BELGIUM            = 32; // Belgium
395   {$EXTERNALSYM CTRY_BELGIUM}
396   CTRY_BELIZE             = 501; // Belize
397   {$EXTERNALSYM CTRY_BELIZE}
398   CTRY_BOLIVIA            = 591; // Bolivia
399   {$EXTERNALSYM CTRY_BOLIVIA}
400   CTRY_BRAZIL             = 55; // Brazil
401   {$EXTERNALSYM CTRY_BRAZIL}
402   CTRY_BRUNEI_DARUSSALAM  = 673; // Brunei Darussalam
403   {$EXTERNALSYM CTRY_BRUNEI_DARUSSALAM}
404   CTRY_BULGARIA           = 359; // Bulgaria
405   {$EXTERNALSYM CTRY_BULGARIA}
406   CTRY_CANADA             = 2; // Canada
407   {$EXTERNALSYM CTRY_CANADA}
408   CTRY_CARIBBEAN          = 1; // Caribbean
409   {$EXTERNALSYM CTRY_CARIBBEAN}
410   CTRY_CHILE              = 56; // Chile
411   {$EXTERNALSYM CTRY_CHILE}
412   CTRY_COLOMBIA           = 57; // Colombia
413   {$EXTERNALSYM CTRY_COLOMBIA}
414   CTRY_COSTA_RICA         = 506; // Costa Rica
415   {$EXTERNALSYM CTRY_COSTA_RICA}
416   CTRY_CROATIA            = 385; // Croatia
417   {$EXTERNALSYM CTRY_CROATIA}
418   CTRY_CZECH              = 420; // Czech Republic
419   {$EXTERNALSYM CTRY_CZECH}
420   CTRY_DENMARK            = 45; // Denmark
421   {$EXTERNALSYM CTRY_DENMARK}
422   CTRY_DOMINICAN_REPUBLIC = 1; // Dominican Republic
423   {$EXTERNALSYM CTRY_DOMINICAN_REPUBLIC}
424   CTRY_ECUADOR            = 593; // Ecuador
425   {$EXTERNALSYM CTRY_ECUADOR}
426   CTRY_EGYPT              = 20; // Egypt
427   {$EXTERNALSYM CTRY_EGYPT}
428   CTRY_EL_SALVADOR        = 503; // El Salvador
429   {$EXTERNALSYM CTRY_EL_SALVADOR}
430   CTRY_ESTONIA            = 372; // Estonia
431   {$EXTERNALSYM CTRY_ESTONIA}
432   CTRY_FAEROE_ISLANDS     = 298; // Faeroe Islands
433   {$EXTERNALSYM CTRY_FAEROE_ISLANDS}
434   CTRY_FINLAND            = 358; // Finland
435   {$EXTERNALSYM CTRY_FINLAND}
436   CTRY_FRANCE             = 33; // France
437   {$EXTERNALSYM CTRY_FRANCE}
438   CTRY_GEORGIA            = 995; // Georgia
439   {$EXTERNALSYM CTRY_GEORGIA}
440   CTRY_GERMANY            = 49; // Germany
441   {$EXTERNALSYM CTRY_GERMANY}
442   CTRY_GREECE             = 30; // Greece
443   {$EXTERNALSYM CTRY_GREECE}
444   CTRY_GUATEMALA          = 502; // Guatemala
445   {$EXTERNALSYM CTRY_GUATEMALA}
446   CTRY_HONDURAS           = 504; // Honduras
447   {$EXTERNALSYM CTRY_HONDURAS}
448   CTRY_HONG_KONG          = 852; // Hong Kong S.A.R., P.R.C.
449   {$EXTERNALSYM CTRY_HONG_KONG}
450   CTRY_HUNGARY            = 36; // Hungary
451   {$EXTERNALSYM CTRY_HUNGARY}
452   CTRY_ICELAND            = 354; // Iceland
453   {$EXTERNALSYM CTRY_ICELAND}
454   CTRY_INDIA              = 91; // India
455   {$EXTERNALSYM CTRY_INDIA}
456   CTRY_INDONESIA          = 62; // Indonesia
457   {$EXTERNALSYM CTRY_INDONESIA}
458   CTRY_IRAN               = 981; // Iran
459   {$EXTERNALSYM CTRY_IRAN}
460   CTRY_IRAQ               = 964; // Iraq
461   {$EXTERNALSYM CTRY_IRAQ}
462   CTRY_IRELAND            = 353; // Ireland
463   {$EXTERNALSYM CTRY_IRELAND}
464   CTRY_ISRAEL             = 972; // Israel
465   {$EXTERNALSYM CTRY_ISRAEL}
466   CTRY_ITALY              = 39; // Italy
467   {$EXTERNALSYM CTRY_ITALY}
468   CTRY_JAMAICA            = 1; // Jamaica
469   {$EXTERNALSYM CTRY_JAMAICA}
470   CTRY_JAPAN              = 81; // Japan
471   {$EXTERNALSYM CTRY_JAPAN}
472   CTRY_JORDAN             = 962; // Jordan
473   {$EXTERNALSYM CTRY_JORDAN}
474   CTRY_KAZAKSTAN          = 7; // Kazakstan
475   {$EXTERNALSYM CTRY_KAZAKSTAN}
476   CTRY_KENYA              = 254; // Kenya
477   {$EXTERNALSYM CTRY_KENYA}
478   CTRY_KUWAIT             = 965; // Kuwait
479   {$EXTERNALSYM CTRY_KUWAIT}
480   CTRY_KYRGYZSTAN         = 996; // Kyrgyzstan
481   {$EXTERNALSYM CTRY_KYRGYZSTAN}
482   CTRY_LATVIA             = 371; // Latvia
483   {$EXTERNALSYM CTRY_LATVIA}
484   CTRY_LEBANON            = 961; // Lebanon
485   {$EXTERNALSYM CTRY_LEBANON}
486   CTRY_LIBYA              = 218; // Libya
487   {$EXTERNALSYM CTRY_LIBYA}
488   CTRY_LIECHTENSTEIN      = 41; // Liechtenstein
489   {$EXTERNALSYM CTRY_LIECHTENSTEIN}
490   CTRY_LITHUANIA          = 370; // Lithuania
491   {$EXTERNALSYM CTRY_LITHUANIA}
492   CTRY_LUXEMBOURG         = 352; // Luxembourg
493   {$EXTERNALSYM CTRY_LUXEMBOURG}
494   CTRY_MACAU              = 853; // Macau S.A.R., PRC
495   {$EXTERNALSYM CTRY_MACAU}
496   CTRY_MACEDONIA          = 389; // Former Yugoslav Republic of Macedonia
497   {$EXTERNALSYM CTRY_MACEDONIA}
498   CTRY_MALAYSIA           = 60; // Malaysia
499   {$EXTERNALSYM CTRY_MALAYSIA}
500   CTRY_MALDIVES           = 960; // Maldives
501   {$EXTERNALSYM CTRY_MALDIVES}
502   CTRY_MEXICO             = 52; // Mexico
503   {$EXTERNALSYM CTRY_MEXICO}
504   CTRY_MONACO             = 33; // Principality of Monaco
505   {$EXTERNALSYM CTRY_MONACO}
506   CTRY_MONGOLIA           = 976; // Mongolia
507   {$EXTERNALSYM CTRY_MONGOLIA}
508   CTRY_MOROCCO            = 212; // Morocco
509   {$EXTERNALSYM CTRY_MOROCCO}
510   CTRY_NETHERLANDS        = 31; // Netherlands
511   {$EXTERNALSYM CTRY_NETHERLANDS}
512   CTRY_NEW_ZEALAND        = 64; // New Zealand
513   {$EXTERNALSYM CTRY_NEW_ZEALAND}
514   CTRY_NICARAGUA          = 505; // Nicaragua
515   {$EXTERNALSYM CTRY_NICARAGUA}
516   CTRY_NORWAY             = 47; // Norway
517   {$EXTERNALSYM CTRY_NORWAY}
518   CTRY_OMAN               = 968; // Oman
519   {$EXTERNALSYM CTRY_OMAN}
520   CTRY_PAKISTAN           = 92; // Islamic Republic of Pakistan
521   {$EXTERNALSYM CTRY_PAKISTAN}
522   CTRY_PANAMA             = 507; // Panama
523   {$EXTERNALSYM CTRY_PANAMA}
524   CTRY_PARAGUAY           = 595; // Paraguay
525   {$EXTERNALSYM CTRY_PARAGUAY}
526   CTRY_PERU               = 51; // Peru
527   {$EXTERNALSYM CTRY_PERU}
528   CTRY_PHILIPPINES        = 63; // Republic of the Philippines
529   {$EXTERNALSYM CTRY_PHILIPPINES}
530   CTRY_POLAND             = 48; // Poland
531   {$EXTERNALSYM CTRY_POLAND}
532   CTRY_PORTUGAL           = 351; // Portugal
533   {$EXTERNALSYM CTRY_PORTUGAL}
534   CTRY_PRCHINA            = 86; // People's Republic of China
535   {$EXTERNALSYM CTRY_PRCHINA}
536   CTRY_PUERTO_RICO        = 1; // Puerto Rico
537   {$EXTERNALSYM CTRY_PUERTO_RICO}
538   CTRY_QATAR              = 974; // Qatar
539   {$EXTERNALSYM CTRY_QATAR}
540   CTRY_ROMANIA            = 40; // Romania
541   {$EXTERNALSYM CTRY_ROMANIA}
542   CTRY_RUSSIA             = 7; // Russia
543   {$EXTERNALSYM CTRY_RUSSIA}
544   CTRY_SAUDI_ARABIA       = 966; // Saudi Arabia
545   {$EXTERNALSYM CTRY_SAUDI_ARABIA}
546   CTRY_SERBIA             = 381; // Serbia
547   {$EXTERNALSYM CTRY_SERBIA}
548   CTRY_SINGAPORE          = 65; // Singapore
549   {$EXTERNALSYM CTRY_SINGAPORE}
550   CTRY_SLOVAK             = 421; // Slovak Republic
551   {$EXTERNALSYM CTRY_SLOVAK}
552   CTRY_SLOVENIA           = 386; // Slovenia
553   {$EXTERNALSYM CTRY_SLOVENIA}
554   CTRY_SOUTH_AFRICA       = 27; // South Africa
555   {$EXTERNALSYM CTRY_SOUTH_AFRICA}
556   CTRY_SOUTH_KOREA        = 82; // Korea
557   {$EXTERNALSYM CTRY_SOUTH_KOREA}
558   CTRY_SPAIN              = 34; // Spain
559   {$EXTERNALSYM CTRY_SPAIN}
560   CTRY_SWEDEN             = 46; // Sweden
561   {$EXTERNALSYM CTRY_SWEDEN}
562   CTRY_SWITZERLAND        = 41; // Switzerland
563   {$EXTERNALSYM CTRY_SWITZERLAND}
564   CTRY_SYRIA              = 963; // Syria
565   {$EXTERNALSYM CTRY_SYRIA}
566   CTRY_TAIWAN             = 886; // Taiwan
567   {$EXTERNALSYM CTRY_TAIWAN}
568   CTRY_TATARSTAN          = 7; // Tatarstan
569   {$EXTERNALSYM CTRY_TATARSTAN}
570   CTRY_THAILAND           = 66; // Thailand
571   {$EXTERNALSYM CTRY_THAILAND}
572   CTRY_TRINIDAD_Y_TOBAGO  = 1; // Trinidad y Tobago
573   {$EXTERNALSYM CTRY_TRINIDAD_Y_TOBAGO}
574   CTRY_TUNISIA            = 216; // Tunisia
575   {$EXTERNALSYM CTRY_TUNISIA}
576   CTRY_TURKEY             = 90; // Turkey
577   {$EXTERNALSYM CTRY_TURKEY}
578   CTRY_UAE                = 971; // U.A.E.
579   {$EXTERNALSYM CTRY_UAE}
580   CTRY_UKRAINE            = 380; // Ukraine
581   {$EXTERNALSYM CTRY_UKRAINE}
582   CTRY_UNITED_KINGDOM     = 44; // United Kingdom
583   {$EXTERNALSYM CTRY_UNITED_KINGDOM}
584   CTRY_UNITED_STATES      = 1; // United States
585   {$EXTERNALSYM CTRY_UNITED_STATES}
586   CTRY_URUGUAY            = 598; // Uruguay
587   {$EXTERNALSYM CTRY_URUGUAY}
588   CTRY_UZBEKISTAN         = 7; // Uzbekistan
589   {$EXTERNALSYM CTRY_UZBEKISTAN}
590   CTRY_VENEZUELA          = 58; // Venezuela
591   {$EXTERNALSYM CTRY_VENEZUELA}
592   CTRY_VIET_NAM           = 84; // Viet Nam
593   {$EXTERNALSYM CTRY_VIET_NAM}
594   CTRY_YEMEN              = 967; // Yemen
595   {$EXTERNALSYM CTRY_YEMEN}
596   CTRY_ZIMBABWE           = 263; // Zimbabwe
597   {$EXTERNALSYM CTRY_ZIMBABWE}
598 
599 
600 //
601 //  Locale Types.
602 //
603 //  These types are used for the GetLocaleInfo NLS API routine.
604 //  Some of these types are also used for the SetLocaleInfo NLS API routine.
605 //
606 
607 //
608 //  The following LCTypes may be used in combination with any other LCTypes.
609 //
610 //    LOCALE_NOUSEROVERRIDE is also used in GetTimeFormat and
611 //    GetDateFormat.
612 //
613 //    LOCALE_USE_CP_ACP is used in many of the A (Ansi) apis that need
614 //    to do string translation.
615 //
616 //    LOCALE_RETURN_NUMBER will return the result from GetLocaleInfo as a
617 //    number instead of a string.  This flag is only valid for the LCTypes
618 //    beginning with LOCALE_I.
619 //
620 
621   LOCALE_NOUSEROVERRIDE = DWORD($80000000); // do not use user overrides
622   {$EXTERNALSYM LOCALE_NOUSEROVERRIDE}
623   LOCALE_USE_CP_ACP     = $40000000; // use the system ACP
624   {$EXTERNALSYM LOCALE_USE_CP_ACP}
625 
626 
627 
628   LOCALE_RETURN_NUMBER = $20000000; // return number instead of string
629   {$EXTERNALSYM LOCALE_RETURN_NUMBER}
630 
631 
632 
633 //
634 //  The following LCTypes are mutually exclusive in that they may NOT
635 //  be used in combination with each other.
636 //
637 
638   LOCALE_ILANGUAGE       = $00000001; // language id
639   {$EXTERNALSYM LOCALE_ILANGUAGE}
640   LOCALE_SLANGUAGE       = $00000002; // localized name of language
641   {$EXTERNALSYM LOCALE_SLANGUAGE}
642   LOCALE_SENGLANGUAGE    = $00001001; // English name of language
643   {$EXTERNALSYM LOCALE_SENGLANGUAGE}
644   LOCALE_SABBREVLANGNAME = $00000003; // abbreviated language name
645   {$EXTERNALSYM LOCALE_SABBREVLANGNAME}
646   LOCALE_SNATIVELANGNAME = $00000004; // native name of language
647   {$EXTERNALSYM LOCALE_SNATIVELANGNAME}
648 
649   LOCALE_ICOUNTRY        = $00000005; // country code
650   {$EXTERNALSYM LOCALE_ICOUNTRY}
651   LOCALE_SCOUNTRY        = $00000006; // localized name of country
652   {$EXTERNALSYM LOCALE_SCOUNTRY}
653   LOCALE_SENGCOUNTRY     = $00001002; // English name of country
654   {$EXTERNALSYM LOCALE_SENGCOUNTRY}
655   LOCALE_SABBREVCTRYNAME = $00000007; // abbreviated country name
656   {$EXTERNALSYM LOCALE_SABBREVCTRYNAME}
657   LOCALE_SNATIVECTRYNAME = $00000008; // native name of country
658   {$EXTERNALSYM LOCALE_SNATIVECTRYNAME}
659 
660   LOCALE_IDEFAULTLANGUAGE     = $00000009; // default language id
661   {$EXTERNALSYM LOCALE_IDEFAULTLANGUAGE}
662   LOCALE_IDEFAULTCOUNTRY      = $0000000A; // default country code
663   {$EXTERNALSYM LOCALE_IDEFAULTCOUNTRY}
664   LOCALE_IDEFAULTCODEPAGE     = $0000000B; // default oem code page
665   {$EXTERNALSYM LOCALE_IDEFAULTCODEPAGE}
666   LOCALE_IDEFAULTANSICODEPAGE = $00001004; // default ansi code page
667   {$EXTERNALSYM LOCALE_IDEFAULTANSICODEPAGE}
668   LOCALE_IDEFAULTMACCODEPAGE  = $00001011; // default mac code page
669   {$EXTERNALSYM LOCALE_IDEFAULTMACCODEPAGE}
670 
671   LOCALE_SLIST    = $0000000C; // list item separator
672   {$EXTERNALSYM LOCALE_SLIST}
673   LOCALE_IMEASURE = $0000000D; // 0 = metric, 1 = US
674   {$EXTERNALSYM LOCALE_IMEASURE}
675 
676   LOCALE_SDECIMAL      = $0000000E; // decimal separator
677   {$EXTERNALSYM LOCALE_SDECIMAL}
678   LOCALE_STHOUSAND     = $0000000F; // thousand separator
679   {$EXTERNALSYM LOCALE_STHOUSAND}
680   LOCALE_SGROUPING     = $00000010; // digit grouping
681   {$EXTERNALSYM LOCALE_SGROUPING}
682   LOCALE_IDIGITS       = $00000011; // number of fractional digits
683   {$EXTERNALSYM LOCALE_IDIGITS}
684   LOCALE_ILZERO        = $00000012; // leading zeros for decimal
685   {$EXTERNALSYM LOCALE_ILZERO}
686   LOCALE_INEGNUMBER    = $00001010; // negative number mode
687   {$EXTERNALSYM LOCALE_INEGNUMBER}
688   LOCALE_SNATIVEDIGITS = $00000013; // native ascii 0-9
689   {$EXTERNALSYM LOCALE_SNATIVEDIGITS}
690 
691   LOCALE_SCURRENCY       = $00000014; // local monetary symbol
692   {$EXTERNALSYM LOCALE_SCURRENCY}
693   LOCALE_SINTLSYMBOL     = $00000015; // intl monetary symbol
694   {$EXTERNALSYM LOCALE_SINTLSYMBOL}
695   LOCALE_SMONDECIMALSEP  = $00000016; // monetary decimal separator
696   {$EXTERNALSYM LOCALE_SMONDECIMALSEP}
697   LOCALE_SMONTHOUSANDSEP = $00000017; // monetary thousand separator
698   {$EXTERNALSYM LOCALE_SMONTHOUSANDSEP}
699   LOCALE_SMONGROUPING    = $00000018; // monetary grouping
700   {$EXTERNALSYM LOCALE_SMONGROUPING}
701   LOCALE_ICURRDIGITS     = $00000019; // # local monetary digits
702   {$EXTERNALSYM LOCALE_ICURRDIGITS}
703   LOCALE_IINTLCURRDIGITS = $0000001A; // # intl monetary digits
704   {$EXTERNALSYM LOCALE_IINTLCURRDIGITS}
705   LOCALE_ICURRENCY       = $0000001B; // positive currency mode
706   {$EXTERNALSYM LOCALE_ICURRENCY}
707   LOCALE_INEGCURR        = $0000001C; // negative currency mode
708   {$EXTERNALSYM LOCALE_INEGCURR}
709 
710   LOCALE_SDATE         = $0000001D; // date separator
711   {$EXTERNALSYM LOCALE_SDATE}
712   LOCALE_STIME         = $0000001E; // time separator
713   {$EXTERNALSYM LOCALE_STIME}
714   LOCALE_SSHORTDATE    = $0000001F; // short date format string
715   {$EXTERNALSYM LOCALE_SSHORTDATE}
716   LOCALE_SLONGDATE     = $00000020; // long date format string
717   {$EXTERNALSYM LOCALE_SLONGDATE}
718   LOCALE_STIMEFORMAT   = $00001003; // time format string
719   {$EXTERNALSYM LOCALE_STIMEFORMAT}
720   LOCALE_IDATE         = $00000021; // short date format ordering
721   {$EXTERNALSYM LOCALE_IDATE}
722   LOCALE_ILDATE        = $00000022; // long date format ordering
723   {$EXTERNALSYM LOCALE_ILDATE}
724   LOCALE_ITIME         = $00000023; // time format specifier
725   {$EXTERNALSYM LOCALE_ITIME}
726   LOCALE_ITIMEMARKPOSN = $00001005; // time marker position
727   {$EXTERNALSYM LOCALE_ITIMEMARKPOSN}
728   LOCALE_ICENTURY      = $00000024; // century format specifier (short date)
729   {$EXTERNALSYM LOCALE_ICENTURY}
730   LOCALE_ITLZERO       = $00000025; // leading zeros in time field
731   {$EXTERNALSYM LOCALE_ITLZERO}
732   LOCALE_IDAYLZERO     = $00000026; // leading zeros in day field (short date)
733   {$EXTERNALSYM LOCALE_IDAYLZERO}
734   LOCALE_IMONLZERO     = $00000027; // leading zeros in month field (short date)
735   {$EXTERNALSYM LOCALE_IMONLZERO}
736   LOCALE_S1159         = $00000028; // AM designator
737   {$EXTERNALSYM LOCALE_S1159}
738   LOCALE_S2359         = $00000029; // PM designator
739   {$EXTERNALSYM LOCALE_S2359}
740 
741   LOCALE_ICALENDARTYPE     = $00001009; // type of calendar specifier
742   {$EXTERNALSYM LOCALE_ICALENDARTYPE}
743   LOCALE_IOPTIONALCALENDAR = $0000100B; // additional calendar types specifier
744   {$EXTERNALSYM LOCALE_IOPTIONALCALENDAR}
745   LOCALE_IFIRSTDAYOFWEEK   = $0000100C; // first day of week specifier
746   {$EXTERNALSYM LOCALE_IFIRSTDAYOFWEEK}
747   LOCALE_IFIRSTWEEKOFYEAR  = $0000100D; // first week of year specifier
748   {$EXTERNALSYM LOCALE_IFIRSTWEEKOFYEAR}
749 
750   LOCALE_SDAYNAME1          = $0000002A; // long name for Monday
751   {$EXTERNALSYM LOCALE_SDAYNAME1}
752   LOCALE_SDAYNAME2          = $0000002B; // long name for Tuesday
753   {$EXTERNALSYM LOCALE_SDAYNAME2}
754   LOCALE_SDAYNAME3          = $0000002C; // long name for Wednesday
755   {$EXTERNALSYM LOCALE_SDAYNAME3}
756   LOCALE_SDAYNAME4          = $0000002D; // long name for Thursday
757   {$EXTERNALSYM LOCALE_SDAYNAME4}
758   LOCALE_SDAYNAME5          = $0000002E; // long name for Friday
759   {$EXTERNALSYM LOCALE_SDAYNAME5}
760   LOCALE_SDAYNAME6          = $0000002F; // long name for Saturday
761   {$EXTERNALSYM LOCALE_SDAYNAME6}
762   LOCALE_SDAYNAME7          = $00000030; // long name for Sunday
763   {$EXTERNALSYM LOCALE_SDAYNAME7}
764   LOCALE_SABBREVDAYNAME1    = $00000031; // abbreviated name for Monday
765   {$EXTERNALSYM LOCALE_SABBREVDAYNAME1}
766   LOCALE_SABBREVDAYNAME2    = $00000032; // abbreviated name for Tuesday
767   {$EXTERNALSYM LOCALE_SABBREVDAYNAME2}
768   LOCALE_SABBREVDAYNAME3    = $00000033; // abbreviated name for Wednesday
769   {$EXTERNALSYM LOCALE_SABBREVDAYNAME3}
770   LOCALE_SABBREVDAYNAME4    = $00000034; // abbreviated name for Thursday
771   {$EXTERNALSYM LOCALE_SABBREVDAYNAME4}
772   LOCALE_SABBREVDAYNAME5    = $00000035; // abbreviated name for Friday
773   {$EXTERNALSYM LOCALE_SABBREVDAYNAME5}
774   LOCALE_SABBREVDAYNAME6    = $00000036; // abbreviated name for Saturday
775   {$EXTERNALSYM LOCALE_SABBREVDAYNAME6}
776   LOCALE_SABBREVDAYNAME7    = $00000037; // abbreviated name for Sunday
777   {$EXTERNALSYM LOCALE_SABBREVDAYNAME7}
778   LOCALE_SMONTHNAME1        = $00000038; // long name for January
779   {$EXTERNALSYM LOCALE_SMONTHNAME1}
780   LOCALE_SMONTHNAME2        = $00000039; // long name for February
781   {$EXTERNALSYM LOCALE_SMONTHNAME2}
782   LOCALE_SMONTHNAME3        = $0000003A; // long name for March
783   {$EXTERNALSYM LOCALE_SMONTHNAME3}
784   LOCALE_SMONTHNAME4        = $0000003B; // long name for April
785   {$EXTERNALSYM LOCALE_SMONTHNAME4}
786   LOCALE_SMONTHNAME5        = $0000003C; // long name for May
787   {$EXTERNALSYM LOCALE_SMONTHNAME5}
788   LOCALE_SMONTHNAME6        = $0000003D; // long name for June
789   {$EXTERNALSYM LOCALE_SMONTHNAME6}
790   LOCALE_SMONTHNAME7        = $0000003E; // long name for July
791   {$EXTERNALSYM LOCALE_SMONTHNAME7}
792   LOCALE_SMONTHNAME8        = $0000003F; // long name for August
793   {$EXTERNALSYM LOCALE_SMONTHNAME8}
794   LOCALE_SMONTHNAME9        = $00000040; // long name for September
795   {$EXTERNALSYM LOCALE_SMONTHNAME9}
796   LOCALE_SMONTHNAME10       = $00000041; // long name for October
797   {$EXTERNALSYM LOCALE_SMONTHNAME10}
798   LOCALE_SMONTHNAME11       = $00000042; // long name for November
799   {$EXTERNALSYM LOCALE_SMONTHNAME11}
800   LOCALE_SMONTHNAME12       = $00000043; // long name for December
801   {$EXTERNALSYM LOCALE_SMONTHNAME12}
802   LOCALE_SMONTHNAME13       = $0000100E; // long name for 13th month (if exists)
803   {$EXTERNALSYM LOCALE_SMONTHNAME13}
804   LOCALE_SABBREVMONTHNAME1  = $00000044; // abbreviated name for January
805   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME1}
806   LOCALE_SABBREVMONTHNAME2  = $00000045; // abbreviated name for February
807   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME2}
808   LOCALE_SABBREVMONTHNAME3  = $00000046; // abbreviated name for March
809   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME3}
810   LOCALE_SABBREVMONTHNAME4  = $00000047; // abbreviated name for April
811   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME4}
812   LOCALE_SABBREVMONTHNAME5  = $00000048; // abbreviated name for May
813   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME5}
814   LOCALE_SABBREVMONTHNAME6  = $00000049; // abbreviated name for June
815   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME6}
816   LOCALE_SABBREVMONTHNAME7  = $0000004A; // abbreviated name for July
817   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME7}
818   LOCALE_SABBREVMONTHNAME8  = $0000004B; // abbreviated name for August
819   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME8}
820   LOCALE_SABBREVMONTHNAME9  = $0000004C; // abbreviated name for September
821   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME9}
822   LOCALE_SABBREVMONTHNAME10 = $0000004D; // abbreviated name for October
823   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME10}
824   LOCALE_SABBREVMONTHNAME11 = $0000004E; // abbreviated name for November
825   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME11}
826   LOCALE_SABBREVMONTHNAME12 = $0000004F; // abbreviated name for December
827   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME12}
828   LOCALE_SABBREVMONTHNAME13 = $0000100F; // abbreviated name for 13th month (if exists)
829   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME13}
830 
831   LOCALE_SPOSITIVESIGN   = $00000050; // positive sign
832   {$EXTERNALSYM LOCALE_SPOSITIVESIGN}
833   LOCALE_SNEGATIVESIGN   = $00000051; // negative sign
834   {$EXTERNALSYM LOCALE_SNEGATIVESIGN}
835   LOCALE_IPOSSIGNPOSN    = $00000052; // positive sign position
836   {$EXTERNALSYM LOCALE_IPOSSIGNPOSN}
837   LOCALE_INEGSIGNPOSN    = $00000053; // negative sign position
838   {$EXTERNALSYM LOCALE_INEGSIGNPOSN}
839   LOCALE_IPOSSYMPRECEDES = $00000054; // mon sym precedes pos amt
840   {$EXTERNALSYM LOCALE_IPOSSYMPRECEDES}
841   LOCALE_IPOSSEPBYSPACE  = $00000055; // mon sym sep by space from pos amt
842   {$EXTERNALSYM LOCALE_IPOSSEPBYSPACE}
843   LOCALE_INEGSYMPRECEDES = $00000056; // mon sym precedes neg amt
844   {$EXTERNALSYM LOCALE_INEGSYMPRECEDES}
845   LOCALE_INEGSEPBYSPACE  = $00000057; // mon sym sep by space from neg amt
846   {$EXTERNALSYM LOCALE_INEGSEPBYSPACE}
847 
848   LOCALE_FONTSIGNATURE    = $00000058; // font signature
849   {$EXTERNALSYM LOCALE_FONTSIGNATURE}
850   LOCALE_SISO639LANGNAME  = $00000059; // ISO abbreviated language name
851   {$EXTERNALSYM LOCALE_SISO639LANGNAME}
852   LOCALE_SISO3166CTRYNAME = $0000005A; // ISO abbreviated country name
853   {$EXTERNALSYM LOCALE_SISO3166CTRYNAME}
854 
855   LOCALE_IDEFAULTEBCDICCODEPAGE = $00001012; // default ebcdic code page
856   {$EXTERNALSYM LOCALE_IDEFAULTEBCDICCODEPAGE}
857   LOCALE_IPAPERSIZE             = $0000100A; // 1 = letter, 5 = legal, 8 = a3, 9 = a4
858   {$EXTERNALSYM LOCALE_IPAPERSIZE}
859   LOCALE_SENGCURRNAME           = $00001007; // english name of currency
860   {$EXTERNALSYM LOCALE_SENGCURRNAME}
861   LOCALE_SNATIVECURRNAME        = $00001008; // native name of currency
862   {$EXTERNALSYM LOCALE_SNATIVECURRNAME}
863   LOCALE_SYEARMONTH             = $00001006; // year month format string
864   {$EXTERNALSYM LOCALE_SYEARMONTH}
865   LOCALE_SSORTNAME              = $00001013; // sort name
866   {$EXTERNALSYM LOCALE_SSORTNAME}
867   LOCALE_IDIGITSUBSTITUTION     = $00001014; // 0 = context, 1 = none, 2 = national
868   {$EXTERNALSYM LOCALE_IDIGITSUBSTITUTION}
869 
870 //
871 //  Time Flags for GetTimeFormat.
872 //
873 
874   TIME_NOMINUTESORSECONDS = $00000001; // do not use minutes or seconds
875   {$EXTERNALSYM TIME_NOMINUTESORSECONDS}
876   TIME_NOSECONDS          = $00000002; // do not use seconds
877   {$EXTERNALSYM TIME_NOSECONDS}
878   TIME_NOTIMEMARKER       = $00000004; // do not use time marker
879   {$EXTERNALSYM TIME_NOTIMEMARKER}
880   TIME_FORCE24HOURFORMAT  = $00000008; // always use 24 hour format
881   {$EXTERNALSYM TIME_FORCE24HOURFORMAT}
882 
883 //
884 //  Date Flags for GetDateFormat.
885 //
886 
887   DATE_SHORTDATE        = $00000001; // use short date picture
888   {$EXTERNALSYM DATE_SHORTDATE}
889   DATE_LONGDATE         = $00000002; // use long date picture
890   {$EXTERNALSYM DATE_LONGDATE}
891   DATE_USE_ALT_CALENDAR = $00000004; // use alternate calendar (if any)
892   {$EXTERNALSYM DATE_USE_ALT_CALENDAR}
893 
894   DATE_YEARMONTH  = $00000008; // use year month picture
895   {$EXTERNALSYM DATE_YEARMONTH}
896   DATE_LTRREADING = $00000010; // add marks for left to right reading order layout
897   {$EXTERNALSYM DATE_LTRREADING}
898   DATE_RTLREADING = $00000020; // add marks for right to left reading order layout
899   {$EXTERNALSYM DATE_RTLREADING}
900 
901 //
902 //  Calendar Types.
903 //
904 //  These types are used for the EnumCalendarInfo and GetCalendarInfo
905 //  NLS API routines.
906 //  Some of these types are also used for the SetCalendarInfo NLS API
907 //  routine.
908 //
909 
910 //
911 //  The following CalTypes may be used in combination with any other CalTypes.
912 //
913 //    CAL_NOUSEROVERRIDE
914 //
915 //    CAL_USE_CP_ACP is used in the A (Ansi) apis that need to do string
916 //    translation.
917 //
918 //    CAL_RETURN_NUMBER will return the result from GetCalendarInfo as a
919 //    number instead of a string.  This flag is only valid for the CalTypes
920 //    beginning with CAL_I.
921 //
922 
923   CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE; // do not use user overrides
924   {$EXTERNALSYM CAL_NOUSEROVERRIDE}
925   CAL_USE_CP_ACP     = LOCALE_USE_CP_ACP; // use the system ACP
926   {$EXTERNALSYM CAL_USE_CP_ACP}
927   CAL_RETURN_NUMBER  = LOCALE_RETURN_NUMBER; // return number instead of string
928   {$EXTERNALSYM CAL_RETURN_NUMBER}
929 
930 //
931 //  The following CalTypes are mutually exclusive in that they may NOT
932 //  be used in combination with each other.
933 //
934 
935   CAL_ICALINTVALUE       = $00000001; // calendar type
936   {$EXTERNALSYM CAL_ICALINTVALUE}
937   CAL_SCALNAME           = $00000002; // native name of calendar
938   {$EXTERNALSYM CAL_SCALNAME}
939   CAL_IYEAROFFSETRANGE   = $00000003; // starting years of eras
940   {$EXTERNALSYM CAL_IYEAROFFSETRANGE}
941   CAL_SERASTRING         = $00000004; // era name for IYearOffsetRanges
942   {$EXTERNALSYM CAL_SERASTRING}
943   CAL_SSHORTDATE         = $00000005; // short date format string
944   {$EXTERNALSYM CAL_SSHORTDATE}
945   CAL_SLONGDATE          = $00000006; // long date format string
946   {$EXTERNALSYM CAL_SLONGDATE}
947   CAL_SDAYNAME1          = $00000007; // native name for Monday
948   {$EXTERNALSYM CAL_SDAYNAME1}
949   CAL_SDAYNAME2          = $00000008; // native name for Tuesday
950   {$EXTERNALSYM CAL_SDAYNAME2}
951   CAL_SDAYNAME3          = $00000009; // native name for Wednesday
952   {$EXTERNALSYM CAL_SDAYNAME3}
953   CAL_SDAYNAME4          = $0000000a; // native name for Thursday
954   {$EXTERNALSYM CAL_SDAYNAME4}
955   CAL_SDAYNAME5          = $0000000b; // native name for Friday
956   {$EXTERNALSYM CAL_SDAYNAME5}
957   CAL_SDAYNAME6          = $0000000c; // native name for Saturday
958   {$EXTERNALSYM CAL_SDAYNAME6}
959   CAL_SDAYNAME7          = $0000000d; // native name for Sunday
960   {$EXTERNALSYM CAL_SDAYNAME7}
961   CAL_SABBREVDAYNAME1    = $0000000e; // abbreviated name for Monday
962   {$EXTERNALSYM CAL_SABBREVDAYNAME1}
963   CAL_SABBREVDAYNAME2    = $0000000f; // abbreviated name for Tuesday
964   {$EXTERNALSYM CAL_SABBREVDAYNAME2}
965   CAL_SABBREVDAYNAME3    = $00000010; // abbreviated name for Wednesday
966   {$EXTERNALSYM CAL_SABBREVDAYNAME3}
967   CAL_SABBREVDAYNAME4    = $00000011; // abbreviated name for Thursday
968   {$EXTERNALSYM CAL_SABBREVDAYNAME4}
969   CAL_SABBREVDAYNAME5    = $00000012; // abbreviated name for Friday
970   {$EXTERNALSYM CAL_SABBREVDAYNAME5}
971   CAL_SABBREVDAYNAME6    = $00000013; // abbreviated name for Saturday
972   {$EXTERNALSYM CAL_SABBREVDAYNAME6}
973   CAL_SABBREVDAYNAME7    = $00000014; // abbreviated name for Sunday
974   {$EXTERNALSYM CAL_SABBREVDAYNAME7}
975   CAL_SMONTHNAME1        = $00000015; // native name for January
976   {$EXTERNALSYM CAL_SMONTHNAME1}
977   CAL_SMONTHNAME2        = $00000016; // native name for February
978   {$EXTERNALSYM CAL_SMONTHNAME2}
979   CAL_SMONTHNAME3        = $00000017; // native name for March
980   {$EXTERNALSYM CAL_SMONTHNAME3}
981   CAL_SMONTHNAME4        = $00000018; // native name for April
982   {$EXTERNALSYM CAL_SMONTHNAME4}
983   CAL_SMONTHNAME5        = $00000019; // native name for May
984   {$EXTERNALSYM CAL_SMONTHNAME5}
985   CAL_SMONTHNAME6        = $0000001a; // native name for June
986   {$EXTERNALSYM CAL_SMONTHNAME6}
987   CAL_SMONTHNAME7        = $0000001b; // native name for July
988   {$EXTERNALSYM CAL_SMONTHNAME7}
989   CAL_SMONTHNAME8        = $0000001c; // native name for August
990   {$EXTERNALSYM CAL_SMONTHNAME8}
991   CAL_SMONTHNAME9        = $0000001d; // native name for September
992   {$EXTERNALSYM CAL_SMONTHNAME9}
993   CAL_SMONTHNAME10       = $0000001e; // native name for October
994   {$EXTERNALSYM CAL_SMONTHNAME10}
995   CAL_SMONTHNAME11       = $0000001f; // native name for November
996   {$EXTERNALSYM CAL_SMONTHNAME11}
997   CAL_SMONTHNAME12       = $00000020; // native name for December
998   {$EXTERNALSYM CAL_SMONTHNAME12}
999   CAL_SMONTHNAME13       = $00000021; // native name for 13th month (if any)
1000   {$EXTERNALSYM CAL_SMONTHNAME13}
1001   CAL_SABBREVMONTHNAME1  = $00000022; // abbreviated name for January
1002   {$EXTERNALSYM CAL_SABBREVMONTHNAME1}
1003   CAL_SABBREVMONTHNAME2  = $00000023; // abbreviated name for February
1004   {$EXTERNALSYM CAL_SABBREVMONTHNAME2}
1005   CAL_SABBREVMONTHNAME3  = $00000024; // abbreviated name for March
1006   {$EXTERNALSYM CAL_SABBREVMONTHNAME3}
1007   CAL_SABBREVMONTHNAME4  = $00000025; // abbreviated name for April
1008   {$EXTERNALSYM CAL_SABBREVMONTHNAME4}
1009   CAL_SABBREVMONTHNAME5  = $00000026; // abbreviated name for May
1010   {$EXTERNALSYM CAL_SABBREVMONTHNAME5}
1011   CAL_SABBREVMONTHNAME6  = $00000027; // abbreviated name for June
1012   {$EXTERNALSYM CAL_SABBREVMONTHNAME6}
1013   CAL_SABBREVMONTHNAME7  = $00000028; // abbreviated name for July
1014   {$EXTERNALSYM CAL_SABBREVMONTHNAME7}
1015   CAL_SABBREVMONTHNAME8  = $00000029; // abbreviated name for August
1016   {$EXTERNALSYM CAL_SABBREVMONTHNAME8}
1017   CAL_SABBREVMONTHNAME9  = $0000002a; // abbreviated name for September
1018   {$EXTERNALSYM CAL_SABBREVMONTHNAME9}
1019   CAL_SABBREVMONTHNAME10 = $0000002b; // abbreviated name for October
1020   {$EXTERNALSYM CAL_SABBREVMONTHNAME10}
1021   CAL_SABBREVMONTHNAME11 = $0000002c; // abbreviated name for November
1022   {$EXTERNALSYM CAL_SABBREVMONTHNAME11}
1023   CAL_SABBREVMONTHNAME12 = $0000002d; // abbreviated name for December
1024   {$EXTERNALSYM CAL_SABBREVMONTHNAME12}
1025   CAL_SABBREVMONTHNAME13 = $0000002e; // abbreviated name for 13th month (if any)
1026   {$EXTERNALSYM CAL_SABBREVMONTHNAME13}
1027 
1028   CAL_SYEARMONTH       = $0000002f; // year month format string
1029   {$EXTERNALSYM CAL_SYEARMONTH}
1030   CAL_ITWODIGITYEARMAX = $00000030; // two digit year max
1031   {$EXTERNALSYM CAL_ITWODIGITYEARMAX}
1032 
1033 //
1034 //  Calendar Enumeration Value.
1035 //
1036 
1037   ENUM_ALL_CALENDARS = DWORD($ffffffff); // enumerate all calendars
1038   {$EXTERNALSYM ENUM_ALL_CALENDARS}
1039 
1040 //
1041 //  Calendar ID Values.
1042 //
1043 
1044   CAL_GREGORIAN              = 1; // Gregorian (localized) calendar
1045   {$EXTERNALSYM CAL_GREGORIAN}
1046   CAL_GREGORIAN_US           = 2; // Gregorian (U.S.) calendar
1047   {$EXTERNALSYM CAL_GREGORIAN_US}
1048   CAL_JAPAN                  = 3; // Japanese Emperor Era calendar
1049   {$EXTERNALSYM CAL_JAPAN}
1050   CAL_TAIWAN                 = 4; // Taiwan Era calendar
1051   {$EXTERNALSYM CAL_TAIWAN}
1052   CAL_KOREA                  = 5; // Korean Tangun calendar
1053   {$EXTERNALSYM CAL_KOREA}
1054   CAL_HIJRI                  = 6; // Hijri (Arabic Lunar) calendar
1055   {$EXTERNALSYM CAL_HIJRI}
1056   CAL_THAI                   = 7; // Thai calendar
1057   {$EXTERNALSYM CAL_THAI}
1058   CAL_HEBREW                 = 8; // Hebrew (Lunar) calendar
1059   {$EXTERNALSYM CAL_HEBREW}
1060   CAL_GREGORIAN_ME_FRENCH    = 9; // Gregorian Middle East French calendar
1061   {$EXTERNALSYM CAL_GREGORIAN_ME_FRENCH}
1062   CAL_GREGORIAN_ARABIC       = 10; // Gregorian Arabic calendar
1063   {$EXTERNALSYM CAL_GREGORIAN_ARABIC}
1064   CAL_GREGORIAN_XLIT_ENGLISH = 11; // Gregorian Transliterated English calendar
1065   {$EXTERNALSYM CAL_GREGORIAN_XLIT_ENGLISH}
1066   CAL_GREGORIAN_XLIT_FRENCH  = 12; // Gregorian Transliterated French calendar
1067   {$EXTERNALSYM CAL_GREGORIAN_XLIT_FRENCH}
1068 
1069 //
1070 //  Language Group ID Values.
1071 //
1072 
1073   LGRPID_WESTERN_EUROPE      = $0001; // Western Europe & U.S.
1074   {$EXTERNALSYM LGRPID_WESTERN_EUROPE}
1075   LGRPID_CENTRAL_EUROPE      = $0002; // Central Europe
1076   {$EXTERNALSYM LGRPID_CENTRAL_EUROPE}
1077   LGRPID_BALTIC              = $0003; // Baltic
1078   {$EXTERNALSYM LGRPID_BALTIC}
1079   LGRPID_GREEK               = $0004; // Greek
1080   {$EXTERNALSYM LGRPID_GREEK}
1081   LGRPID_CYRILLIC            = $0005; // Cyrillic
1082   {$EXTERNALSYM LGRPID_CYRILLIC}
1083   LGRPID_TURKISH             = $0006; // Turkish
1084   {$EXTERNALSYM LGRPID_TURKISH}
1085   LGRPID_JAPANESE            = $0007; // Japanese
1086   {$EXTERNALSYM LGRPID_JAPANESE}
1087   LGRPID_KOREAN              = $0008; // Korean
1088   {$EXTERNALSYM LGRPID_KOREAN}
1089   LGRPID_TRADITIONAL_CHINESE = $0009; // Traditional Chinese
1090   {$EXTERNALSYM LGRPID_TRADITIONAL_CHINESE}
1091   LGRPID_SIMPLIFIED_CHINESE  = $000a; // Simplified Chinese
1092   {$EXTERNALSYM LGRPID_SIMPLIFIED_CHINESE}
1093   LGRPID_THAI                = $000b; // Thai
1094   {$EXTERNALSYM LGRPID_THAI}
1095   LGRPID_HEBREW              = $000c; // Hebrew
1096   {$EXTERNALSYM LGRPID_HEBREW}
1097   LGRPID_ARABIC              = $000d; // Arabic
1098   {$EXTERNALSYM LGRPID_ARABIC}
1099   LGRPID_VIETNAMESE          = $000e; // Vietnamese
1100   {$EXTERNALSYM LGRPID_VIETNAMESE}
1101   LGRPID_INDIC               = $000f; // Indic
1102   {$EXTERNALSYM LGRPID_INDIC}
1103   LGRPID_GEORGIAN            = $0010; // Georgian
1104   {$EXTERNALSYM LGRPID_GEORGIAN}
1105   LGRPID_ARMENIAN            = $0011; // Armenian
1106   {$EXTERNALSYM LGRPID_ARMENIAN}
1107 
1108 ////////////////////////////////////////////////////////////////////////////
1109 //
1110 //  Typedefs
1111 //
1112 //  Define all types for the NLS component here.
1113 //
1114 ////////////////////////////////////////////////////////////////////////////
1115 
1116 //
1117 //  Language Group ID.
1118 //
1119 
1120 type
1121   LGRPID = DWORD;
1122   {$EXTERNALSYM LGRPID}
1123 
1124 //
1125 //  Locale type constant.
1126 //
1127 
1128   LCTYPE = DWORD;
1129   {$EXTERNALSYM LCTYPE}
1130 
1131 //
1132 //  Calendar type constant.
1133 //
1134 
1135   CALTYPE = DWORD;
1136   {$EXTERNALSYM CALTYPE}
1137 
1138 //
1139 //  Calendar ID.
1140 //
1141 
1142   CALID = DWORD;
1143   {$EXTERNALSYM CALID}
1144 
1145 //
1146 //  CP Info.
1147 //
1148 
1149   LPCPINFO = ^CPINFO;
1150   {$EXTERNALSYM LPCPINFO}
1151   _cpinfo = record
1152     MaxCharSize: UINT; // max length (in bytes) of a char
1153     DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE; // default character
1154     LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE; // lead byte ranges
1155   end;
1156   {$EXTERNALSYM _cpinfo}
1157   CPINFO = _cpinfo;
1158   {$EXTERNALSYM CPINFO}
1159   TCpInfo = CPINFO;
1160   PCpInfo = LPCPINFO;
1161 
1162   {$EXTERNALSYM CPINFOEXA}
1163   LPCPINFOEXA = ^CPINFOEXA;
1164   _cpinfoexA = record
1165     MaxCharSize: UINT; // max length (in bytes) of a char
1166     DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE; // default character (MB)
1167     LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE; // lead byte ranges
1168     UnicodeDefaultChar: WCHAR; // default character (Unicode)
1169     CodePage: UINT; // code page id
1170     CodePageName: array [0..MAX_PATH - 1] of CHAR; // code page name (Unicode)
1171   end;
1172   {$EXTERNALSYM _cpinfoexA}
1173   CPINFOEXA = _cpinfoexA;
1174   {$EXTERNALSYM LPCPINFOEXA}
1175   TCpInfoExA = CPINFOEXA;
1176   PCpInfoExA = LPCPINFOEXA;
1177 
1178   LPCPINFOEXW = ^CPINFOEXW;
1179   {$EXTERNALSYM LPCPINFOEXW}
1180   _cpinfoexW = record
1181     MaxCharSize: UINT; // max length (in bytes) of a char
1182     DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE; // default character (MB)
1183     LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE; // lead byte ranges
1184     UnicodeDefaultChar: WCHAR; // default character (Unicode)
1185     CodePage: UINT; // code page id
1186     CodePageName: array [0..MAX_PATH - 1] of WCHAR; // code page name (Unicode)
1187   end;
1188   {$EXTERNALSYM _cpinfoexW}
1189   CPINFOEXW = _cpinfoexW;
1190   {$EXTERNALSYM CPINFOEXW}
1191   TCpInfoExW = CPINFOEXW;
1192   PCpInfoExW = LPCPINFOEXW;
1193 
1194   {$IFDEF UNICODE}
1195   CPINFOEX = CPINFOEXW;
1196   {$EXTERNALSYM CPINFOEX}
1197   LPCPINFOEX = LPCPINFOEXW;
1198   {$EXTERNALSYM LPCPINFOEX}
1199   TCpInfoEx = TCpInfoExW;
1200   PCpInfoEx = PCpInfoExW;
1201   {$ELSE}
1202   CPINFOEX = CPINFOEXA;
1203   {$EXTERNALSYM CPINFOEX}
1204   LPCPINFOEX = LPCPINFOEXA;
1205   {$EXTERNALSYM LPCPINFOEX}
1206   TCpInfoEx = TCpInfoExA;
1207   PCpInfoEx = PCpInfoExA;
1208   {$ENDIF UNICODE}
1209 
1210 //
1211 //  Number format.
1212 //
1213 
1214   LPNUMBERFMTA = ^NUMBERFMTA;
1215   {$EXTERNALSYM LPNUMBERFMTA}
1216   _numberfmtA = record
1217     NumDigits: UINT; // number of decimal digits
1218     LeadingZero: UINT; // if leading zero in decimal fields
1219     Grouping: UINT; // group size left of decimal
1220     lpDecimalSep: LPSTR; // ptr to decimal separator string
1221     lpThousandSep: LPSTR; // ptr to thousand separator string
1222     NegativeOrder: UINT; // negative number ordering
1223   end;
1224   {$EXTERNALSYM _numberfmtA}
1225   NUMBERFMTA = _numberfmtA;
1226   {$EXTERNALSYM NUMBERFMTA}
1227   TNumberFmtA = NUMBERFMTA;
1228   PNumberFmtA = LPNUMBERFMTA;
1229 
1230   LPNUMBERFMTW = ^NUMBERFMTW;
1231   {$EXTERNALSYM LPNUMBERFMTW}
1232   _numberfmtW = record
1233     NumDigits: UINT; // number of decimal digits
1234     LeadingZero: UINT; // if leading zero in decimal fields
1235     Grouping: UINT; // group size left of decimal
1236     lpDecimalSep: LPWSTR; // ptr to decimal separator string
1237     lpThousandSep: LPWSTR; // ptr to thousand separator string
1238     NegativeOrder: UINT; // negative number ordering
1239   end;
1240   {$EXTERNALSYM _numberfmtW}
1241   NUMBERFMTW = _numberfmtW;
1242   {$EXTERNALSYM NUMBERFMTW}
1243   TNumberFmtW = NUMBERFMTW;
1244   PNumberFmtW = LPNUMBERFMTW;
1245 
1246   {$IFDEF UNICODE}
1247   NUMBERFMT = NUMBERFMTW;
1248   {$EXTERNALSYM NUMBERFMT}
1249   LPNUMBERFMT = LPNUMBERFMTW;
1250   {$EXTERNALSYM LPNUMBERFMT}
1251   TNumberFmt = TNumberFmtW;
1252   PNumberFmt = TNumberFmtW;
1253   {$ELSE}
1254   NUMBERFMT = NUMBERFMTA;
1255   {$EXTERNALSYM NUMBERFMT}
1256   LPNUMBERFMT = LPNUMBERFMTA;
1257   {$EXTERNALSYM LPNUMBERFMT}
1258   TNumberFmt = TNumberFmtA;
1259   PNumberFmt = TNumberFmtA;
1260   {$ENDIF UNICODE}
1261 
1262 //
1263 //  Currency format.
1264 //
1265 
1266   LPCURRENCYFMTA = ^CURRENCYFMTA;
1267   {$EXTERNALSYM LPCURRENCYFMTA}
1268   _currencyfmtA = record
1269     NumDigits: UINT; // number of decimal digits
1270     LeadingZero: UINT; // if leading zero in decimal fields
1271     Grouping: UINT; // group size left of decimal
1272     lpDecimalSep: LPSTR; // ptr to decimal separator string
1273     lpThousandSep: LPSTR; // ptr to thousand separator string
1274     NegativeOrder: UINT; // negative currency ordering
1275     PositiveOrder: UINT; // positive currency ordering
1276     lpCurrencySymbol: LPSTR; // ptr to currency symbol string
1277   end;
1278   {$EXTERNALSYM _currencyfmtA}
1279   CURRENCYFMTA = _currencyfmtA;
1280   {$EXTERNALSYM CURRENCYFMTA}
1281   TCurrencyFmtA = CURRENCYFMTA;
1282   PCurrencyFmtA = LPCURRENCYFMTA;
1283 
1284   LPCURRENCYFMTW = ^CURRENCYFMTW;
1285   {$EXTERNALSYM LPCURRENCYFMTW}
1286   _currencyfmtW = record
1287     NumDigits: UINT; // number of decimal digits
1288     LeadingZero: UINT; // if leading zero in decimal fields
1289     Grouping: UINT; // group size left of decimal
1290     lpDecimalSep: LPWSTR; // ptr to decimal separator string
1291     lpThousandSep: LPWSTR; // ptr to thousand separator string
1292     NegativeOrder: UINT; // negative currency ordering
1293     PositiveOrder: UINT; // positive currency ordering
1294     lpCurrencySymbol: LPWSTR; // ptr to currency symbol string
1295   end;
1296   {$EXTERNALSYM _currencyfmtW}
1297   CURRENCYFMTW = _currencyfmtW;
1298   {$EXTERNALSYM CURRENCYFMTW}
1299   TCurrencyFmtW = CURRENCYFMTW;
1300   PCurrencyFmtW = LPCURRENCYFMTW;
1301 
1302   {$IFDEF UNICODE}
1303   CURRENCYFMT = CURRENCYFMTW;
1304   {$EXTERNALSYM CURRENCYFMT}
1305   LPCURRENCYFMT = LPCURRENCYFMTW;
1306   {$EXTERNALSYM LPCURRENCYFMT}
1307   TCurrencyFmt = TCurrencyFmtW;
1308   PCurrencyFmt = PCurrencyFmtW;
1309   {$ELSE}
1310   CURRENCYFMT = CURRENCYFMTA;
1311   {$EXTERNALSYM CURRENCYFMT}
1312   LPCURRENCYFMT = LPCURRENCYFMTA;
1313   {$EXTERNALSYM LPCURRENCYFMT}
1314   TCurrencyFmt = TCurrencyFmtA;
1315   PCurrencyFmt = PCurrencyFmtA;
1316   {$ENDIF UNICODE}
1317 
1318 //
capabilitiesnull1319 //  NLS function capabilities
1320 //
1321 
1322 const
1323   COMPARE_STRING    =  $0001;
1324   {$EXTERNALSYM COMPARE_STRING}
1325 
1326 type
1327   SYSNLS_FUNCTION = DWORD;
1328   {$EXTERNALSYM SYSNLS_FUNCTION}
1329   NLS_FUNCTION = DWORD;
1330   {$EXTERNALSYM NLS_FUNCTION}
1331   TSysNlsFunction = SYSNLS_FUNCTION;
1332   TNlsFunction = NLS_FUNCTION;
1333 
1334 //
1335 //  NLS version structure.
1336 //
1337 
1338   _nlsversioninfo = record
1339     dwNLSVersionInfoSize: DWORD;
1340     dwNLSVersion: DWORD;
1341     dwDefinedVersion: DWORD;
1342   end;
1343   {$EXTERNALSYM _nlsversioninfo}
1344   NLSVERSIONINFO = _nlsversioninfo;
1345   {$EXTERNALSYM NLSVERSIONINFO}
1346   LPNLSVERSIONINFO = ^NLSVERSIONINFO;
1347   {$EXTERNALSYM LPNLSVERSIONINFO}
1348   TNlsVersionInfo = NLSVERSIONINFO;
1349   PNlsVersionInfo = LPNLSVERSIONINFO;
1350 
1351 //
1352 //  GEO defines
1353 //
1354 
1355 type
1356   GEOID = LONG;
1357   {$EXTERNALSYM GEOID}
1358   GEOTYPE = DWORD;
1359   {$EXTERNALSYM GEOTYPE}
1360   GEOCLASS = DWORD;
1361   {$EXTERNALSYM GEOCLASS}
1362 
1363 const
1364   GEOID_NOT_AVAILABLE = -1;
1365   {$EXTERNALSYM GEOID_NOT_AVAILABLE}
1366 
1367 //
1368 //  GEO information types for clients to query
1369 //
1370 
1371 const
1372   GEO_NATION       = $0001;
1373   {$EXTERNALSYM GEO_NATION}
1374   GEO_LATITUDE     = $0002;
1375   {$EXTERNALSYM GEO_LATITUDE}
1376   GEO_LONGITUDE    = $0003;
1377   {$EXTERNALSYM GEO_LONGITUDE}
1378   GEO_ISO2         = $0004;
1379   {$EXTERNALSYM GEO_ISO2}
1380   GEO_ISO3         = $0005;
1381   {$EXTERNALSYM GEO_ISO3}
1382   GEO_RFC1766      = $0006;
1383   {$EXTERNALSYM GEO_RFC1766}
1384   GEO_LCID         = $0007;
1385   {$EXTERNALSYM GEO_LCID}
1386   GEO_FRIENDLYNAME = $0008;
1387   {$EXTERNALSYM GEO_FRIENDLYNAME}
1388   GEO_OFFICIALNAME = $0009;
1389   {$EXTERNALSYM GEO_OFFICIALNAME}
1390   GEO_TIMEZONES    = $000A;
1391   {$EXTERNALSYM GEO_TIMEZONES}
1392   GEO_OFFICIALLANGUAGES = $000B;
1393   {$EXTERNALSYM GEO_OFFICIALLANGUAGES}
1394 
1395 type
1396   SYSGEOTYPE = DWORD;
1397   {$EXTERNALSYM SYSGEOTYPE}
1398 
1399 //
1400 //  More GEOCLASS defines will be listed here
1401 //
1402 
1403 const
1404   GEOCLASS_NATION = 16;
1405   {$EXTERNALSYM GEOCLASS_NATION}
1406   GEOCLASS_REGION = 14;
1407   {$EXTERNALSYM GEOCLASS_REGION}
1408 
1409 type
1410   SYSGEOCLASS = DWORD;
1411   {$EXTERNALSYM SYSGEOCLASS}
1412 
1413 //
constants.null1414 //  Enumeration function constants.
1415 //
1416 
1417 type
1418   LANGUAGEGROUP_ENUMPROCA = function(LanguageGroup: LGRPID; lpLanguageGroupString,
1419     lpLanguageGroupNameSting: LPSTR; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1420   {$EXTERNALSYM LANGUAGEGROUP_ENUMPROCA}
anguageGroupnull1421   LANGGROUPLOCALE_ENUMPROCA = function(LanguageGroup: LGRPID; Locale: LCID;
1422     lpLocaleString: LPSTR; lParam: LONG_PTR): BOOL; stdcall;
1423   {$EXTERNALSYM LANGGROUPLOCALE_ENUMPROCA}
pUILanguageStringnull1424   UILANGUAGE_ENUMPROCA = function(lpUILanguageString: LPSTR; lParam: LONG_PTR): BOOL; stdcall;
1425   {$EXTERNALSYM UILANGUAGE_ENUMPROCA}
pLocaleStringnull1426   LOCALE_ENUMPROCA = function(lpLocaleString: LPSTR): BOOL; stdcall;
1427   {$EXTERNALSYM LOCALE_ENUMPROCA}
pCodePAgeStringnull1428   CODEPAGE_ENUMPROCA = function(lpCodePAgeString: LPSTR): BOOL; stdcall;
1429   {$EXTERNALSYM CODEPAGE_ENUMPROCA}
pDateFormatStringnull1430   DATEFMT_ENUMPROCA = function(lpDateFormatString: LPSTR): BOOL; stdcall;
1431   {$EXTERNALSYM DATEFMT_ENUMPROCA}
pDateFormatStringnull1432   DATEFMT_ENUMPROCEXA = function(lpDateFormatString: LPSTR; CalenderId: CALID): BOOL; stdcall;
1433   {$EXTERNALSYM DATEFMT_ENUMPROCEXA}
pTimeFormatStringnull1434   TIMEFMT_ENUMPROCA = function(lpTimeFormatString: LPSTR): BOOL; stdcall;
1435   {$EXTERNALSYM TIMEFMT_ENUMPROCA}
pCalendarInfoStringnull1436   CALINFO_ENUMPROCA = function(lpCalendarInfoString: LPSTR): BOOL; stdcall;
1437   {$EXTERNALSYM CALINFO_ENUMPROCA}
pCalendarInfoStringnull1438   CALINFO_ENUMPROCEXA = function(lpCalendarInfoString: LPSTR; Calendar: CALID): BOOL; stdcall;
1439   {$EXTERNALSYM CALINFO_ENUMPROCEXA}
1440 
anguageGroupnull1441   LANGUAGEGROUP_ENUMPROCW = function(LanguageGroup: LGRPID; lpLanguageGroupString,
1442     lpLanguageGroupNameSting: LPWSTR; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1443   {$EXTERNALSYM LANGUAGEGROUP_ENUMPROCW}
anguageGroupnull1444   LANGGROUPLOCALE_ENUMPROCW = function(LanguageGroup: LGRPID; Locale: LCID;
1445     lpLocaleString: LPWSTR; lParam: LONG_PTR): BOOL; stdcall;
1446   {$EXTERNALSYM LANGGROUPLOCALE_ENUMPROCW}
pUILanguageStringnull1447   UILANGUAGE_ENUMPROCW = function(lpUILanguageString: LPWSTR; lParam: LONG_PTR): BOOL; stdcall;
1448   {$EXTERNALSYM UILANGUAGE_ENUMPROCW}
pLocaleStringnull1449   LOCALE_ENUMPROCW = function(lpLocaleString: LPWSTR): BOOL; stdcall;
1450   {$EXTERNALSYM LOCALE_ENUMPROCW}
pCodePAgeStringnull1451   CODEPAGE_ENUMPROCW = function(lpCodePAgeString: LPWSTR): BOOL; stdcall;
1452   {$EXTERNALSYM CODEPAGE_ENUMPROCW}
pDateFormatStringnull1453   DATEFMT_ENUMPROCW = function(lpDateFormatString: LPWSTR): BOOL; stdcall;
1454   {$EXTERNALSYM DATEFMT_ENUMPROCW}
pDateFormatStringnull1455   DATEFMT_ENUMPROCEXW = function(lpDateFormatString: LPWSTR; CalenderId: CALID): BOOL; stdcall;
1456   {$EXTERNALSYM DATEFMT_ENUMPROCEXW}
pTimeFormatStringnull1457   TIMEFMT_ENUMPROCW = function(lpTimeFormatString: LPWSTR): BOOL; stdcall;
1458   {$EXTERNALSYM TIMEFMT_ENUMPROCW}
pCalendarInfoStringnull1459   CALINFO_ENUMPROCW = function(lpCalendarInfoString: LPWSTR): BOOL; stdcall;
1460   {$EXTERNALSYM CALINFO_ENUMPROCW}
pCalendarInfoStringnull1461   CALINFO_ENUMPROCEXW = function(lpCalendarInfoString: LPWSTR; Calendar: CALID): BOOL; stdcall;
1462   {$EXTERNALSYM CALINFO_ENUMPROCEXW}
eonull1463   GEO_ENUMPROC = function(geo: GEOID): BOOL; stdcall;
1464   {$EXTERNALSYM GEO_ENUMPROC}
1465 
anguageGroupnull1466   LANGUAGEGROUP_ENUMPROC = function(LanguageGroup: LGRPID; lpLanguageGroupString,
1467     lpLanguageGroupNameSting: LPTSTR; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1468   {$EXTERNALSYM LANGUAGEGROUP_ENUMPROC}
anguageGroupnull1469   LANGGROUPLOCALE_ENUMPROC = function(LanguageGroup: LGRPID; Locale: LCID;
1470     lpLocaleString: LPTSTR; lParam: LONG_PTR): BOOL; stdcall;
1471   {$EXTERNALSYM LANGGROUPLOCALE_ENUMPROC}
pUILanguageStringnull1472   UILANGUAGE_ENUMPROC = function(lpUILanguageString: LPTSTR; lParam: LONG_PTR): BOOL; stdcall;
1473   {$EXTERNALSYM UILANGUAGE_ENUMPROC}
pLocaleStringnull1474   LOCALE_ENUMPROC = function(lpLocaleString: LPTSTR): BOOL; stdcall;
1475   {$EXTERNALSYM LOCALE_ENUMPROC}
pCodePAgeStringnull1476   CODEPAGE_ENUMPROC = function(lpCodePAgeString: LPTSTR): BOOL; stdcall;
1477   {$EXTERNALSYM CODEPAGE_ENUMPROC}
pDateFormatStringnull1478   DATEFMT_ENUMPROC = function(lpDateFormatString: LPTSTR): BOOL; stdcall;
1479   {$EXTERNALSYM DATEFMT_ENUMPROC}
pDateFormatStringnull1480   DATEFMT_ENUMPROCEX = function(lpDateFormatString: LPTSTR; CalenderId: CALID): BOOL; stdcall;
1481   {$EXTERNALSYM DATEFMT_ENUMPROCEX}
pTimeFormatStringnull1482   TIMEFMT_ENUMPROC = function(lpTimeFormatString: LPTSTR): BOOL; stdcall;
1483   {$EXTERNALSYM TIMEFMT_ENUMPROC}
pCalendarInfoStringnull1484   CALINFO_ENUMPROC = function(lpCalendarInfoString: LPTSTR): BOOL; stdcall;
1485   {$EXTERNALSYM CALINFO_ENUMPROC}
pCalendarInfoStringnull1486   CALINFO_ENUMPROCEX = function(lpCalendarInfoString: LPTSTR; Calendar: CALID): BOOL; stdcall;
1487   {$EXTERNALSYM CALINFO_ENUMPROCEX}
1488 
1489 ////////////////////////////////////////////////////////////////////////////
1490 //
1491 //  Macros
1492 //
1493 //  Define all macros for the NLS component here.
1494 //
1495 ////////////////////////////////////////////////////////////////////////////
1496 
1497 ////////////////////////////////////////////////////////////////////////////
1498 //
Prototypesnull1499 //  Function Prototypes
1500 //
1501 //  Only prototypes for the NLS APIs should go here.
1502 //
1503 ////////////////////////////////////////////////////////////////////////////
1504 
1505 //
1506 //  Code Page Dependent APIs.
1507 //
1508 
1509 function IsValidCodePage(CodePage: UINT): BOOL; stdcall;
1510 {$EXTERNALSYM IsValidCodePage}
1511 
GetACPnull1512 function GetACP: UINT; stdcall;
1513 {$EXTERNALSYM GetACP}
1514 
GetOEMCPnull1515 function GetOEMCP: UINT; stdcall;
1516 {$EXTERNALSYM GetOEMCP}
1517 
GetCPInfonull1518 function GetCPInfo(CodePage: UINT; var lpCPInfo: CPINFO): BOOL; stdcall;
1519 {$EXTERNALSYM GetCPInfo}
1520 
GetCPInfoExAnull1521 function GetCPInfoExA(CodePage: UINT; dwFlags: DWORD; var lpCPInfoEx: CPINFOEXA): BOOL; stdcall;
1522 {$EXTERNALSYM GetCPInfoExA}
GetCPInfoExWnull1523 function GetCPInfoExW(CodePage: UINT; dwFlags: DWORD; var lpCPInfoEx: CPINFOEXW): BOOL; stdcall;
1524 {$EXTERNALSYM GetCPInfoExW}
GetCPInfoExnull1525 function GetCPInfoEx(CodePage: UINT; dwFlags: DWORD; var lpCPInfoEx: CPINFOEX): BOOL; stdcall;
1526 {$EXTERNALSYM GetCPInfoEx}
1527 
IsDBCSLeadBytenull1528 function IsDBCSLeadByte(TestChar: BYTE): BOOL; stdcall;
1529 {$EXTERNALSYM IsDBCSLeadByte}
1530 
IsDBCSLeadByteExnull1531 function IsDBCSLeadByteEx(CodePage: UINT; TestChar: BYTE): BOOL; stdcall;
1532 {$EXTERNALSYM IsDBCSLeadByteEx}
1533 
MultiByteToWideCharnull1534 function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: LPCSTR;
1535   cbMultiByte: Integer; lpWideCharStr: LPWSTR; cchWideChar: Integer): Integer; stdcall;
1536 {$EXTERNALSYM MultiByteToWideChar}
1537 
WideCharToMultiBytenull1538 function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: LPCWSTR;
1539   cchWideChar: Integer; lpMultiByteStr: LPSTR; cbMultiByte: Integer;
1540   lpDefaultChar: LPCSTR; lpUsedDefaultChar: LPBOOL): Integer; stdcall;
1541 {$EXTERNALSYM WideCharToMultiByte}
1542 
1543 //
1544 //  Locale Dependent APIs.
1545 //
1546 
CompareStringAnull1547 function CompareStringA(Locale: LCID; dwCmpFlags: DWORD; lpString1: LPCSTR;
1548   cchCount1: Integer; lpString2: LPCSTR; cchCount2: Integer): Integer; stdcall;
1549 {$EXTERNALSYM CompareStringA}
CompareStringWnull1550 function CompareStringW(Locale: LCID; dwCmpFlags: DWORD; lpString1: LPCWSTR;
1551   cchCount1: Integer; lpString2: LPCWSTR; cchCount2: Integer): Integer; stdcall;
1552 {$EXTERNALSYM CompareStringW}
CompareStringnull1553 function CompareString(Locale: LCID; dwCmpFlags: DWORD; lpString1: LPCTSTR;
1554   cchCount1: Integer; lpString2: LPCTSTR; cchCount2: Integer): Integer; stdcall;
1555 {$EXTERNALSYM CompareString}
1556 
LCMapStringAnull1557 function LCMapStringA(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: LPCSTR;
1558   cchSrc: Integer; lpDestStr: LPSTR; cchDest: Integer): Integer; stdcall;
1559 {$EXTERNALSYM LCMapStringA}
LCMapStringWnull1560 function LCMapStringW(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: LPCWSTR;
1561   cchSrc: Integer; lpDestStr: LPWSTR; cchDest: Integer): Integer; stdcall;
1562 {$EXTERNALSYM LCMapStringW}
LCMapStringnull1563 function LCMapString(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: LPCTSTR;
1564   cchSrc: Integer; lpDestStr: LPTSTR; cchDest: Integer): Integer; stdcall;
1565 {$EXTERNALSYM LCMapString}
1566 
GetLocaleInfoAnull1567 function GetLocaleInfoA(Locale: LCID; LCType: LCTYPE; lpLCData: LPSTR;
1568   cchData: Integer): Integer; stdcall;
1569 {$EXTERNALSYM GetLocaleInfoA}
GetLocaleInfoWnull1570 function GetLocaleInfoW(Locale: LCID; LCType: LCTYPE; lpLCData: LPWSTR;
1571   cchData: Integer): Integer; stdcall;
1572 {$EXTERNALSYM GetLocaleInfoW}
GetLocaleInfonull1573 function GetLocaleInfo(Locale: LCID; LCType: LCTYPE; lpLCData: LPTSTR;
1574   cchData: Integer): Integer; stdcall;
1575 {$EXTERNALSYM GetLocaleInfo}
1576 
SetLocaleInfoAnull1577 function SetLocaleInfoA(Locale: LCID; LCType: LCTYPE; lpLCData: LPCSTR): BOOL; stdcall;
1578 {$EXTERNALSYM SetLocaleInfoA}
SetLocaleInfoWnull1579 function SetLocaleInfoW(Locale: LCID; LCType: LCTYPE; lpLCData: LPCWSTR): BOOL; stdcall;
1580 {$EXTERNALSYM SetLocaleInfoW}
SetLocaleInfonull1581 function SetLocaleInfo(Locale: LCID; LCType: LCTYPE; lpLCData: LPCTSTR): BOOL; stdcall;
1582 {$EXTERNALSYM SetLocaleInfo}
1583 
GetCalendarInfoAnull1584 function GetCalendarInfoA(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
1585   lpCalData: LPSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
1586 {$EXTERNALSYM GetCalendarInfoA}
GetCalendarInfoWnull1587 function GetCalendarInfoW(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
1588   lpCalData: LPWSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
1589 {$EXTERNALSYM GetCalendarInfoW}
GetCalendarInfonull1590 function GetCalendarInfo(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
1591   lpCalData: LPTSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
1592 {$EXTERNALSYM GetCalendarInfo}
1593 
SetCalendarInfoAnull1594 function SetCalendarInfoA(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
1595   lpCalData: LPCSTR): BOOL; stdcall;
1596 {$EXTERNALSYM SetCalendarInfoA}
SetCalendarInfoWnull1597 function SetCalendarInfoW(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
1598   lpCalData: LPCWSTR): BOOL; stdcall;
1599 {$EXTERNALSYM SetCalendarInfoW}
SetCalendarInfonull1600 function SetCalendarInfo(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
1601   lpCalData: LPCTSTR): BOOL; stdcall;
1602 {$EXTERNALSYM SetCalendarInfo}
1603 
GetTimeFormatAnull1604 function GetTimeFormatA(Locale: LCID; dwFlags: DWORD; lpTime: LPSYSTEMTIME;
1605   lpFormat: LPCSTR; lpTimeStr: LPSTR; cchTime: Integer): Integer; stdcall;
1606 {$EXTERNALSYM GetTimeFormatA}
GetTimeFormatWnull1607 function GetTimeFormatW(Locale: LCID; dwFlags: DWORD; lpTime: LPSYSTEMTIME;
1608   lpFormat: LPCWSTR; lpTimeStr: LPWSTR; cchTime: Integer): Integer; stdcall;
1609 {$EXTERNALSYM GetTimeFormatW}
GetTimeFormatnull1610 function GetTimeFormat(Locale: LCID; dwFlags: DWORD; lpTime: LPSYSTEMTIME;
1611   lpFormat: LPCTSTR; lpTimeStr: LPTSTR; cchTime: Integer): Integer; stdcall;
1612 {$EXTERNALSYM GetTimeFormat}
1613 
GetDateFormatAnull1614 function GetDateFormatA(Locale: LCID; dwFlags: DWORD; lpDate: LPSYSTEMTIME;
1615   lpFormat: LPCSTR; lpDateStr: LPSTR; cchDate: Integer): Integer; stdcall;
1616 {$EXTERNALSYM GetDateFormatA}
GetDateFormatWnull1617 function GetDateFormatW(Locale: LCID; dwFlags: DWORD; lpDate: LPSYSTEMTIME;
1618   lpFormat: LPCWSTR; lpDateStr: LPWSTR; cchDate: Integer): Integer; stdcall;
1619 {$EXTERNALSYM GetDateFormatW}
GetDateFormatnull1620 function GetDateFormat(Locale: LCID; dwFlags: DWORD; lpDate: LPSYSTEMTIME;
1621   lpFormat: LPCTSTR; lpDateStr: LPTSTR; cchDate: Integer): Integer; stdcall;
1622 {$EXTERNALSYM GetDateFormat}
1623 
GetNumberFormatAnull1624 function GetNumberFormatA(Locale: LCID; dwFlags: DWORD; lpValue: LPCSTR;
1625   lpFormat: LPNUMBERFMTA; lpNumberStr: LPSTR; cchNumber: Integer): Integer; stdcall;
1626 {$EXTERNALSYM GetNumberFormatA}
GetNumberFormatWnull1627 function GetNumberFormatW(Locale: LCID; dwFlags: DWORD; lpValue: LPCWSTR;
1628   lpFormat: LPNUMBERFMTW; lpNumberStr: LPWSTR; cchNumber: Integer): Integer; stdcall;
1629 {$EXTERNALSYM GetNumberFormatW}
GetNumberFormatnull1630 function GetNumberFormat(Locale: LCID; dwFlags: DWORD; lpValue: LPCTSTR;
1631   lpFormat: LPNUMBERFMT; lpNumberStr: LPTSTR; cchNumber: Integer): Integer; stdcall;
1632 {$EXTERNALSYM GetNumberFormat}
1633 
GetCurrencyFormatAnull1634 function GetCurrencyFormatA(Locale: LCID; dwFlags: DWORD; lpValue: LPCSTR;
1635   lpFormat: LPCURRENCYFMTA; lpCurrencyStr: LPSTR; cchCurrency: Integer): Integer; stdcall;
1636 {$EXTERNALSYM GetCurrencyFormatA}
GetCurrencyFormatWnull1637 function GetCurrencyFormatW(Locale: LCID; dwFlags: DWORD; lpValue: LPCWSTR;
1638   lpFormat: LPCURRENCYFMTW; lpCurrencyStr: LPWSTR; cchCurrency: Integer): Integer; stdcall;
1639 {$EXTERNALSYM GetCurrencyFormatW}
GetCurrencyFormatnull1640 function GetCurrencyFormat(Locale: LCID; dwFlags: DWORD; lpValue: LPCTSTR;
1641   lpFormat: LPCURRENCYFMT; lpCurrencyStr: LPTSTR; cchCurrency: Integer): Integer; stdcall;
1642 {$EXTERNALSYM GetCurrencyFormat}
1643 
EnumCalendarInfoAnull1644 function EnumCalendarInfoA(lpCalInfoEnumProc: CALINFO_ENUMPROCA; Locale: LCID;
1645   Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
1646 {$EXTERNALSYM EnumCalendarInfoA}
EnumCalendarInfoWnull1647 function EnumCalendarInfoW(lpCalInfoEnumProc: CALINFO_ENUMPROCW; Locale: LCID;
1648   Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
1649 {$EXTERNALSYM EnumCalendarInfoW}
EnumCalendarInfonull1650 function EnumCalendarInfo(lpCalInfoEnumProc: CALINFO_ENUMPROC; Locale: LCID;
1651   Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
1652 {$EXTERNALSYM EnumCalendarInfo}
1653 
EnumCalendarInfoExAnull1654 function EnumCalendarInfoExA(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA;
1655   Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
1656 {$EXTERNALSYM EnumCalendarInfoExA}
EnumCalendarInfoExWnull1657 function EnumCalendarInfoExW(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW;
1658   Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
1659 {$EXTERNALSYM EnumCalendarInfoExW}
EnumCalendarInfoExnull1660 function EnumCalendarInfoEx(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEX;
1661   Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
1662 {$EXTERNALSYM EnumCalendarInfoEx}
1663 
EnumTimeFormatsAnull1664 function EnumTimeFormatsA(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA; Locale:
1665   LCID; dwFlags: DWORD): BOOL; stdcall;
1666 {$EXTERNALSYM EnumTimeFormatsA}
EnumTimeFormatsWnull1667 function EnumTimeFormatsW(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW; Locale:
1668   LCID; dwFlags: DWORD): BOOL; stdcall;
1669 {$EXTERNALSYM EnumTimeFormatsW}
EnumTimeFormatsnull1670 function EnumTimeFormats(lpTimeFmtEnumProc: TIMEFMT_ENUMPROC; Locale: LCID;
1671   dwFlags: DWORD): BOOL; stdcall;
1672 {$EXTERNALSYM EnumTimeFormats}
1673 
EnumDateFormatsAnull1674 function EnumDateFormatsA(lpDateFmtEnumProc: DATEFMT_ENUMPROCA; Locale: LCID;
1675   dwFlags: DWORD): BOOL; stdcall;
1676 {$EXTERNALSYM EnumDateFormatsA}
EnumDateFormatsWnull1677 function EnumDateFormatsW(lpDateFmtEnumProc: DATEFMT_ENUMPROCW; Locale: LCID;
1678   dwFlags: DWORD): BOOL; stdcall;
1679 {$EXTERNALSYM EnumDateFormatsW}
EnumDateFormatsnull1680 function EnumDateFormats(lpDateFmtEnumProc: DATEFMT_ENUMPROC; Locale: LCID;
1681   dwFlags: DWORD): BOOL; stdcall;
1682 {$EXTERNALSYM EnumDateFormats}
1683 
EnumDateFormatsExAnull1684 function EnumDateFormatsExA(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA;
1685   Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
1686 {$EXTERNALSYM EnumDateFormatsExA}
EnumDateFormatsExWnull1687 function EnumDateFormatsExW(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW;
1688   Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
1689 {$EXTERNALSYM EnumDateFormatsExW}
EnumDateFormatsExnull1690 function EnumDateFormatsEx(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEX;
1691   Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
1692 {$EXTERNALSYM EnumDateFormatsEx}
1693 
IsValidLanguageGroupnull1694 function IsValidLanguageGroup(LanguageGroup: LGRPID; dwFlags: DWORD): BOOL; stdcall;
1695 {$EXTERNALSYM IsValidLanguageGroup}
1696 
GetNLSVersionnull1697 function GetNLSVersion(Function_: NLS_FUNCTION; Locale: LCID; lpVersionInformation: LPNLSVERSIONINFO): BOOL; stdcall;
1698 {$EXTERNALSYM GetNLSVersion}
1699 
IsNLSDefinedStringnull1700 function IsNLSDefinedString(Function_: NLS_FUNCTION; dwFlags: DWORD; lpVersionInformation: LPNLSVERSIONINFO;
1701   lpString: LPCWSTR; cchStr: Integer): BOOL; stdcall;
1702 {$EXTERNALSYM IsNLSDefinedString}
1703 
IsValidLocalenull1704 function IsValidLocale(Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
1705 {$EXTERNALSYM IsValidLocale}
1706 
GetGeoInfoAnull1707 function GetGeoInfoA(Location: GEOID; GeoType: GEOTYPE; lpGeoData: LPSTR;
1708   cchData: Integer; LangId: LANGID): Integer; stdcall;
1709 {$EXTERNALSYM GetGeoInfoA}
GetGeoInfoWnull1710 function GetGeoInfoW(Location: GEOID; GeoType: GEOTYPE; lpGeoData: LPWSTR;
1711   cchData: Integer; LangId: LANGID): Integer; stdcall;
1712 {$EXTERNALSYM GetGeoInfoW}
GetGeoInfonull1713 function GetGeoInfo(Location: GEOID; GeoType: GEOTYPE; lpGeoData: LPTSTR;
1714   cchData: Integer; LangId: LANGID): Integer; stdcall;
1715 {$EXTERNALSYM GetGeoInfo}
1716 
EnumSystemGeoIDnull1717 function EnumSystemGeoID(GeoClass: GEOCLASS; ParentGeoId: GEOID; lpGeoEnumProc: GEO_ENUMPROC): BOOL; stdcall;
1718 {$EXTERNALSYM EnumSystemGeoID}
1719 
GetUserGeoIDnull1720 function GetUserGeoID(GeoClass: GEOCLASS): GEOID; stdcall;
1721 {$EXTERNALSYM GetUserGeoID}
1722 
SetUserGeoIDnull1723 function SetUserGeoID(GeoId: GEOID): BOOL; stdcall;
1724 {$EXTERNALSYM SetUserGeoID}
1725 
ConvertDefaultLocalenull1726 function ConvertDefaultLocale(Locale: LCID): LCID; stdcall;
1727 {$EXTERNALSYM ConvertDefaultLocale}
1728 
GetThreadLocalenull1729 function GetThreadLocale: LCID; stdcall;
1730 {$EXTERNALSYM GetThreadLocale}
1731 
SetThreadLocalenull1732 function SetThreadLocale(Locale: LCID): BOOL; stdcall;
1733 {$EXTERNALSYM SetThreadLocale}
1734 
GetSystemDefaultUILanguagenull1735 function GetSystemDefaultUILanguage: LANGID; stdcall;
1736 {$EXTERNALSYM GetSystemDefaultUILanguage}
1737 
GetUserDefaultUILanguagenull1738 function GetUserDefaultUILanguage: LANGID; stdcall;
1739 {$EXTERNALSYM GetUserDefaultUILanguage}
1740 
GetSystemDefaultLangIDnull1741 function GetSystemDefaultLangID: LANGID; stdcall;
1742 {$EXTERNALSYM GetSystemDefaultLangID}
1743 
GetUserDefaultLangIDnull1744 function GetUserDefaultLangID: LANGID; stdcall;
1745 {$EXTERNALSYM GetUserDefaultLangID}
1746 
GetSystemDefaultLCIDnull1747 function GetSystemDefaultLCID: LCID; stdcall;
1748 {$EXTERNALSYM GetSystemDefaultLCID}
1749 
GetUserDefaultLCIDnull1750 function GetUserDefaultLCID: LCID; stdcall;
1751 {$EXTERNALSYM GetUserDefaultLCID}
1752 
1753 //
1754 //  Locale Independent APIs.
1755 //
1756 
GetStringTypeExAnull1757 function GetStringTypeExA(Locale: LCID; dwInfoType: DWORD; lpSrcStr: LPCSTR;
1758   cchSrc: Integer; lpCharType: LPWORD): BOOL; stdcall;
1759 {$EXTERNALSYM GetStringTypeExA}
GetStringTypeExWnull1760 function GetStringTypeExW(Locale: LCID; dwInfoType: DWORD; lpSrcStr: LPCWSTR;
1761   cchSrc: Integer; lpCharType: LPWORD): BOOL; stdcall;
1762 {$EXTERNALSYM GetStringTypeExW}
GetStringTypeExnull1763 function GetStringTypeEx(Locale: LCID; dwInfoType: DWORD; lpSrcStr: LPCTSTR;
1764   cchSrc: Integer; lpCharType: LPWORD): BOOL; stdcall;
1765 {$EXTERNALSYM GetStringTypeEx}
1766 
1767 //
1768 //  NOTE: The parameters for GetStringTypeA and GetStringTypeW are
1769 //        NOT the same.  The W version was shipped in NT 3.1.  The
1770 //        A version was then shipped in 16-bit OLE with the wrong
1771 //        parameters (ported from Win95).  To be compatible, we
1772 //        must break the relationship between the A and W versions
callnull1773 //        of GetStringType.  There will be NO function call for the
1774 //        generic GetStringType.
1775 //
1776 //        GetStringTypeEx (above) should be used instead.
1777 //
1778 
1779 function GetStringTypeA(Locale: LCID; dwInfoType: DWORD; lpSrcStr: LPCSTR;
1780   cchSrc: Integer; lpCharType: LPWORD): BOOL; stdcall;
1781 {$EXTERNALSYM GetStringTypeA}
GetStringTypeWnull1782 function GetStringTypeW(dwInfoType: DWORD; lpSrcStr: LPCWSTR; cchSrc: Integer;
1783   lpCharType: LPWORD): BOOL; stdcall;
1784 {$EXTERNALSYM GetStringTypeW}
1785 
FoldStringAnull1786 function FoldStringA(dwMapFlags: DWORD; lpSrcStr: LPCSTR; cchSrc: Integer;
1787   lpDestStr: LPSTR; cchDest: Integer): Integer; stdcall;
1788 {$EXTERNALSYM FoldStringA}
FoldStringWnull1789 function FoldStringW(dwMapFlags: DWORD; lpSrcStr: LPCWSTR; cchSrc: Integer;
1790   lpDestStr: LPWSTR; cchDest: Integer): Integer; stdcall;
1791 {$EXTERNALSYM FoldStringW}
FoldStringnull1792 function FoldString(dwMapFlags: DWORD; lpSrcStr: LPCTSTR; cchSrc: Integer;
1793   lpDestStr: LPTSTR; cchDest: Integer): Integer; stdcall;
1794 {$EXTERNALSYM FoldString}
1795 
EnumSystemLanguageGroupsAnull1796 function EnumSystemLanguageGroupsA(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA;
1797   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1798 {$EXTERNALSYM EnumSystemLanguageGroupsA}
EnumSystemLanguageGroupsWnull1799 function EnumSystemLanguageGroupsW(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW;
1800   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1801 {$EXTERNALSYM EnumSystemLanguageGroupsW}
EnumSystemLanguageGroupsnull1802 function EnumSystemLanguageGroups(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROC;
1803   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1804 {$EXTERNALSYM EnumSystemLanguageGroups}
1805 
EnumLanguageGroupLocalesAnull1806 function EnumLanguageGroupLocalesA(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA;
1807   LanguageGroup: LGRPID; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1808 {$EXTERNALSYM EnumLanguageGroupLocalesA}
EnumLanguageGroupLocalesWnull1809 function EnumLanguageGroupLocalesW(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW;
1810   LanguageGroup: LGRPID; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1811 {$EXTERNALSYM EnumLanguageGroupLocalesW}
EnumLanguageGroupLocalesnull1812 function EnumLanguageGroupLocales(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROC;
1813   LanguageGroup: LGRPID; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1814 {$EXTERNALSYM EnumLanguageGroupLocales}
1815 
EnumUILanguagesAnull1816 function EnumUILanguagesA(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA;
1817   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1818 {$EXTERNALSYM EnumUILanguagesA}
EnumUILanguagesWnull1819 function EnumUILanguagesW(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW;
1820   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1821 {$EXTERNALSYM EnumUILanguagesW}
EnumUILanguagesnull1822 function EnumUILanguages(lpUILanguageEnumProc: UILANGUAGE_ENUMPROC;
1823   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
1824 {$EXTERNALSYM EnumUILanguages}
1825 
EnumSystemLocalesAnull1826 function EnumSystemLocalesA(lpLocaleEnumProc: LOCALE_ENUMPROCA;
1827   dwFlags: DWORD): BOOL; stdcall;
1828 {$EXTERNALSYM EnumSystemLocalesA}
EnumSystemLocalesWnull1829 function EnumSystemLocalesW(lpLocaleEnumProc: LOCALE_ENUMPROCW;
1830   dwFlags: DWORD): BOOL; stdcall;
1831 {$EXTERNALSYM EnumSystemLocalesW}
EnumSystemLocalesnull1832 function EnumSystemLocales(lpLocaleEnumProc: LOCALE_ENUMPROC;
1833   dwFlags: DWORD): BOOL; stdcall;
1834 {$EXTERNALSYM EnumSystemLocales}
1835 
EnumSystemCodePagesAnull1836 function EnumSystemCodePagesA(lpCodePageEnumProc: CODEPAGE_ENUMPROCA;
1837   dwFlags: DWORD): BOOL; stdcall;
1838 {$EXTERNALSYM EnumSystemCodePagesA}
EnumSystemCodePagesWnull1839 function EnumSystemCodePagesW(lpCodePageEnumProc: CODEPAGE_ENUMPROCW;
1840   dwFlags: DWORD): BOOL; stdcall;
1841 {$EXTERNALSYM EnumSystemCodePagesW}
EnumSystemCodePagesnull1842 function EnumSystemCodePages(lpCodePageEnumProc: CODEPAGE_ENUMPROC;
1843   dwFlags: DWORD): BOOL; stdcall;
1844 {$EXTERNALSYM EnumSystemCodePages}
1845 
1846 {$ENDIF JWA_IMPLEMENTATIONSECTION}
1847 
1848 {$IFNDEF JWA_OMIT_SECTIONS}
1849 implementation
1850 //uses ...
1851 {$ENDIF JWA_OMIT_SECTIONS}
1852 
1853 {$IFNDEF JWA_INTERFACESECTION}
1854 
1855 {$IFNDEF JWA_INCLUDEMODE}
1856 const
1857   kernel32 = 'kernel32.dll';
1858 
1859   {$IFDEF UNICODE}
1860   AWSuffix = 'W';
1861   {$ELSE}
1862   AWSuffix = 'A';
1863   {$ENDIF UNICODE}
1864 {$ENDIF JWA_INCLUDEMODE}
1865 
1866 {$IFDEF DYNAMIC_LINK}
1867 
1868 var
1869   _IsValidCodePage: Pointer;
1870 
IsValidCodePagenull1871 function IsValidCodePage;
1872 begin
1873   GetProcedureAddress(_IsValidCodePage, kernel32, 'IsValidCodePage');
1874   asm
1875         MOV     ESP, EBP
1876         POP     EBP
1877         JMP     [_IsValidCodePage]
1878   end;
1879 end;
1880 
1881 var
1882   _GetACP: Pointer;
1883 
GetACPnull1884 function GetACP;
1885 begin
1886   GetProcedureAddress(_GetACP, kernel32, 'GetACP');
1887   asm
1888         MOV     ESP, EBP
1889         POP     EBP
1890         JMP     [_GetACP]
1891   end;
1892 end;
1893 
1894 var
1895   _GetOEMCP: Pointer;
1896 
GetOEMCPnull1897 function GetOEMCP;
1898 begin
1899   GetProcedureAddress(_GetOEMCP, kernel32, 'GetOEMCP');
1900   asm
1901         MOV     ESP, EBP
1902         POP     EBP
1903         JMP     [_GetOEMCP]
1904   end;
1905 end;
1906 
1907 var
1908   _GetCPInfo: Pointer;
1909 
GetCPInfonull1910 function GetCPInfo;
1911 begin
1912   GetProcedureAddress(_GetCPInfo, kernel32, 'GetCPInfo');
1913   asm
1914         MOV     ESP, EBP
1915         POP     EBP
1916         JMP     [_GetCPInfo]
1917   end;
1918 end;
1919 
1920 var
1921   _GetCPInfoExA: Pointer;
1922 
GetCPInfoExAnull1923 function GetCPInfoExA;
1924 begin
1925   GetProcedureAddress(_GetCPInfoExA, kernel32, 'GetCPInfoExA');
1926   asm
1927         MOV     ESP, EBP
1928         POP     EBP
1929         JMP     [_GetCPInfoExA]
1930   end;
1931 end;
1932 
1933 var
1934   _GetCPInfoExW: Pointer;
1935 
GetCPInfoExWnull1936 function GetCPInfoExW;
1937 begin
1938   GetProcedureAddress(_GetCPInfoExW, kernel32, 'GetCPInfoExW');
1939   asm
1940         MOV     ESP, EBP
1941         POP     EBP
1942         JMP     [_GetCPInfoExW]
1943   end;
1944 end;
1945 
1946 var
1947   _GetCPInfoEx: Pointer;
1948 
GetCPInfoExnull1949 function GetCPInfoEx;
1950 begin
1951   GetProcedureAddress(_GetCPInfoEx, kernel32, 'GetCPInfoEx' + AWSuffix);
1952   asm
1953         MOV     ESP, EBP
1954         POP     EBP
1955         JMP     [_GetCPInfoEx]
1956   end;
1957 end;
1958 
1959 var
1960   _IsDBCSLeadByte: Pointer;
1961 
IsDBCSLeadBytenull1962 function IsDBCSLeadByte;
1963 begin
1964   GetProcedureAddress(_IsDBCSLeadByte, kernel32, 'IsDBCSLeadByte');
1965   asm
1966         MOV     ESP, EBP
1967         POP     EBP
1968         JMP     [_IsDBCSLeadByte]
1969   end;
1970 end;
1971 
1972 var
1973   _IsDBCSLeadByteEx: Pointer;
1974 
IsDBCSLeadByteExnull1975 function IsDBCSLeadByteEx;
1976 begin
1977   GetProcedureAddress(_IsDBCSLeadByteEx, kernel32, 'IsDBCSLeadByteEx');
1978   asm
1979         MOV     ESP, EBP
1980         POP     EBP
1981         JMP     [_IsDBCSLeadByteEx]
1982   end;
1983 end;
1984 
1985 var
1986   _MultiByteToWideChar: Pointer;
1987 
MultiByteToWideCharnull1988 function MultiByteToWideChar;
1989 begin
1990   GetProcedureAddress(_MultiByteToWideChar, kernel32, 'MultiByteToWideChar');
1991   asm
1992         MOV     ESP, EBP
1993         POP     EBP
1994         JMP     [_MultiByteToWideChar]
1995   end;
1996 end;
1997 
1998 var
1999   _WideCharToMultiByte: Pointer;
2000 
WideCharToMultiBytenull2001 function WideCharToMultiByte;
2002 begin
2003   GetProcedureAddress(_WideCharToMultiByte, kernel32, 'WideCharToMultiByte');
2004   asm
2005         MOV     ESP, EBP
2006         POP     EBP
2007         JMP     [_WideCharToMultiByte]
2008   end;
2009 end;
2010 
2011 var
2012   _CompareStringA: Pointer;
2013 
CompareStringAnull2014 function CompareStringA;
2015 begin
2016   GetProcedureAddress(_CompareStringA, kernel32, 'CompareStringA');
2017   asm
2018         MOV     ESP, EBP
2019         POP     EBP
2020         JMP     [_CompareStringA]
2021   end;
2022 end;
2023 
2024 var
2025   _CompareStringW: Pointer;
2026 
CompareStringWnull2027 function CompareStringW;
2028 begin
2029   GetProcedureAddress(_CompareStringW, kernel32, 'CompareStringW');
2030   asm
2031         MOV     ESP, EBP
2032         POP     EBP
2033         JMP     [_CompareStringW]
2034   end;
2035 end;
2036 
2037 var
2038   _CompareString: Pointer;
2039 
CompareStringnull2040 function CompareString;
2041 begin
2042   GetProcedureAddress(_CompareString, kernel32, 'CompareString' + AWSuffix);
2043   asm
2044         MOV     ESP, EBP
2045         POP     EBP
2046         JMP     [_CompareString]
2047   end;
2048 end;
2049 
2050 var
2051   _LCMapStringA: Pointer;
2052 
LCMapStringAnull2053 function LCMapStringA;
2054 begin
2055   GetProcedureAddress(_LCMapStringA, kernel32, 'LCMapStringA');
2056   asm
2057         MOV     ESP, EBP
2058         POP     EBP
2059         JMP     [_LCMapStringA]
2060   end;
2061 end;
2062 
2063 var
2064   _LCMapStringW: Pointer;
2065 
LCMapStringWnull2066 function LCMapStringW;
2067 begin
2068   GetProcedureAddress(_LCMapStringW, kernel32, 'LCMapStringW');
2069   asm
2070         MOV     ESP, EBP
2071         POP     EBP
2072         JMP     [_LCMapStringW]
2073   end;
2074 end;
2075 
2076 var
2077   _LCMapString: Pointer;
2078 
LCMapStringnull2079 function LCMapString;
2080 begin
2081   GetProcedureAddress(_LCMapString, kernel32, 'LCMapString' + AWSuffix);
2082   asm
2083         MOV     ESP, EBP
2084         POP     EBP
2085         JMP     [_LCMapString]
2086   end;
2087 end;
2088 
2089 var
2090   _GetLocaleInfoA: Pointer;
2091 
GetLocaleInfoAnull2092 function GetLocaleInfoA;
2093 begin
2094   GetProcedureAddress(_GetLocaleInfoA, kernel32, 'GetLocaleInfoA');
2095   asm
2096         MOV     ESP, EBP
2097         POP     EBP
2098         JMP     [_GetLocaleInfoA]
2099   end;
2100 end;
2101 
2102 var
2103   _GetLocaleInfoW: Pointer;
2104 
GetLocaleInfoWnull2105 function GetLocaleInfoW;
2106 begin
2107   GetProcedureAddress(_GetLocaleInfoW, kernel32, 'GetLocaleInfoW');
2108   asm
2109         MOV     ESP, EBP
2110         POP     EBP
2111         JMP     [_GetLocaleInfoW]
2112   end;
2113 end;
2114 
2115 var
2116   _GetLocaleInfo: Pointer;
2117 
GetLocaleInfonull2118 function GetLocaleInfo;
2119 begin
2120   GetProcedureAddress(_GetLocaleInfo, kernel32, 'GetLocaleInfo' + AWSuffix);
2121   asm
2122         MOV     ESP, EBP
2123         POP     EBP
2124         JMP     [_GetLocaleInfo]
2125   end;
2126 end;
2127 
2128 var
2129   _SetLocaleInfoA: Pointer;
2130 
SetLocaleInfoAnull2131 function SetLocaleInfoA;
2132 begin
2133   GetProcedureAddress(_SetLocaleInfoA, kernel32, 'SetLocaleInfoA');
2134   asm
2135         MOV     ESP, EBP
2136         POP     EBP
2137         JMP     [_SetLocaleInfoA]
2138   end;
2139 end;
2140 
2141 var
2142   _SetLocaleInfoW: Pointer;
2143 
SetLocaleInfoWnull2144 function SetLocaleInfoW;
2145 begin
2146   GetProcedureAddress(_SetLocaleInfoW, kernel32, 'SetLocaleInfoW');
2147   asm
2148         MOV     ESP, EBP
2149         POP     EBP
2150         JMP     [_SetLocaleInfoW]
2151   end;
2152 end;
2153 
2154 var
2155   _SetLocaleInfo: Pointer;
2156 
SetLocaleInfonull2157 function SetLocaleInfo;
2158 begin
2159   GetProcedureAddress(_SetLocaleInfo, kernel32, 'SetLocaleInfo' + AWSuffix);
2160   asm
2161         MOV     ESP, EBP
2162         POP     EBP
2163         JMP     [_SetLocaleInfo]
2164   end;
2165 end;
2166 
2167 var
2168   _GetCalendarInfoA: Pointer;
2169 
GetCalendarInfoAnull2170 function GetCalendarInfoA;
2171 begin
2172   GetProcedureAddress(_GetCalendarInfoA, kernel32, 'GetCalendarInfoA');
2173   asm
2174         MOV     ESP, EBP
2175         POP     EBP
2176         JMP     [_GetCalendarInfoA]
2177   end;
2178 end;
2179 
2180 var
2181   _GetCalendarInfoW: Pointer;
2182 
GetCalendarInfoWnull2183 function GetCalendarInfoW;
2184 begin
2185   GetProcedureAddress(_GetCalendarInfoW, kernel32, 'GetCalendarInfoW');
2186   asm
2187         MOV     ESP, EBP
2188         POP     EBP
2189         JMP     [_GetCalendarInfoW]
2190   end;
2191 end;
2192 
2193 var
2194   _GetCalendarInfo: Pointer;
2195 
GetCalendarInfonull2196 function GetCalendarInfo;
2197 begin
2198   GetProcedureAddress(_GetCalendarInfo, kernel32, 'GetCalendarInfo' + AWSuffix);
2199   asm
2200         MOV     ESP, EBP
2201         POP     EBP
2202         JMP     [_GetCalendarInfo]
2203   end;
2204 end;
2205 
2206 var
2207   _SetCalendarInfoA: Pointer;
2208 
SetCalendarInfoAnull2209 function SetCalendarInfoA;
2210 begin
2211   GetProcedureAddress(_SetCalendarInfoA, kernel32, 'SetCalendarInfoA');
2212   asm
2213         MOV     ESP, EBP
2214         POP     EBP
2215         JMP     [_SetCalendarInfoA]
2216   end;
2217 end;
2218 
2219 var
2220   _SetCalendarInfoW: Pointer;
2221 
SetCalendarInfoWnull2222 function SetCalendarInfoW;
2223 begin
2224   GetProcedureAddress(_SetCalendarInfoW, kernel32, 'SetCalendarInfoW');
2225   asm
2226         MOV     ESP, EBP
2227         POP     EBP
2228         JMP     [_SetCalendarInfoW]
2229   end;
2230 end;
2231 
2232 var
2233   _SetCalendarInfo: Pointer;
2234 
SetCalendarInfonull2235 function SetCalendarInfo;
2236 begin
2237   GetProcedureAddress(_SetCalendarInfo, kernel32, 'SetCalendarInfo' + AWSuffix);
2238   asm
2239         MOV     ESP, EBP
2240         POP     EBP
2241         JMP     [_SetCalendarInfo]
2242   end;
2243 end;
2244 
2245 var
2246   _GetTimeFormatA: Pointer;
2247 
GetTimeFormatAnull2248 function GetTimeFormatA;
2249 begin
2250   GetProcedureAddress(_GetTimeFormatA, kernel32, 'GetTimeFormatA');
2251   asm
2252         MOV     ESP, EBP
2253         POP     EBP
2254         JMP     [_GetTimeFormatA]
2255   end;
2256 end;
2257 
2258 var
2259   _GetTimeFormatW: Pointer;
2260 
GetTimeFormatWnull2261 function GetTimeFormatW;
2262 begin
2263   GetProcedureAddress(_GetTimeFormatW, kernel32, 'GetTimeFormatW');
2264   asm
2265         MOV     ESP, EBP
2266         POP     EBP
2267         JMP     [_GetTimeFormatW]
2268   end;
2269 end;
2270 
2271 var
2272   _GetTimeFormat: Pointer;
2273 
GetTimeFormatnull2274 function GetTimeFormat;
2275 begin
2276   GetProcedureAddress(_GetTimeFormat, kernel32, 'GetTimeFormat' + AWSuffix);
2277   asm
2278         MOV     ESP, EBP
2279         POP     EBP
2280         JMP     [_GetTimeFormat]
2281   end;
2282 end;
2283 
2284 var
2285   _GetDateFormatA: Pointer;
2286 
GetDateFormatAnull2287 function GetDateFormatA;
2288 begin
2289   GetProcedureAddress(_GetDateFormatA, kernel32, 'GetDateFormatA');
2290   asm
2291         MOV     ESP, EBP
2292         POP     EBP
2293         JMP     [_GetDateFormatA]
2294   end;
2295 end;
2296 
2297 var
2298   _GetDateFormatW: Pointer;
2299 
GetDateFormatWnull2300 function GetDateFormatW;
2301 begin
2302   GetProcedureAddress(_GetDateFormatW, kernel32, 'GetDateFormatW');
2303   asm
2304         MOV     ESP, EBP
2305         POP     EBP
2306         JMP     [_GetDateFormatW]
2307   end;
2308 end;
2309 
2310 var
2311   _GetDateFormat: Pointer;
2312 
GetDateFormatnull2313 function GetDateFormat;
2314 begin
2315   GetProcedureAddress(_GetDateFormat, kernel32, 'GetDateFormat' + AWSuffix);
2316   asm
2317         MOV     ESP, EBP
2318         POP     EBP
2319         JMP     [_GetDateFormat]
2320   end;
2321 end;
2322 
2323 var
2324   _GetNumberFormatA: Pointer;
2325 
GetNumberFormatAnull2326 function GetNumberFormatA;
2327 begin
2328   GetProcedureAddress(_GetNumberFormatA, kernel32, 'GetNumberFormatA');
2329   asm
2330         MOV     ESP, EBP
2331         POP     EBP
2332         JMP     [_GetNumberFormatA]
2333   end;
2334 end;
2335 
2336 var
2337   _GetNumberFormatW: Pointer;
2338 
GetNumberFormatWnull2339 function GetNumberFormatW;
2340 begin
2341   GetProcedureAddress(_GetNumberFormatW, kernel32, 'GetNumberFormatW');
2342   asm
2343         MOV     ESP, EBP
2344         POP     EBP
2345         JMP     [_GetNumberFormatW]
2346   end;
2347 end;
2348 
2349 var
2350   _GetNumberFormat: Pointer;
2351 
GetNumberFormatnull2352 function GetNumberFormat;
2353 begin
2354   GetProcedureAddress(_GetNumberFormat, kernel32, 'GetNumberFormat' + AWSuffix);
2355   asm
2356         MOV     ESP, EBP
2357         POP     EBP
2358         JMP     [_GetNumberFormat]
2359   end;
2360 end;
2361 
2362 var
2363   _GetCurrencyFormatA: Pointer;
2364 
GetCurrencyFormatAnull2365 function GetCurrencyFormatA;
2366 begin
2367   GetProcedureAddress(_GetCurrencyFormatA, kernel32, 'GetCurrencyFormatA');
2368   asm
2369         MOV     ESP, EBP
2370         POP     EBP
2371         JMP     [_GetCurrencyFormatA]
2372   end;
2373 end;
2374 
2375 var
2376   _GetCurrencyFormatW: Pointer;
2377 
GetCurrencyFormatWnull2378 function GetCurrencyFormatW;
2379 begin
2380   GetProcedureAddress(_GetCurrencyFormatW, kernel32, 'GetCurrencyFormatW');
2381   asm
2382         MOV     ESP, EBP
2383         POP     EBP
2384         JMP     [_GetCurrencyFormatW]
2385   end;
2386 end;
2387 
2388 var
2389   _GetCurrencyFormat: Pointer;
2390 
GetCurrencyFormatnull2391 function GetCurrencyFormat;
2392 begin
2393   GetProcedureAddress(_GetCurrencyFormat, kernel32, 'GetCurrencyFormat' + AWSuffix);
2394   asm
2395         MOV     ESP, EBP
2396         POP     EBP
2397         JMP     [_GetCurrencyFormat]
2398   end;
2399 end;
2400 
2401 var
2402   _EnumCalendarInfoA: Pointer;
2403 
EnumCalendarInfoAnull2404 function EnumCalendarInfoA;
2405 begin
2406   GetProcedureAddress(_EnumCalendarInfoA, kernel32, 'EnumCalendarInfoA');
2407   asm
2408         MOV     ESP, EBP
2409         POP     EBP
2410         JMP     [_EnumCalendarInfoA]
2411   end;
2412 end;
2413 
2414 var
2415   _EnumCalendarInfoW: Pointer;
2416 
EnumCalendarInfoWnull2417 function EnumCalendarInfoW;
2418 begin
2419   GetProcedureAddress(_EnumCalendarInfoW, kernel32, 'EnumCalendarInfoW');
2420   asm
2421         MOV     ESP, EBP
2422         POP     EBP
2423         JMP     [_EnumCalendarInfoW]
2424   end;
2425 end;
2426 
2427 var
2428   _EnumCalendarInfo: Pointer;
2429 
EnumCalendarInfonull2430 function EnumCalendarInfo;
2431 begin
2432   GetProcedureAddress(_EnumCalendarInfo, kernel32, 'EnumCalendarInfo' + AWSuffix);
2433   asm
2434         MOV     ESP, EBP
2435         POP     EBP
2436         JMP     [_EnumCalendarInfo]
2437   end;
2438 end;
2439 
2440 var
2441   _EnumCalendarInfoExA: Pointer;
2442 
EnumCalendarInfoExAnull2443 function EnumCalendarInfoExA;
2444 begin
2445   GetProcedureAddress(_EnumCalendarInfoExA, kernel32, 'EnumCalendarInfoExA');
2446   asm
2447         MOV     ESP, EBP
2448         POP     EBP
2449         JMP     [_EnumCalendarInfoExA]
2450   end;
2451 end;
2452 
2453 var
2454   _EnumCalendarInfoExW: Pointer;
2455 
EnumCalendarInfoExWnull2456 function EnumCalendarInfoExW;
2457 begin
2458   GetProcedureAddress(_EnumCalendarInfoExW, kernel32, 'EnumCalendarInfoExW');
2459   asm
2460         MOV     ESP, EBP
2461         POP     EBP
2462         JMP     [_EnumCalendarInfoExW]
2463   end;
2464 end;
2465 
2466 var
2467   _EnumCalendarInfoEx: Pointer;
2468 
EnumCalendarInfoExnull2469 function EnumCalendarInfoEx;
2470 begin
2471   GetProcedureAddress(_EnumCalendarInfoEx, kernel32, 'EnumCalendarInfoEx' + AWSuffix);
2472   asm
2473         MOV     ESP, EBP
2474         POP     EBP
2475         JMP     [_EnumCalendarInfoEx]
2476   end;
2477 end;
2478 
2479 var
2480   _EnumTimeFormatsA: Pointer;
2481 
EnumTimeFormatsAnull2482 function EnumTimeFormatsA;
2483 begin
2484   GetProcedureAddress(_EnumTimeFormatsA, kernel32, 'EnumTimeFormatsA');
2485   asm
2486         MOV     ESP, EBP
2487         POP     EBP
2488         JMP     [_EnumTimeFormatsA]
2489   end;
2490 end;
2491 
2492 var
2493   _EnumTimeFormatsW: Pointer;
2494 
EnumTimeFormatsWnull2495 function EnumTimeFormatsW;
2496 begin
2497   GetProcedureAddress(_EnumTimeFormatsW, kernel32, 'EnumTimeFormatsW');
2498   asm
2499         MOV     ESP, EBP
2500         POP     EBP
2501         JMP     [_EnumTimeFormatsW]
2502   end;
2503 end;
2504 
2505 var
2506   _EnumTimeFormats: Pointer;
2507 
EnumTimeFormatsnull2508 function EnumTimeFormats;
2509 begin
2510   GetProcedureAddress(_EnumTimeFormats, kernel32, 'EnumTimeFormats' + AWSuffix);
2511   asm
2512         MOV     ESP, EBP
2513         POP     EBP
2514         JMP     [_EnumTimeFormats]
2515   end;
2516 end;
2517 
2518 var
2519   _EnumDateFormatsA: Pointer;
2520 
EnumDateFormatsAnull2521 function EnumDateFormatsA;
2522 begin
2523   GetProcedureAddress(_EnumDateFormatsA, kernel32, 'EnumDateFormatsA');
2524   asm
2525         MOV     ESP, EBP
2526         POP     EBP
2527         JMP     [_EnumDateFormatsA]
2528   end;
2529 end;
2530 
2531 var
2532   _EnumDateFormatsW: Pointer;
2533 
EnumDateFormatsWnull2534 function EnumDateFormatsW;
2535 begin
2536   GetProcedureAddress(_EnumDateFormatsW, kernel32, 'EnumDateFormatsW');
2537   asm
2538         MOV     ESP, EBP
2539         POP     EBP
2540         JMP     [_EnumDateFormatsW]
2541   end;
2542 end;
2543 
2544 var
2545   _EnumDateFormats: Pointer;
2546 
EnumDateFormatsnull2547 function EnumDateFormats;
2548 begin
2549   GetProcedureAddress(_EnumDateFormats, kernel32, 'EnumDateFormats' + AWSuffix);
2550   asm
2551         MOV     ESP, EBP
2552         POP     EBP
2553         JMP     [_EnumDateFormats]
2554   end;
2555 end;
2556 
2557 var
2558   _EnumDateFormatsExA: Pointer;
2559 
EnumDateFormatsExAnull2560 function EnumDateFormatsExA;
2561 begin
2562   GetProcedureAddress(_EnumDateFormatsExA, kernel32, 'EnumDateFormatsExA');
2563   asm
2564         MOV     ESP, EBP
2565         POP     EBP
2566         JMP     [_EnumDateFormatsExA]
2567   end;
2568 end;
2569 
2570 var
2571   _EnumDateFormatsExW: Pointer;
2572 
EnumDateFormatsExWnull2573 function EnumDateFormatsExW;
2574 begin
2575   GetProcedureAddress(_EnumDateFormatsExW, kernel32, 'EnumDateFormatsExW');
2576   asm
2577         MOV     ESP, EBP
2578         POP     EBP
2579         JMP     [_EnumDateFormatsExW]
2580   end;
2581 end;
2582 
2583 var
2584   _EnumDateFormatsEx: Pointer;
2585 
EnumDateFormatsExnull2586 function EnumDateFormatsEx;
2587 begin
2588   GetProcedureAddress(_EnumDateFormatsEx, kernel32, 'EnumDateFormatsEx' + AWSuffix);
2589   asm
2590         MOV     ESP, EBP
2591         POP     EBP
2592         JMP     [_EnumDateFormatsEx]
2593   end;
2594 end;
2595 
2596 var
2597   _IsValidLanguageGroup: Pointer;
2598 
IsValidLanguageGroupnull2599 function IsValidLanguageGroup;
2600 begin
2601   GetProcedureAddress(_IsValidLanguageGroup, kernel32, 'IsValidLanguageGroup');
2602   asm
2603         MOV     ESP, EBP
2604         POP     EBP
2605         JMP     [_IsValidLanguageGroup]
2606   end;
2607 end;
2608 
2609 var
2610   _GetNLSVersion: Pointer;
2611 
GetNLSVersionnull2612 function GetNLSVersion;
2613 begin
2614   GetProcedureAddress(_GetNLSVersion, kernel32, 'GetNLSVersion');
2615   asm
2616         MOV     ESP, EBP
2617         POP     EBP
2618         JMP     [_GetNLSVersion]
2619   end;
2620 end;
2621 
2622 var
2623   _IsNLSDefinedString: Pointer;
2624 
IsNLSDefinedStringnull2625 function IsNLSDefinedString;
2626 begin
2627   GetProcedureAddress(_IsNLSDefinedString, kernel32, 'IsNLSDefinedString');
2628   asm
2629         MOV     ESP, EBP
2630         POP     EBP
2631         JMP     [_IsNLSDefinedString]
2632   end;
2633 end;
2634 
2635 var
2636   _IsValidLocale: Pointer;
2637 
IsValidLocalenull2638 function IsValidLocale;
2639 begin
2640   GetProcedureAddress(_IsValidLocale, kernel32, 'IsValidLocale');
2641   asm
2642         MOV     ESP, EBP
2643         POP     EBP
2644         JMP     [_IsValidLocale]
2645   end;
2646 end;
2647 
2648 var
2649   _GetGeoInfoA: Pointer;
2650 
GetGeoInfoAnull2651 function GetGeoInfoA;
2652 begin
2653   GetProcedureAddress(_GetGeoInfoA, kernel32, 'GetGeoInfoA');
2654   asm
2655         MOV     ESP, EBP
2656         POP     EBP
2657         JMP     [_GetGeoInfoA]
2658   end;
2659 end;
2660 
2661 var
2662   _GetGeoInfoW: Pointer;
2663 
GetGeoInfoWnull2664 function GetGeoInfoW;
2665 begin
2666   GetProcedureAddress(_GetGeoInfoW, kernel32, 'GetGeoInfoW');
2667   asm
2668         MOV     ESP, EBP
2669         POP     EBP
2670         JMP     [_GetGeoInfoW]
2671   end;
2672 end;
2673 
2674 var
2675   _GetGeoInfo: Pointer;
2676 
GetGeoInfonull2677 function GetGeoInfo;
2678 begin
2679   GetProcedureAddress(_GetGeoInfo, kernel32, 'GetGeoInfo');
2680   asm
2681         MOV     ESP, EBP
2682         POP     EBP
2683         JMP     [_GetGeoInfo]
2684   end;
2685 end;
2686 
2687 var
2688   _EnumSystemGeoID: Pointer;
2689 
EnumSystemGeoIDnull2690 function EnumSystemGeoID;
2691 begin
2692   GetProcedureAddress(_EnumSystemGeoID, kernel32, 'EnumSystemGeoID');
2693   asm
2694         MOV     ESP, EBP
2695         POP     EBP
2696         JMP     [_EnumSystemGeoID]
2697   end;
2698 end;
2699 
2700 var
2701   _GetUserGeoID: Pointer;
2702 
GetUserGeoIDnull2703 function GetUserGeoID;
2704 begin
2705   GetProcedureAddress(_GetUserGeoID, kernel32, 'GetUserGeoID');
2706   asm
2707         MOV     ESP, EBP
2708         POP     EBP
2709         JMP     [_GetUserGeoID]
2710   end;
2711 end;
2712 
2713 var
2714   _SetUserGeoID: Pointer;
2715 
SetUserGeoIDnull2716 function SetUserGeoID;
2717 begin
2718   GetProcedureAddress(_SetUserGeoID, kernel32, 'SetUserGeoID');
2719   asm
2720         MOV     ESP, EBP
2721         POP     EBP
2722         JMP     [_SetUserGeoID]
2723   end;
2724 end;
2725 
2726 var
2727   _ConvertDefaultLocale: Pointer;
2728 
ConvertDefaultLocalenull2729 function ConvertDefaultLocale;
2730 begin
2731   GetProcedureAddress(_ConvertDefaultLocale, kernel32, 'ConvertDefaultLocale');
2732   asm
2733         MOV     ESP, EBP
2734         POP     EBP
2735         JMP     [_ConvertDefaultLocale]
2736   end;
2737 end;
2738 
2739 var
2740   _GetThreadLocale: Pointer;
2741 
GetThreadLocalenull2742 function GetThreadLocale;
2743 begin
2744   GetProcedureAddress(_GetThreadLocale, kernel32, 'GetThreadLocale');
2745   asm
2746         MOV     ESP, EBP
2747         POP     EBP
2748         JMP     [_GetThreadLocale]
2749   end;
2750 end;
2751 
2752 var
2753   _SetThreadLocale: Pointer;
2754 
SetThreadLocalenull2755 function SetThreadLocale;
2756 begin
2757   GetProcedureAddress(_SetThreadLocale, kernel32, 'SetThreadLocale');
2758   asm
2759         MOV     ESP, EBP
2760         POP     EBP
2761         JMP     [_SetThreadLocale]
2762   end;
2763 end;
2764 
2765 var
2766   _GetSystemDefaultUILanguage: Pointer;
2767 
GetSystemDefaultUILanguagenull2768 function GetSystemDefaultUILanguage;
2769 begin
2770   GetProcedureAddress(_GetSystemDefaultUILanguage, kernel32, 'GetSystemDefaultUILanguage');
2771   asm
2772         MOV     ESP, EBP
2773         POP     EBP
2774         JMP     [_GetSystemDefaultUILanguage]
2775   end;
2776 end;
2777 
2778 var
2779   _GetUserDefaultUILanguage: Pointer;
2780 
GetUserDefaultUILanguagenull2781 function GetUserDefaultUILanguage;
2782 begin
2783   GetProcedureAddress(_GetUserDefaultUILanguage, kernel32, 'GetUserDefaultUILanguage');
2784   asm
2785         MOV     ESP, EBP
2786         POP     EBP
2787         JMP     [_GetUserDefaultUILanguage]
2788   end;
2789 end;
2790 
2791 var
2792   _GetSystemDefaultLangID: Pointer;
2793 
GetSystemDefaultLangIDnull2794 function GetSystemDefaultLangID;
2795 begin
2796   GetProcedureAddress(_GetSystemDefaultLangID, kernel32, 'GetSystemDefaultLangID');
2797   asm
2798         MOV     ESP, EBP
2799         POP     EBP
2800         JMP     [_GetSystemDefaultLangID]
2801   end;
2802 end;
2803 
2804 var
2805   _GetUserDefaultLangID: Pointer;
2806 
GetUserDefaultLangIDnull2807 function GetUserDefaultLangID;
2808 begin
2809   GetProcedureAddress(_GetUserDefaultLangID, kernel32, 'GetUserDefaultLangID');
2810   asm
2811         MOV     ESP, EBP
2812         POP     EBP
2813         JMP     [_GetUserDefaultLangID]
2814   end;
2815 end;
2816 
2817 var
2818   _GetSystemDefaultLCID: Pointer;
2819 
GetSystemDefaultLCIDnull2820 function GetSystemDefaultLCID;
2821 begin
2822   GetProcedureAddress(_GetSystemDefaultLCID, kernel32, 'GetSystemDefaultLCID');
2823   asm
2824         MOV     ESP, EBP
2825         POP     EBP
2826         JMP     [_GetSystemDefaultLCID]
2827   end;
2828 end;
2829 
2830 var
2831   _GetUserDefaultLCID: Pointer;
2832 
GetUserDefaultLCIDnull2833 function GetUserDefaultLCID;
2834 begin
2835   GetProcedureAddress(_GetUserDefaultLCID, kernel32, 'GetUserDefaultLCID');
2836   asm
2837         MOV     ESP, EBP
2838         POP     EBP
2839         JMP     [_GetUserDefaultLCID]
2840   end;
2841 end;
2842 
2843 var
2844   _GetStringTypeExA: Pointer;
2845 
GetStringTypeExAnull2846 function GetStringTypeExA;
2847 begin
2848   GetProcedureAddress(_GetStringTypeExA, kernel32, 'GetStringTypeExA');
2849   asm
2850         MOV     ESP, EBP
2851         POP     EBP
2852         JMP     [_GetStringTypeExA]
2853   end;
2854 end;
2855 
2856 var
2857   _GetStringTypeExW: Pointer;
2858 
GetStringTypeExWnull2859 function GetStringTypeExW;
2860 begin
2861   GetProcedureAddress(_GetStringTypeExW, kernel32, 'GetStringTypeExW');
2862   asm
2863         MOV     ESP, EBP
2864         POP     EBP
2865         JMP     [_GetStringTypeExW]
2866   end;
2867 end;
2868 
2869 var
2870   _GetStringTypeEx: Pointer;
2871 
GetStringTypeExnull2872 function GetStringTypeEx;
2873 begin
2874   GetProcedureAddress(_GetStringTypeEx, kernel32, 'GetStringTypeEx' + AWSuffix);
2875   asm
2876         MOV     ESP, EBP
2877         POP     EBP
2878         JMP     [_GetStringTypeEx]
2879   end;
2880 end;
2881 
2882 var
2883   _GetStringTypeA: Pointer;
2884 
GetStringTypeAnull2885 function GetStringTypeA;
2886 begin
2887   GetProcedureAddress(_GetStringTypeA, kernel32, 'GetStringTypeA');
2888   asm
2889         MOV     ESP, EBP
2890         POP     EBP
2891         JMP     [_GetStringTypeA]
2892   end;
2893 end;
2894 
2895 var
2896   _GetStringTypeW: Pointer;
2897 
GetStringTypeWnull2898 function GetStringTypeW;
2899 begin
2900   GetProcedureAddress(_GetStringTypeW, kernel32, 'GetStringTypeW');
2901   asm
2902         MOV     ESP, EBP
2903         POP     EBP
2904         JMP     [_GetStringTypeW]
2905   end;
2906 end;
2907 
2908 var
2909   _FoldStringA: Pointer;
2910 
FoldStringAnull2911 function FoldStringA;
2912 begin
2913   GetProcedureAddress(_FoldStringA, kernel32, 'FoldStringA');
2914   asm
2915         MOV     ESP, EBP
2916         POP     EBP
2917         JMP     [_FoldStringA]
2918   end;
2919 end;
2920 
2921 var
2922   _FoldStringW: Pointer;
2923 
FoldStringWnull2924 function FoldStringW;
2925 begin
2926   GetProcedureAddress(_FoldStringW, kernel32, 'FoldStringW');
2927   asm
2928         MOV     ESP, EBP
2929         POP     EBP
2930         JMP     [_FoldStringW]
2931   end;
2932 end;
2933 
2934 var
2935   _FoldString: Pointer;
2936 
FoldStringnull2937 function FoldString;
2938 begin
2939   GetProcedureAddress(_FoldString, kernel32, 'FoldString' + AWSuffix);
2940   asm
2941         MOV     ESP, EBP
2942         POP     EBP
2943         JMP     [_FoldString]
2944   end;
2945 end;
2946 
2947 var
2948   _EnumSystemLanguageGroupsA: Pointer;
2949 
EnumSystemLanguageGroupsAnull2950 function EnumSystemLanguageGroupsA;
2951 begin
2952   GetProcedureAddress(_EnumSystemLanguageGroupsA, kernel32, 'EnumSystemLanguageGroupsA');
2953   asm
2954         MOV     ESP, EBP
2955         POP     EBP
2956         JMP     [_EnumSystemLanguageGroupsA]
2957   end;
2958 end;
2959 
2960 var
2961   _EnumSystemLanguageGroupsW: Pointer;
2962 
EnumSystemLanguageGroupsWnull2963 function EnumSystemLanguageGroupsW;
2964 begin
2965   GetProcedureAddress(_EnumSystemLanguageGroupsW, kernel32, 'EnumSystemLanguageGroupsW');
2966   asm
2967         MOV     ESP, EBP
2968         POP     EBP
2969         JMP     [_EnumSystemLanguageGroupsW]
2970   end;
2971 end;
2972 
2973 var
2974   _EnumSystemLanguageGroups: Pointer;
2975 
EnumSystemLanguageGroupsnull2976 function EnumSystemLanguageGroups;
2977 begin
2978   GetProcedureAddress(_EnumSystemLanguageGroups, kernel32, 'EnumSystemLanguageGroups' + AWSuffix);
2979   asm
2980         MOV     ESP, EBP
2981         POP     EBP
2982         JMP     [_EnumSystemLanguageGroups]
2983   end;
2984 end;
2985 
2986 var
2987   _EnumLanguageGroupLocalesA: Pointer;
2988 
EnumLanguageGroupLocalesAnull2989 function EnumLanguageGroupLocalesA;
2990 begin
2991   GetProcedureAddress(_EnumLanguageGroupLocalesA, kernel32, 'EnumLanguageGroupLocalesA');
2992   asm
2993         MOV     ESP, EBP
2994         POP     EBP
2995         JMP     [_EnumLanguageGroupLocalesA]
2996   end;
2997 end;
2998 
2999 var
3000   _EnumLanguageGroupLocalesW: Pointer;
3001 
EnumLanguageGroupLocalesWnull3002 function EnumLanguageGroupLocalesW;
3003 begin
3004   GetProcedureAddress(_EnumLanguageGroupLocalesW, kernel32, 'EnumLanguageGroupLocalesW');
3005   asm
3006         MOV     ESP, EBP
3007         POP     EBP
3008         JMP     [_EnumLanguageGroupLocalesW]
3009   end;
3010 end;
3011 
3012 var
3013   _EnumLanguageGroupLocales: Pointer;
3014 
EnumLanguageGroupLocalesnull3015 function EnumLanguageGroupLocales;
3016 begin
3017   GetProcedureAddress(_EnumLanguageGroupLocales, kernel32, 'EnumLanguageGroupLocales' + AWSuffix);
3018   asm
3019         MOV     ESP, EBP
3020         POP     EBP
3021         JMP     [_EnumLanguageGroupLocales]
3022   end;
3023 end;
3024 
3025 var
3026   _EnumUILanguagesA: Pointer;
3027 
EnumUILanguagesAnull3028 function EnumUILanguagesA;
3029 begin
3030   GetProcedureAddress(_EnumUILanguagesA, kernel32, 'EnumUILanguagesA');
3031   asm
3032         MOV     ESP, EBP
3033         POP     EBP
3034         JMP     [_EnumUILanguagesA]
3035   end;
3036 end;
3037 
3038 var
3039   _EnumUILanguagesW: Pointer;
3040 
EnumUILanguagesWnull3041 function EnumUILanguagesW;
3042 begin
3043   GetProcedureAddress(_EnumUILanguagesW, kernel32, 'EnumUILanguagesW');
3044   asm
3045         MOV     ESP, EBP
3046         POP     EBP
3047         JMP     [_EnumUILanguagesW]
3048   end;
3049 end;
3050 
3051 var
3052   _EnumUILanguages: Pointer;
3053 
EnumUILanguagesnull3054 function EnumUILanguages;
3055 begin
3056   GetProcedureAddress(_EnumUILanguages, kernel32, 'EnumUILanguages' + AWSuffix);
3057   asm
3058         MOV     ESP, EBP
3059         POP     EBP
3060         JMP     [_EnumUILanguages]
3061   end;
3062 end;
3063 
3064 var
3065   _EnumSystemLocalesA: Pointer;
3066 
EnumSystemLocalesAnull3067 function EnumSystemLocalesA;
3068 begin
3069   GetProcedureAddress(_EnumSystemLocalesA, kernel32, 'EnumSystemLocalesA');
3070   asm
3071         MOV     ESP, EBP
3072         POP     EBP
3073         JMP     [_EnumSystemLocalesA]
3074   end;
3075 end;
3076 
3077 var
3078   _EnumSystemLocalesW: Pointer;
3079 
EnumSystemLocalesWnull3080 function EnumSystemLocalesW;
3081 begin
3082   GetProcedureAddress(_EnumSystemLocalesW, kernel32, 'EnumSystemLocalesW');
3083   asm
3084         MOV     ESP, EBP
3085         POP     EBP
3086         JMP     [_EnumSystemLocalesW]
3087   end;
3088 end;
3089 
3090 var
3091   _EnumSystemLocales: Pointer;
3092 
EnumSystemLocalesnull3093 function EnumSystemLocales;
3094 begin
3095   GetProcedureAddress(_EnumSystemLocales, kernel32, 'EnumSystemLocales' + AWSuffix);
3096   asm
3097         MOV     ESP, EBP
3098         POP     EBP
3099         JMP     [_EnumSystemLocales]
3100   end;
3101 end;
3102 
3103 var
3104   _EnumSystemCodePagesA: Pointer;
3105 
EnumSystemCodePagesAnull3106 function EnumSystemCodePagesA;
3107 begin
3108   GetProcedureAddress(_EnumSystemCodePagesA, kernel32, 'EnumSystemCodePagesA');
3109   asm
3110         MOV     ESP, EBP
3111         POP     EBP
3112         JMP     [_EnumSystemCodePagesA]
3113   end;
3114 end;
3115 
3116 var
3117   _EnumSystemCodePagesW: Pointer;
3118 
EnumSystemCodePagesWnull3119 function EnumSystemCodePagesW;
3120 begin
3121   GetProcedureAddress(_EnumSystemCodePagesW, kernel32, 'EnumSystemCodePagesW');
3122   asm
3123         MOV     ESP, EBP
3124         POP     EBP
3125         JMP     [_EnumSystemCodePagesW]
3126   end;
3127 end;
3128 
3129 var
3130   _EnumSystemCodePages: Pointer;
3131 
EnumSystemCodePagesnull3132 function EnumSystemCodePages;
3133 begin
3134   GetProcedureAddress(_EnumSystemCodePages, kernel32, 'EnumSystemCodePages' + AWSuffix);
3135   asm
3136         MOV     ESP, EBP
3137         POP     EBP
3138         JMP     [_EnumSystemCodePages]
3139   end;
3140 end;
3141 
3142 {$ELSE}
3143 
IsValidCodePagenull3144 function IsValidCodePage; external kernel32 name 'IsValidCodePage';
GetACPnull3145 function GetACP; external kernel32 name 'GetACP';
GetOEMCPnull3146 function GetOEMCP; external kernel32 name 'GetOEMCP';
GetCPInfonull3147 function GetCPInfo; external kernel32 name 'GetCPInfo';
GetCPInfoExAnull3148 function GetCPInfoExA; external kernel32 name 'GetCPInfoExA';
GetCPInfoExWnull3149 function GetCPInfoExW; external kernel32 name 'GetCPInfoExW';
GetCPInfoExnull3150 function GetCPInfoEx; external kernel32 name 'GetCPInfoEx' + AWSuffix;
IsDBCSLeadBytenull3151 function IsDBCSLeadByte; external kernel32 name 'IsDBCSLeadByte';
IsDBCSLeadByteExnull3152 function IsDBCSLeadByteEx; external kernel32 name 'IsDBCSLeadByteEx';
MultiByteToWideCharnull3153 function MultiByteToWideChar; external kernel32 name 'MultiByteToWideChar';
WideCharToMultiBytenull3154 function WideCharToMultiByte; external kernel32 name 'WideCharToMultiByte';
CompareStringAnull3155 function CompareStringA; external kernel32 name 'CompareStringA';
CompareStringWnull3156 function CompareStringW; external kernel32 name 'CompareStringW';
CompareStringnull3157 function CompareString; external kernel32 name 'CompareString' + AWSuffix;
LCMapStringAnull3158 function LCMapStringA; external kernel32 name 'LCMapStringA';
LCMapStringWnull3159 function LCMapStringW; external kernel32 name 'LCMapStringW';
LCMapStringnull3160 function LCMapString; external kernel32 name 'LCMapString' + AWSuffix;
GetLocaleInfoAnull3161 function GetLocaleInfoA; external kernel32 name 'GetLocaleInfoA';
GetLocaleInfoWnull3162 function GetLocaleInfoW; external kernel32 name 'GetLocaleInfoW';
GetLocaleInfonull3163 function GetLocaleInfo; external kernel32 name 'GetLocaleInfo' + AWSuffix;
SetLocaleInfoAnull3164 function SetLocaleInfoA; external kernel32 name 'SetLocaleInfoA';
SetLocaleInfoWnull3165 function SetLocaleInfoW; external kernel32 name 'SetLocaleInfoW';
SetLocaleInfonull3166 function SetLocaleInfo; external kernel32 name 'SetLocaleInfo' + AWSuffix;
GetCalendarInfoAnull3167 function GetCalendarInfoA; external kernel32 name 'GetCalendarInfoA';
GetCalendarInfoWnull3168 function GetCalendarInfoW; external kernel32 name 'GetCalendarInfoW';
GetCalendarInfonull3169 function GetCalendarInfo; external kernel32 name 'GetCalendarInfo' + AWSuffix;
SetCalendarInfoAnull3170 function SetCalendarInfoA; external kernel32 name 'SetCalendarInfoA';
SetCalendarInfoWnull3171 function SetCalendarInfoW; external kernel32 name 'SetCalendarInfoW';
SetCalendarInfonull3172 function SetCalendarInfo; external kernel32 name 'SetCalendarInfo' + AWSuffix;
GetTimeFormatAnull3173 function GetTimeFormatA; external kernel32 name 'GetTimeFormatA';
GetTimeFormatWnull3174 function GetTimeFormatW; external kernel32 name 'GetTimeFormatW';
GetTimeFormatnull3175 function GetTimeFormat; external kernel32 name 'GetTimeFormat' + AWSuffix;
GetDateFormatAnull3176 function GetDateFormatA; external kernel32 name 'GetDateFormatA';
GetDateFormatWnull3177 function GetDateFormatW; external kernel32 name 'GetDateFormatW';
GetDateFormatnull3178 function GetDateFormat; external kernel32 name 'GetDateFormat' + AWSuffix;
GetNumberFormatAnull3179 function GetNumberFormatA; external kernel32 name 'GetNumberFormatA';
GetNumberFormatWnull3180 function GetNumberFormatW; external kernel32 name 'GetNumberFormatW';
GetNumberFormatnull3181 function GetNumberFormat; external kernel32 name 'GetNumberFormat' + AWSuffix;
GetCurrencyFormatAnull3182 function GetCurrencyFormatA; external kernel32 name 'GetCurrencyFormatA';
GetCurrencyFormatWnull3183 function GetCurrencyFormatW; external kernel32 name 'GetCurrencyFormatW';
GetCurrencyFormatnull3184 function GetCurrencyFormat; external kernel32 name 'GetCurrencyFormat' + AWSuffix;
EnumCalendarInfoAnull3185 function EnumCalendarInfoA; external kernel32 name 'EnumCalendarInfoA';
EnumCalendarInfoWnull3186 function EnumCalendarInfoW; external kernel32 name 'EnumCalendarInfoW';
EnumCalendarInfonull3187 function EnumCalendarInfo; external kernel32 name 'EnumCalendarInfo' + AWSuffix;
EnumCalendarInfoExAnull3188 function EnumCalendarInfoExA; external kernel32 name 'EnumCalendarInfoExA';
EnumCalendarInfoExWnull3189 function EnumCalendarInfoExW; external kernel32 name 'EnumCalendarInfoExW';
EnumCalendarInfoExnull3190 function EnumCalendarInfoEx; external kernel32 name 'EnumCalendarInfoEx' + AWSuffix;
EnumTimeFormatsAnull3191 function EnumTimeFormatsA; external kernel32 name 'EnumTimeFormatsA';
EnumTimeFormatsWnull3192 function EnumTimeFormatsW; external kernel32 name 'EnumTimeFormatsW';
EnumTimeFormatsnull3193 function EnumTimeFormats; external kernel32 name 'EnumTimeFormats' + AWSuffix;
EnumDateFormatsAnull3194 function EnumDateFormatsA; external kernel32 name 'EnumDateFormatsA';
EnumDateFormatsWnull3195 function EnumDateFormatsW; external kernel32 name 'EnumDateFormatsW';
EnumDateFormatsnull3196 function EnumDateFormats; external kernel32 name 'EnumDateFormats' + AWSuffix;
EnumDateFormatsExAnull3197 function EnumDateFormatsExA; external kernel32 name 'EnumDateFormatsExA';
EnumDateFormatsExWnull3198 function EnumDateFormatsExW; external kernel32 name 'EnumDateFormatsExW';
EnumDateFormatsExnull3199 function EnumDateFormatsEx; external kernel32 name 'EnumDateFormatsEx' + AWSuffix;
IsValidLanguageGroupnull3200 function IsValidLanguageGroup; external kernel32 name 'IsValidLanguageGroup';
GetNLSVersionnull3201 function GetNLSVersion; external kernel32 name 'GetNLSVersion';
IsNLSDefinedStringnull3202 function IsNLSDefinedString; external kernel32 name 'IsNLSDefinedString';
IsValidLocalenull3203 function IsValidLocale; external kernel32 name 'IsValidLocale';
GetGeoInfoAnull3204 function GetGeoInfoA; external kernel32 name 'GetGeoInfoA';
GetGeoInfoWnull3205 function GetGeoInfoW; external kernel32 name 'GetGeoInfoW';
GetGeoInfonull3206 function GetGeoInfo; external kernel32 name 'GetGeoInfo';
EnumSystemGeoIDnull3207 function EnumSystemGeoID; external kernel32 name 'EnumSystemGeoID';
GetUserGeoIDnull3208 function GetUserGeoID; external kernel32 name 'GetUserGeoID';
SetUserGeoIDnull3209 function SetUserGeoID; external kernel32 name 'SetUserGeoID';
ConvertDefaultLocalenull3210 function ConvertDefaultLocale; external kernel32 name 'ConvertDefaultLocale';
GetThreadLocalenull3211 function GetThreadLocale; external kernel32 name 'GetThreadLocale';
SetThreadLocalenull3212 function SetThreadLocale; external kernel32 name 'SetThreadLocale';
GetSystemDefaultUILanguagenull3213 function GetSystemDefaultUILanguage; external kernel32 name 'GetSystemDefaultUILanguage';
GetUserDefaultUILanguagenull3214 function GetUserDefaultUILanguage; external kernel32 name 'GetUserDefaultUILanguage';
GetSystemDefaultLangIDnull3215 function GetSystemDefaultLangID; external kernel32 name 'GetSystemDefaultLangID';
GetUserDefaultLangIDnull3216 function GetUserDefaultLangID; external kernel32 name 'GetUserDefaultLangID';
GetSystemDefaultLCIDnull3217 function GetSystemDefaultLCID; external kernel32 name 'GetSystemDefaultLCID';
GetUserDefaultLCIDnull3218 function GetUserDefaultLCID; external kernel32 name 'GetUserDefaultLCID';
GetStringTypeExAnull3219 function GetStringTypeExA; external kernel32 name 'GetStringTypeExA';
GetStringTypeExWnull3220 function GetStringTypeExW; external kernel32 name 'GetStringTypeExW';
GetStringTypeExnull3221 function GetStringTypeEx; external kernel32 name 'GetStringTypeEx' + AWSuffix;
GetStringTypeAnull3222 function GetStringTypeA; external kernel32 name 'GetStringTypeA';
GetStringTypeWnull3223 function GetStringTypeW; external kernel32 name 'GetStringTypeW';
FoldStringAnull3224 function FoldStringA; external kernel32 name 'FoldStringA';
FoldStringWnull3225 function FoldStringW; external kernel32 name 'FoldStringW';
FoldStringnull3226 function FoldString; external kernel32 name 'FoldString' + AWSuffix;
EnumSystemLanguageGroupsAnull3227 function EnumSystemLanguageGroupsA; external kernel32 name 'EnumSystemLanguageGroupsA';
EnumSystemLanguageGroupsWnull3228 function EnumSystemLanguageGroupsW; external kernel32 name 'EnumSystemLanguageGroupsW';
EnumSystemLanguageGroupsnull3229 function EnumSystemLanguageGroups; external kernel32 name 'EnumSystemLanguageGroups' + AWSuffix;
EnumLanguageGroupLocalesAnull3230 function EnumLanguageGroupLocalesA; external kernel32 name 'EnumLanguageGroupLocalesA';
EnumLanguageGroupLocalesWnull3231 function EnumLanguageGroupLocalesW; external kernel32 name 'EnumLanguageGroupLocalesW';
EnumLanguageGroupLocalesnull3232 function EnumLanguageGroupLocales; external kernel32 name 'EnumLanguageGroupLocales' + AWSuffix;
EnumUILanguagesAnull3233 function EnumUILanguagesA; external kernel32 name 'EnumUILanguagesA';
EnumUILanguagesWnull3234 function EnumUILanguagesW; external kernel32 name 'EnumUILanguagesW';
EnumUILanguagesnull3235 function EnumUILanguages; external kernel32 name 'EnumUILanguages' + AWSuffix;
EnumSystemLocalesAnull3236 function EnumSystemLocalesA; external kernel32 name 'EnumSystemLocalesA';
EnumSystemLocalesWnull3237 function EnumSystemLocalesW; external kernel32 name 'EnumSystemLocalesW';
EnumSystemLocalesnull3238 function EnumSystemLocales; external kernel32 name 'EnumSystemLocales' + AWSuffix;
EnumSystemCodePagesAnull3239 function EnumSystemCodePagesA; external kernel32 name 'EnumSystemCodePagesA';
EnumSystemCodePagesWnull3240 function EnumSystemCodePagesW; external kernel32 name 'EnumSystemCodePagesW';
EnumSystemCodePagesnull3241 function EnumSystemCodePages; external kernel32 name 'EnumSystemCodePages' + AWSuffix;
3242 
3243 {$ENDIF DYNAMIC_LINK}
3244 
3245 {$ENDIF JWA_INTERFACESECTION}
3246 
3247 {$IFNDEF JWA_OMIT_SECTIONS}
3248 end.
3249 {$ENDIF JWA_OMIT_SECTIONS}
3250