Annotation of mstools/h/winnls.h, revision 1.1.1.2

1.1       root        1: /*++ BUILD Version: 0003    // Increment this if a change has global effects
                      2: 
                      3: Copyright (c) 1991, Microsoft Corporation
                      4: 
                      5: Module Name:
                      6: 
                      7:     winnls.h
                      8: 
                      9: Abstract:
                     10: 
                     11:     Procedure declarations, constant definitions, and macros for the
                     12:     NLS component.
                     13: 
                     14: Author:
                     15: 
                     16:     Julie Bennett (julieb) 31-May-1991
                     17: 
                     18: --*/
                     19: 
                     20: #ifndef _WINNLS_
                     21: #define _WINNLS_
                     22: 
                     23: #ifndef NONLS
                     24: 
                     25: 
                     26: /***************************************************************************\
                     27: * Constants
                     28: *
                     29: * Define all constants for the NLS component here.
                     30: \***************************************************************************/
                     31: 
                     32: /*
                     33:  *  String Length Maximums.
                     34:  */
1.1.1.2 ! root       35: #define MAX_LEADBYTES        12             /* 5 ranges, 2 bytes ea., 0 term. */
        !            36: #define MAX_DEFAULTCHAR      2              /* single or double byte */
1.1       root       37: 
                     38: 
                     39: /*
                     40:  *  MBCS and Unicode Translation Flags.
                     41:  */
                     42: #define MB_PRECOMPOSED       0x00000001     /* use precomposed chars */
                     43: #define MB_COMPOSITE         0x00000002     /* use composite chars */
1.1.1.2 ! root       44: #define MB_USEGLYPHCHARS     0x00000004     /* use glyph chars, not ctrl chars */
1.1       root       45: 
1.1.1.2 ! root       46: #define WC_DEFAULTCHECK      0x00000100     /* check for default char */
        !            47: #define WC_COMPOSITECHECK    0x00000200     /* convert composite to precomposed */
1.1       root       48: #define WC_DISCARDNS         0x00000010     /* discard non-spacing chars */
1.1.1.2 ! root       49: #define WC_SEPCHARS          0x00000020     /* generate separate chars */
        !            50: #define WC_DEFAULTCHAR       0x00000040     /* replace w/ default char */
        !            51: 
1.1       root       52: 
                     53: 
                     54: /*
                     55:  *  Character Type Flags.
                     56:  */
                     57: #define CT_CTYPE1            0x00000001     /* ctype 1 information */
                     58: #define CT_CTYPE2            0x00000002     /* ctype 2 information */
1.1.1.2 ! root       59: #define CT_CTYPE3            0x00000004     /* ctype 3 information */
1.1       root       60: 
                     61: /*
                     62:  *  CType 1 Flag Bits.
                     63:  */
1.1.1.2 ! root       64: #define C1_UPPER             0x0001         /* upper case */
        !            65: #define C1_LOWER             0x0002         /* lower case */
        !            66: #define C1_DIGIT             0x0004         /* decimal digits */
        !            67: #define C1_SPACE             0x0008         /* spacing characters */
        !            68: #define C1_PUNCT             0x0010         /* punctuation characters */
        !            69: #define C1_CNTRL             0x0020         /* control characters */
        !            70: #define C1_BLANK             0x0040         /* blank characters */
        !            71: #define C1_XDIGIT            0x0080         /* other digits */
        !            72: #define C1_ALPHA             0x0100         /* any letter */
1.1       root       73: 
                     74: /*
                     75:  *  CType 2 Flag Bits.
                     76:  */
1.1.1.2 ! root       77: #define C2_LEFTTORIGHT       0x1            /* left to right */
        !            78: #define C2_RIGHTTOLEFT       0x2            /* right to left */
        !            79: 
        !            80: #define C2_EUROPENUMBER      0x3            /* European number, digit */
        !            81: #define C2_EUROPESEPARATOR   0x4            /* European numeric separator */
        !            82: #define C2_EUROPETERMINATOR  0x5            /* European numeric terminator */
        !            83: #define C2_ARABICNUMBER      0x6            /* Arabic number */
        !            84: #define C2_COMMONSEPARATOR   0x7            /* common numeric separator */
