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