1.1       root       85: 
1.1.1.2 ! root       86: #define C2_BLOCKSEPARATOR    0x8            /* block separator */
        !            87: #define C2_SEGMENTSEPARATOR  0x9            /* segment separator */
        !            88: #define C2_WHITESPACE        0xA            /* white space */
        !            89: #define C2_OTHERNEUTRAL      0xB            /* other neutrals */
1.1       root       90: 
1.1.1.2 ! root       91: #define C2_NOTAPPLICABLE     0x0            /* no implicit directionality */
1.1       root       92: 
                     93: /*
1.1.1.2 ! root       94:  *  CType 3 Flag Bits.
1.1       root       95:  */
1.1.1.2 ! root       96: #define C3_NONSPACING        0x0001         /* nonspacing character */
        !            97: #define C3_DIACRITIC         0x0002         /* diacritic mark */
        !            98: #define C3_VOWELMARK         0x0004         /* vowel mark */
        !            99: #define C3_SYMBOL            0x0008         /* symbols */
        !           100: 
        !           101: #define C3_NOTAPPLICABLE     0x0            /* ctype 3 is not applicable */
        !           102: 
1.1       root      103: 
                    104: /*
1.1.1.2 ! root      105:  *  String Flags.
1.1       root      106:  */
1.1.1.2 ! root      107: #define NORM_IGNORECASE      0x00000001     /* ignore case */
        !           108: #define NORM_IGNORENONSPACE  0x00000002     /* ignore nonspacing chars */
        !           109: #define NORM_IGNORESYMBOLS   0x00000004     /* ignore symbols */
1.1       root      110: 
                    111: 
1.1.1.2 ! root      112: /*
        !           113:  *  Locale Independent Mapping Flags.
        !           114:  */
        !           115: #define MAP_FOLDCZONE        0x00000010     /* fold compatibility zone chars */
        !           116: #define MAP_PRECOMPOSED      0x00000020     /* accented to precomposed chars */
        !           117: #define MAP_COMPOSITE        0x00000040     /* accented to composite chars */
        !           118: #define MAP_FOLDDIGITS       0x00000080     /* all digits to ASCII 0-9 */
1.1       root      119: 
                    120: 
                    121: /*
1.1.1.2 ! root      122:  *  Locale Dependent Mapping Flags.
1.1       root      123:  */
1.1.1.2 ! root      124: #define LCMAP_LOWERCASE      0x00000100     /* lower case letters */
        !           125: #define LCMAP_UPPERCASE      0x00000200     /* upper case letters */
        !           126: #define LCMAP_SORTKEY        0x00000400     /* WC sort key (normalize) */
        !           127: #define LCMAP_BYTEREV        0x00000800     /* byte reversal */
1.1       root      128: 
                    129: 
                    130: /*
1.1.1.2 ! root      131:  *  Code Page Default Values.
1.1       root      132:  */
1.1.1.2 ! root      133: #define CP_ACP               0              /* default to ANSI code page */
        !           134: #define CP_OEMCP             1              /* default to OEM  code page */
1.1       root      135: 
                    136: 
                    137: /*
                    138:  *  Language IDs.
                    139:  *
                    140:  *  The following two combinations of primary language ID and
                    141:  *  sublanguage ID have special semantics: 
                    142:  *
                    143:  *    Primary Language ID   Sublanguage ID      Result
                    144:  *    -------------------   ---------------     ------------------------
                    145:  *    LANG_NEUTRAL          SUBLANG_NEUTRAL     Language neutral
                    146:  *    LANG_NEUTRAL          SUBLANG_DEFAULT     Process default language
                    147:  */
                    148: 
                    149: /*
                    150:  *  Primary language IDs.
                    151:  */
                    152: #define LANG_NEUTRAL                     0x00
                    153: 
                    154: #define LANG_ALBANIAN                    0x1c
                    155: #define LANG_ARABIC                      0x01
                    156: #define LANG_BAHASA                      0x21
                    157: #define LANG_BULGARIAN                   0x02
                    158: #define LANG_CATALAN                     0x03
                    159: #define LANG_CHINESE                     0x04
                    160: #define LANG_CZECH                       0x05
                    161: #define LANG_DANISH                      0x06
                    162: #define LANG_DUTCH                       0x13
                    163: #define LANG_ENGLISH                     0x09
                    164: #define LANG_FINNISH                     0x0b
                    165: #define LANG_FRENCH                      0x0c
                    166: #define LANG_GERMAN                      0x07
                    167: #define LANG_GREEK                       0x08
                    168: #define LANG_HEBREW                      0x0d
                    169: #define LANG_HUNGARIAN                   0x0e
                    170: #define LANG_ICELANDIC                   0x0f
                    171: #define LANG_ITALIAN                     0x10
                    172: #define LANG_JAPANESE                    0x11
                    173: #define LANG_KOREAN                      0x12
                    174: #define LANG_NORWEGIAN                   0x14
                    175: #define LANG_POLISH                      0x15
                    176: #define LANG_PORTUGUESE                  0x16
                    177: #define LANG_RHAETO_ROMAN                0x17
                    178: #define LANG_ROMANIAN                    0x18
                    179: #define LANG_RUSSIAN                     0x19
                    180: #define LANG_SERBO_CROATIAN              0x1a
                    181: #define LANG_SLOVAK                      0x1b
                    182: #define LANG_SPANISH                     0x0a
                    183: #define LANG_SWEDISH                     0x1d
                    184: #define LANG_THAI                        0x1e
                    185: #define LANG_TURKISH                     0x1f
                    186: #define LANG_URDU                        0x20
                    187: 
                    188: /*
                    189:  *  Sublanguage IDs.
                    190:  *
                    191:  *  The name immediately following SUBLANG_ dictates which primary
                    192:  *  language ID that sublanguage ID can be combined with to form a
                    193:  *  valid language ID.
                    194:  */
                    195: #define SUBLANG_NEUTRAL                  0x00    /* language neutral */
1.1.1.2 ! root      196: #define SUBLANG_DEFAULT                  0x01    /* user default */
        !           197: #define SUBLANG_SYS_DEFAULT              0x02    /* system default */
1.1       root      198: 
                    199: #define SUBLANG_CHINESE_SIMPLIFIED       0x02    /* Chinese (Simplified) */
                    200: #define SUBLANG_CHINESE_TRADITIONAL      0x01    /* Chinese (Traditional) */ 
                    201: #define SUBLANG_DUTCH                    0x01    /* Dutch */
                    202: #define SUBLANG_DUTCH_BELGIAN            0x02    /* Dutch (Belgian) */
                    203: #define SUBLANG_ENGLISH_US               0x01    /* English (USA) */
                    204: #define SUBLANG_ENGLISH_UK               0x02    /* English (UK) */
                    205: #define SUBLANG_ENGLISH_AUS              0x03    /* English (Australian) */
                    206: #define SUBLANG_ENGLISH_CAN              0x04    /* English (Canadian) */
1.1.1.2 ! root      207: #define SUBLANG_ENGLISH_NZ               0x05    /* English (New Zealand) */
1.1       root      208: #define SUBLANG_FRENCH                   0x01    /* French */
                    209: #define SUBLANG_FRENCH_BELGIAN           0x02    /* French (Belgian) */
                    210: #define SUBLANG_FRENCH_CANADIAN          0x03    /* French (Canadian) */
                    211: #define SUBLANG_FRENCH_SWISS             0x04    /* French (Swiss) */
                    212: #define SUBLANG_GERMAN                   0x01    /* German */
                    213: #define SUBLANG_GERMAN_SWISS             0x02    /* German (Swiss) */
1.1.1.2 ! root      214: #define SUBLANG_GERMAN_AUSTRIAN          0x03    /* German (Austrian) */
1.1       root      215: #define SUBLANG_ITALIAN                  0x01    /* Italian */
                    216: #define SUBLANG_ITALIAN_SWISS            0x02    /* Italian (Swiss) */
                    217: #define SUBLANG_NORWEGIAN_BOKMAL         0x01    /* Norwegian (Bokmal) */
                    218: #define SUBLANG_NORWEGIAN_NYNORSK        0x02    /* Norwegian (Nynorsk) */
                    219: #define SUBLANG_PORTUGUESE               0x02    /* Portuguese */
                    220: #define SUBLANG_PORTUGUESE_BRAZILIAN     0x01    /* Portuguese (Brazilian) */
                    221: #define SUBLANG_SERBO_CROATIAN_CYRILLIC  0x02    /* Serbo-Croatian (Cyrillic) */
                    222: #define SUBLANG_SERBO_CROATIAN_LATIN     0x01    /* Croato-Serbian (Latin) */
                    223: #define SUBLANG_SPANISH                  0x01    /* Spanish */
                    224: #define SUBLANG_SPANISH_MEXICAN          0x02    /* Spanish (Mexican) */
                    225: #define SUBLANG_SPANISH_MODERN           0x03    /* Spanish (Modern) */
                    226: 
                    227: 
1.1.1.2 ! root      228: /*
        !           229:  *  Country Codes.
        !           230:  */
        !           231: #define CTRY_DEFAULT                     0
        !           232: 
        !           233: #define CTRY_AUSTRALIA                   61      /* Australia */
        !           234: #define CTRY_AUSTRIA                     43      /* Austria */
        !           235: #define CTRY_BELGIUM                     32      /* Belgium */
        !           236: #define CTRY_BRAZIL                      55      /* Brazil */
        !           237: #define CTRY_CANADA                      2       /* Canada */
        !           238: #define CTRY_DENMARK                     45      /* Denmark */
        !           239: #define CTRY_FINLAND                     358     /* Finland */
        !           240: #define CTRY_FRANCE                      33      /* France */
        !           241: #define CTRY_GERMANY                     49      /* Germany */
        !           242: #define CTRY_ICELAND                     354     /* Iceland */
        !           243: #define CTRY_IRELAND                     353     /* Ireland */
        !           244: #define CTRY_ITALY                       39      /* Italy */
        !           245: #define CTRY_JAPAN                       81      /* Japan */
        !           246: #define CTRY_MEXICO                      52      /* Mexico */
        !           247: #define CTRY_NETHERLANDS                 31      /* Netherlands */
        !           248: #define CTRY_NEW_ZEALAND                 64      /* New Zealand */
        !           249: #define CTRY_NORWAY                      47      /* Norway */
        !           250: #define CTRY_PORTUGAL                    351     /* Portugal */
        !           251: #define CTRY_PRCHINA                     86      /* PR China */
        !           252: #define CTRY_SOUTH_KOREA                 82      /* South Korea */
        !           253: #define CTRY_SPAIN                       34      /* Spain */
        !           254: #define CTRY_SWEDEN                      46      /* Sweden */
        !           255: #define CTRY_SWITZERLAND                 41      /* Switzerland */
        !           256: #define CTRY_TAIWAN                      886     /* Taiwan */
        !           257: #define CTRY_UNITED_KINGDOM              44      /* United Kingdom */
        !           258: #define CTRY_UNITED_STATES               1       /* United States */
        !           259: 
1.1       root      260: 
1.1.1.2 ! root      261: /*
        !           262:  *  Locale Types.
        !           263:  *
        !           264:  *  These types are used for the GetLocaleInfoW NLS API routine.
        !           265:  */
        !           266: #define LOCALE_ILANGUAGE            0x0001    /* language id */
        !           267: #define LOCALE_SLANGUAGE            0x0002    /* localized name of language */
        !           268: #define LOCALE_SENGLANGUAGE         0x1001    /* English name of language */
        !           269: #define LOCALE_SABBREVLANGNAME      0x0003    /* abbreviated language name */
        !           270: #define LOCALE_SNATIVELANGNAME      0x0004    /* native name of language */
        !           271: #define LOCALE_ICOUNTRY             0x0005    /* country code */
        !           272: #define LOCALE_SCOUNTRY             0x0006    /* localized name of country */  
        !           273: #define LOCALE_SENGCOUNTRY          0x1002    /* English name of country */  
        !           274: #define LOCALE_SABBREVCTRYNAME      0x0007    /* abbreviated country name */
        !           275: #define LOCALE_SNATIVECTRYNAME      0x0008    /* native name of country */  
        !           276: #define LOCALE_IDEFAULTLANGUAGE     0x0009    /* default language id */
        !           277: #define LOCALE_IDEFAULTCOUNTRY      0x000A    /* default country code */
        !           278: #define LOCALE_IDEFAULTCODEPAGE     0x000B    /* default code page */
        !           279:                                             
        !           280: #define LOCALE_SLIST                0x000C    /* list item separator */
        !           281: #define LOCALE_IMEASURE             0x000D    /* 0 = metric, 1 = US */
        !           282:                                             
        !           283: #define LOCALE_SDECIMAL             0x000E    /* decimal separator */
        !           284: #define LOCALE_STHOUSAND            0x000F    /* thousand separator */
        !           285: #define LOCALE_SGROUPING            0x0010    /* digit grouping */
        !           286: #define LOCALE_IDIGITS              0x0011    /* number of fractional digits */
        !           287: #define LOCALE_ILZERO               0x0012    /* leading zeros for decimal */
        !           288: #define LOCALE_SNATIVEDIGITS        0x0013    /* native ascii 0-9 */
        !           289:                                             
        !           290: #define LOCALE_SCURRENCY            0x0014    /* local monetary symbol */
        !           291: #define LOCALE_SINTLSYMBOL          0x0015    /* intl monetary symbol */
        !           292: #define LOCALE_SMONDECIMALSEP       0x0016    /* monetary decimal separator */
        !           293: #define LOCALE_SMONTHOUSANDSEP      0x0017    /* monetary thousand separator */
        !           294: #define LOCALE_SMONGROUPING         0x0018    /* monetary grouping */
        !           295: #define LOCALE_ICURRDIGITS          0x0019    /* # local monetary digits */
        !           296: #define LOCALE_IINTLCURRDIGITS      0x001A    /* # intl monetary digits */
        !           297: #define LOCALE_ICURRENCY            0x001B    /* positive currency mode */
        !           298: #define LOCALE_INEGCURR             0x001C    /* negative currency mode */
        !           299:                                             
        !           300: #define LOCALE_SDATE                0x001D    /* date separator */
        !           301: #define LOCALE_STIME                0x001E    /* time separator */
        !           302: #define LOCALE_SSHORTDATE           0x001F    /* short date-time separator */
        !           303: #define LOCALE_SLONGDATE            0x0020    /* long date-time separator */
        !           304: #define LOCALE_IDATE                0x0021    /* short date format ordering */
        !           305: #define LOCALE_ILDATE               0x0022    /* long date format ordering */
        !           306: #define LOCALE_ITIME                0x0023    /* time format specifier */
        !           307: #define LOCALE_ICENTURY             0x0024    /* century format specifier */
        !           308: #define LOCALE_ITLZERO              0x0025    /* leading zeros in time field */
        !           309: #define LOCALE_IDAYLZERO            0x0026    /* leading zeros in day field */
        !           310: #define LOCALE_IMONLZERO            0x0027    /* leading zeros in month field */
        !           311: #define LOCALE_S1159                0x0028    /* AM designator */
        !           312: #define LOCALE_S2359                0x0029    /* PM designator */
        !           313:                                             
        !           314: #define LOCALE_SDAYNAME1            0x002A    /* long name for Monday */
        !           315: #define LOCALE_SDAYNAME2            0x002B    /* long name for Tuesday */
        !           316: #define LOCALE_SDAYNAME3            0x002C    /* long name for Wednesday */
        !           317: #define LOCALE_SDAYNAME4            0x002D    /* long name for Thursday */
        !           318: #define LOCALE_SDAYNAME5            0x002E    /* long name for Friday */
        !           319: #define LOCALE_SDAYNAME6            0x002F    /* long name for Saturday */
        !           320: #define LOCALE_SDAYNAME7            0x0030    /* long name for Sunday */
        !           321: #define LOCALE_SABBREVDAYNAME1      0x0031    /* abbreviated name for Monday */   
        !           322: #define LOCALE_SABBREVDAYNAME2      0x0032    /* abbreviated name for Tuesday */  
        !           323: #define LOCALE_SABBREVDAYNAME3      0x0033    /* abbreviated name for Wednesday */
        !           324: #define LOCALE_SABBREVDAYNAME4      0x0034    /* abbreviated name for Thursday */ 
        !           325: #define LOCALE_SABBREVDAYNAME5      0x0035    /* abbreviated name for Friday */   
        !           326: #define LOCALE_SABBREVDAYNAME6      0x0036    /* abbreviated name for Saturday */ 
        !           327: #define LOCALE_SABBREVDAYNAME7      0x0037    /* abbreviated name for Sunday */   
        !           328: #define LOCALE_SMONTHNAME1          0x0038    /* long name for January */
        !           329: #define LOCALE_SMONTHNAME2          0x0039    /* long name for February */
        !           330: #define LOCALE_SMONTHNAME3          0x003A    /* long name for March */
        !           331: #define LOCALE_SMONTHNAME4          0x003B    /* long name for April */
        !           332: #define LOCALE_SMONTHNAME5          0x003C    /* long name for May */
        !           333: #define LOCALE_SMONTHNAME6          0x003D    /* long name for June */
        !           334: #define LOCALE_SMONTHNAME7          0x003E    /* long name for July */
        !           335: #define LOCALE_SMONTHNAME8          0x003F    /* long name for August */
        !           336: #define LOCALE_SMONTHNAME9          0x0040    /* long name for September */
        !           337: #define LOCALE_SMONTHNAME10         0x0041    /* long name for October */
        !           338: #define LOCALE_SMONTHNAME11         0x0042    /* long name for November */
        !           339: #define LOCALE_SMONTHNAME12         0x0043    /* long name for December */
        !           340: #define LOCALE_SABBREVMONTHNAME1    0x0044    /* abbreviated name for January */
        !           341: #define LOCALE_SABBREVMONTHNAME2    0x0045    /* abbreviated name for February */
        !           342: #define LOCALE_SABBREVMONTHNAME3    0x0046    /* abbreviated name for March */
        !           343: #define LOCALE_SABBREVMONTHNAME4    0x0047    /* abbreviated name for April */
        !           344: #define LOCALE_SABBREVMONTHNAME5    0x0048    /* abbreviated name for May */
        !           345: #define LOCALE_SABBREVMONTHNAME6    0x0049    /* abbreviated name for June */
        !           346: #define LOCALE_SABBREVMONTHNAME7    0x004A    /* abbreviated name for July */
        !           347: #define LOCALE_SABBREVMONTHNAME8    0x004B    /* abbreviated name for August */
        !           348: #define LOCALE_SABBREVMONTHNAME9    0x004C    /* abbreviated name for September */
        !           349: #define LOCALE_SABBREVMONTHNAME10   0x004D    /* abbreviated name for October */
        !           350: #define LOCALE_SABBREVMONTHNAME11   0x004E    /* abbreviated name for November */
        !           351: #define LOCALE_SABBREVMONTHNAME12   0x004F    /* abbreviated name for December */
        !           352:                                             
        !           353: #define LOCALE_SPOSITIVESIGN        0x0050    /* positive sign */
        !           354: #define LOCALE_SNEGATIVESIGN        0x0051    /* negative sign */
        !           355: #define LOCALE_IPOSSIGNPOSN         0x0052    /* positive sign position */
        !           356: #define LOCALE_INEGSIGNPOSN         0x0053    /* negative sign position */
        !           357: #define LOCALE_IPOSSYMPRECEDES      0x0054    /* mon sym precedes pos amt */
        !           358: #define LOCALE_IPOSSEPBYSPACE       0x0055    /* mon sym sep by space from pos */ 
        !           359: #define LOCALE_INEGSYMPRECEDES      0x0056    /* mon sym precedes neg amt */
        !           360: #define LOCALE_INEGSEPBYSPACE       0x0057    /* mon sym sep by space from neg */
        !           361:         
        !           362:         
        !           363:         
1.1       root      364: /***************************************************************************\
                    365: * Typedefs
                    366: *
                    367: * Define all types for the NLS component here.
                    368: \***************************************************************************/
                    369: 
                    370: /*
1.1.1.2 ! root      371:  *  IDs.
1.1       root      372:  */
1.1.1.2 ! root      373: typedef DWORD   LCID;                       /* locale ID */
        !           374: typedef WORD    LANGID;                     /* language ID */
        !           375: typedef int     LCTYPE;                     /* locale type constant */
1.1       root      376: 
                    377: 
                    378: /*
1.1.1.2 ! root      379:  *  CP Info.
1.1       root      380:  */
1.1.1.2 ! root      381: typedef struct _cpinfo {
        !           382:     UINT   MaxCharSize;                     /* max length (bytes) of a char */
        !           383:     BYTE   DefaultChar[MAX_DEFAULTCHAR];    /* default character */
        !           384:     BYTE   LeadByte[MAX_LEADBYTES];         /* lead byte ranges */
        !           385: } CPINFO, *LPCPINFO;
1.1       root      386: 
                    387: 
                    388: 
                    389: /***************************************************************************\
                    390: * Macros
                    391: *
                    392: * Define all macros for the NLS component here.
                    393: \***************************************************************************/
                    394: 
                    395: /*
                    396:  *  A language ID is a 16 bit value which is the combination of a
                    397:  *  primary language ID and a secondary language ID.  The bits are
                    398:  *  allocated as follows:
                    399:  *
                    400:  *       +-----------------------+-------------------------+
                    401:  *       |      Sublanguage ID   |   Primary Language ID   |
                    402:  *       +-----------------------+-------------------------+
                    403:  *        15                   10 9                       0   bit
1.1.1.2 ! root      404:  *
        !           405:  *
        !           406:  *  Language ID creation/extraction macros:
        !           407:  *
        !           408:  *    MAKELANGID    - construct language id from primary language id and
        !           409:  *                    sublanguage id.
        !           410:  *    PRIMARYLANGID - extract primary language id from a language id.
        !           411:  *    SUBLANGID     - extract sublanguage id from a language id.
1.1       root      412:  */
1.1.1.2 ! root      413: #define MAKELANGID(p, s)       ((((USHORT)(s)) << 10) | (USHORT)(p))
        !           414: #define PRIMARYLANGID(lgid)    ((USHORT)(lgid) & 0x3ff)
        !           415: #define SUBLANGID(lgid)        ((USHORT)(lgid) >> 10)
        !           416: 
1.1       root      417: 
                    418: /*
1.1.1.2 ! root      419:  *  A locale ID is a 32 bit value which is the combination of a
        !           420:  *  language ID and a reserved area.  The bits are allocated as follows:
1.1       root      421:  *
1.1.1.2 ! root      422:  *       +-----------------------+-------------------------+
        !           423:  *       |       Reserved        |      Language ID        |
        !           424:  *       +-----------------------+-------------------------+
        !           425:  *        31                   16 15                      0   bit
        !           426:  *
        !           427:  *
        !           428:  *  Locale ID creation macro:
        !           429:  *
        !           430:  *    MAKELCID - construct locale id from a language id.
1.1       root      431:  */
1.1.1.2 ! root      432: #define MAKELCID(lgid)  ((DWORD)(((WORD)(lgid)) | (((DWORD)((WORD)(0))) << 16)))
        !           433: 
        !           434: 
        !           435: /*
        !           436:  *  Get the language id from a locale id.
        !           437:  */
        !           438: #define LANGIDFROMLCID(lcid)   ((WORD)(lcid))
        !           439: 
        !           440: 
        !           441: /*
        !           442:  *  Default System and User IDs for language and locale.
        !           443:  */
        !           444: #define LANG_SYSTEM_DEFAULT    (MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
        !           445: #define LANG_USER_DEFAULT      (MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
        !           446: 
        !           447: #define LOCALE_SYSTEM_DEFAULT  (MAKELCID(LANG_SYSTEM_DEFAULT))
        !           448: #define LOCALE_USER_DEFAULT    (MAKELCID(LANG_USER_DEFAULT))
1.1       root      449: 
                    450: 
                    451: 
                    452: /***************************************************************************\
                    453: * Function Prototypes
                    454: *
                    455: * Only prototypes for the NLS APIs should go here.
                    456: \***************************************************************************/
                    457: 
                    458: /*
1.1.1.2 ! root      459:  *  Code Page Dependent APIs.
1.1       root      460:  */
1.1.1.2 ! root      461: UINT   APIENTRY  GetACP(void);
        !           462: UINT   APIENTRY  GetOEMCP(void);
        !           463: BOOL   APIENTRY  GetCPInfo(UINT, LPCPINFO);
        !           464: BOOL   APIENTRY  IsDBCSLeadByte(BYTE);
        !           465: int    APIENTRY  MultiByteToWideChar(UINT, DWORD, LPSTR, int, LPWSTR, int);
        !           466: int    APIENTRY  WideCharToMultiByte(UINT, DWORD, LPWSTR, int, LPSTR, int,
        !           467:                                    LPSTR, LPBOOL);
1.1       root      468: 
                    469: 
                    470: /*
1.1.1.2 ! root      471:  *  Locale Dependent APIs.
1.1       root      472:  */
1.1.1.2 ! root      473: int    APIENTRY  CompareStringW(LCID, DWORD, LPWSTR, int, LPWSTR, int);
        !           474: int    APIENTRY  LCMapStringW(LCID, DWORD, LPWSTR, int, LPWSTR, int);
        !           475: int    APIENTRY  GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int);
        !           476: 
        !           477: LANGID APIENTRY  GetSystemDefaultLangID(void);
        !           478: LANGID APIENTRY  GetUserDefaultLangID(void);
        !           479: LCID   APIENTRY  GetSystemDefaultLCID(void);
        !           480: LCID   APIENTRY  GetUserDefaultLCID(void);
1.1       root      481: 
                    482: 
                    483: /*
1.1.1.2 ! root      484:  *  Locale Independent APIs.
1.1       root      485:  */
1.1.1.2 ! root      486: BOOL   APIENTRY  GetStringTypeW(DWORD, LPWSTR, int, LPWORD);
        !           487: int    APIENTRY  FoldStringW(DWORD, LPWSTR, int, LPWSTR, int);
1.1       root      488: 
                    489: 
                    490: 
                    491: #endif   // NONLS
                    492: 
                    493: #endif   // _WINNLS_
1.1.1.2 ! root      494: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.