************************************************************************* * * * winnls.h -- NLS procedure declarations, constant definitions and macros * * * *************************************************************************
INTERFACE************************************************************************** * Constants * * Define all constants for the NLS component here. ***************************************************************************WinNLS ; FROM Ctypes IMPORT int; FROM WinDef IMPORT BOOL, DWORD, BYTE, UINT, LPWORD, LPBOOL; FROM WinNT IMPORT LPSTR, LPCSTR, LPWSTR, LPCWSTR, LCID, LANGID; FROM WinBase IMPORT LPSYSTEMTIME;
* String Length Maximums.
CONST MAX_LEADBYTES = 12; (* 5 ranges, 2 bytes ea., 0 term. *) MAX_DEFAULTCHAR = 2; (* single or double byte *)
* MBCS and Unicode Translation Flags.
CONST MB_PRECOMPOSED = 16_00000001; (* use precomposed chars *) MB_COMPOSITE = 16_00000002; (* use composite chars *) MB_USEGLYPHCHARS = 16_00000004; (* use glyph chars, not ctrl chars *) MB_ERR_INVALID_CHARS = 16_00000008; (* error for invalid chars *) WC_DEFAULTCHECK = 16_00000100; (* check for default char *) WC_COMPOSITECHECK = 16_00000200; (* convert composite to precomposed *) WC_DISCARDNS = 16_00000010; (* discard non-spacing chars *) WC_SEPCHARS = 16_00000020; (* generate separate chars *) WC_DEFAULTCHAR = 16_00000040; (* replace w/ default char *)
* Character Type Flags.
CONST CT_CTYPE1 = 16_00000001; (* ctype 1 information *) CT_CTYPE2 = 16_00000002; (* ctype 2 information *) CT_CTYPE3 = 16_00000004; (* ctype 3 information *)
* CType 1 Flag Bits.
CONST C1_UPPER = 16_0001; (* upper case *) C1_LOWER = 16_0002; (* lower case *) C1_DIGIT = 16_0004; (* decimal digits *) C1_SPACE = 16_0008; (* spacing characters *) C1_PUNCT = 16_0010; (* punctuation characters *) C1_CNTRL = 16_0020; (* control characters *) C1_BLANK = 16_0040; (* blank characters *) C1_XDIGIT = 16_0080; (* other digits *) C1_ALPHA = 16_0100; (* any linguistic character *)
* CType 2 Flag Bits.
CONST C2_LEFTTORIGHT = 16_0001; (* left to right *) C2_RIGHTTOLEFT = 16_0002; (* right to left *) C2_EUROPENUMBER = 16_0003; (* European number, digit *) C2_EUROPESEPARATOR = 16_0004; (* European numeric separator *) C2_EUROPETERMINATOR = 16_0005; (* European numeric terminator *) C2_ARABICNUMBER = 16_0006; (* Arabic number *) C2_COMMONSEPARATOR = 16_0007; (* common numeric separator *) C2_BLOCKSEPARATOR = 16_0008; (* block separator *) C2_SEGMENTSEPARATOR = 16_0009; (* segment separator *) C2_WHITESPACE = 16_000A; (* white space *) C2_OTHERNEUTRAL = 16_000B; (* other neutrals *) C2_NOTAPPLICABLE = 16_0000; (* no implicit directionality *)
* CType 3 Flag Bits.
CONST C3_NONSPACING = 16_0001; (* nonspacing character *) C3_DIACRITIC = 16_0002; (* diacritic mark *) C3_VOWELMARK = 16_0004; (* vowel mark *) C3_SYMBOL = 16_0008; (* symbols *) C3_KATAKANA = 16_0010; (* katakana character *) C3_HIRAGANA = 16_0020; (* hiragana character *) C3_HALFWIDTH = 16_0040; (* half width character *) C3_FULLWIDTH = 16_0080; (* full width character *) C3_IDEOGRAPH = 16_0100; (* ideographic character *) C3_KASHIDA = 16_0200; (* Arabic kashida character *) C3_LEXICAL = 16_0400; (* lexical character *) C3_ALPHA = 16_8000; (* any linguistic char (C1_ALPHA) *) C3_NOTAPPLICABLE = 16_0000; (* ctype 3 is not applicable *)
* String Flags.
CONST NORM_IGNORECASE = 16_00000001; (* ignore case *) NORM_IGNORENONSPACE = 16_00000002; (* ignore nonspacing chars *) NORM_IGNORESYMBOLS = 16_00000004; (* ignore symbols *) NORM_IGNOREKANATYPE = 16_00010000; (* ignore kanatype *) NORM_IGNOREWIDTH = 16_00020000; (* ignore width *)
* Locale Independent Mapping Flags.
CONST MAP_FOLDCZONE = 16_00000010; (* fold compatibility zone chars *) MAP_PRECOMPOSED = 16_00000020; (* convert to precomposed chars *) MAP_COMPOSITE = 16_00000040; (* convert to composite chars *) MAP_FOLDDIGITS = 16_00000080; (* all digits to ASCII 0-9 *)
* Locale Dependent Mapping Flags.
CONST LCMAP_LOWERCASE = 16_00000100; (* lower case letters *) LCMAP_UPPERCASE = 16_00000200; (* upper case letters *) LCMAP_SORTKEY = 16_00000400; (* WC sort key (normalize) *) LCMAP_BYTEREV = 16_00000800; (* byte reversal *) LCMAP_HIRAGANA = 16_00100000; (* map katakana to hiragana *) LCMAP_KATAKANA = 16_00200000; (* map hiragana to katakana *) LCMAP_HALFWIDTH = 16_00400000; (* map double byte to single byte *) LCMAP_FULLWIDTH = 16_00800000; (* map single byte to double byte *)
* Locale Enumeration Flags.
CONST LCID_INSTALLED = 16_00000001; (* installed locale ids *) LCID_SUPPORTED = 16_00000002; (* supported locale ids *)
* Code Page Enumeration Flags.
CONST CP_INSTALLED = 16_00000001; (* installed code page ids *) CP_SUPPORTED = 16_00000002; (* supported code page ids *)
 *  Sorting Flags.
 *
 *    WORD Sort:    culturally correct sort
 *                  hyphen and apostrophe are special cased
 *                  example: coop and co-op will sort together in a list
 *
 *                        co_op     <-------  underscore (symbol)
 *                        coat
 *                        comb
 *                        coop
 *                        co-op     <-------  hyphen (punctuation)
 *                        cork
 *                        went
 *                        were
 *                        we're     <-------  apostrophe (punctuation)
 *
 *
 *    STRING Sort:  hyphen and apostrophe will sort with all other symbols
 *
 *                        co-op     <-------  hyphen (punctuation)
 *                        co_op     <-------  underscore (symbol)
 *                        coat
 *                        comb
 *                        coop
 *                        cork
 *                        we're     <-------  apostrophe (punctuation)
 *                        went
 *                        were
 
CONST SORT_STRINGSORT = 16_00001000; (* use string sort method *)
* Code Page Default Values.
CONST CP_ACP = 0; (* default to ANSI code page *) CP_OEMCP = 1; (* default to OEM code page *) CP_MACCP = 2; (* default to MAC code page *)
* Country Codes.
CONST CTRY_DEFAULT = 0; CTRY_AUSTRALIA = 61; (* Australia *) CTRY_AUSTRIA = 43; (* Austria *) CTRY_BELGIUM = 32; (* Belgium *) CTRY_BRAZIL = 55; (* Brazil *) CTRY_BULGARIA = 359; (* Bulgaria *) CTRY_CANADA = 2; (* Canada *) CTRY_CROATIA = 385; (* Croatia *) CTRY_CZECH = 42; (* Czech Republic *) CTRY_DENMARK = 45; (* Denmark *) CTRY_FINLAND = 358; (* Finland *) CTRY_FRANCE = 33; (* France *) CTRY_GERMANY = 49; (* Germany *) CTRY_GREECE = 30; (* Greece *) CTRY_HONG_KONG = 852; (* Hong Kong *) CTRY_HUNGARY = 36; (* Hungary *) CTRY_ICELAND = 354; (* Iceland *) CTRY_IRELAND = 353; (* Ireland *) CTRY_ITALY = 39; (* Italy *) CTRY_JAPAN = 81; (* Japan *) CTRY_MEXICO = 52; (* Mexico *) CTRY_NETHERLANDS = 31; (* Netherlands *) CTRY_NEW_ZEALAND = 64; (* New Zealand *) CTRY_NORWAY = 47; (* Norway *) CTRY_POLAND = 48; (* Poland *) CTRY_PORTUGAL = 351; (* Portugal *) CTRY_PRCHINA = 86; (* Peoples' Republic of China *) CTRY_ROMANIA = 40; (* Romania *) CTRY_RUSSIA = 7; (* Russia *) CTRY_SINGAPORE = 65; (* Singapore *) CTRY_SLOVAK = 42; (* Slovak Republic *) CTRY_SLOVENIA = 386; (* Slovenia *) CTRY_SOUTH_KOREA = 82; (* South Korea *) CTRY_SPAIN = 34; (* Spain *) CTRY_SWEDEN = 46; (* Sweden *) CTRY_SWITZERLAND = 41; (* Switzerland *) CTRY_TAIWAN = 886; (* Taiwan *) CTRY_TURKEY = 90; (* Turkey *) CTRY_UNITED_KINGDOM = 44; (* United Kingdom *) CTRY_UNITED_STATES = 1; (* United States *)
* Locale Types. * * These types are used for the GetLocaleInfoW NLS API routine. * * LOCALE_NOUSEROVERRIDE is also used in GetTimeFormatW and GetDateFormatW. * * LOCALE_USE_CP_ACP is used in many of the A (Ansi) apis that need to do * string translation.
CONST LOCALE_NOUSEROVERRIDE = 16_80000000; (* do not use user overrides *) LOCALE_USE_CP_ACP = 16_40000000; (* use the system ACP *) LOCALE_ILANGUAGE = 16_00000001; (* language id *) LOCALE_SLANGUAGE = 16_00000002; (* localized name of language *) LOCALE_SENGLANGUAGE = 16_00001001; (* English name of language *) LOCALE_SABBREVLANGNAME = 16_00000003; (* abbreviated language name *) LOCALE_SNATIVELANGNAME = 16_00000004; (* native name of language *) LOCALE_ICOUNTRY = 16_00000005; (* country code *) LOCALE_SCOUNTRY = 16_00000006; (* localized name of country *) LOCALE_SENGCOUNTRY = 16_00001002; (* English name of country *) LOCALE_SABBREVCTRYNAME = 16_00000007; (* abbreviated country name *) LOCALE_SNATIVECTRYNAME = 16_00000008; (* native name of country *) LOCALE_IDEFAULTLANGUAGE = 16_00000009; (* default language id *) LOCALE_IDEFAULTCOUNTRY = 16_0000000A; (* default country code *) LOCALE_IDEFAULTCODEPAGE = 16_0000000B; (* default oem code page *) LOCALE_IDEFAULTANSICODEPAGE = 16_00001004; (* default ansi code page *) LOCALE_SLIST = 16_0000000C; (* list item separator *) LOCALE_IMEASURE = 16_0000000D; (* 0 = metric, 1 = US *) LOCALE_SDECIMAL = 16_0000000E; (* decimal separator *) LOCALE_STHOUSAND = 16_0000000F; (* thousand separator *) LOCALE_SGROUPING = 16_00000010; (* digit grouping *) LOCALE_IDIGITS = 16_00000011; (* number of fractional digits *) LOCALE_ILZERO = 16_00000012; (* leading zeros for decimal *) LOCALE_INEGNUMBER = 16_00001010; (* negative number mode *) LOCALE_SNATIVEDIGITS = 16_00000013; (* native ascii 0-9 *) LOCALE_SCURRENCY = 16_00000014; (* local monetary symbol *) LOCALE_SINTLSYMBOL = 16_00000015; (* intl monetary symbol *) LOCALE_SMONDECIMALSEP = 16_00000016; (* monetary decimal separator *) LOCALE_SMONTHOUSANDSEP = 16_00000017; (* monetary thousand separator *) LOCALE_SMONGROUPING = 16_00000018; (* monetary grouping *) LOCALE_ICURRDIGITS = 16_00000019; (* # local monetary digits *) LOCALE_IINTLCURRDIGITS = 16_0000001A; (* # intl monetary digits *) LOCALE_ICURRENCY = 16_0000001B; (* positive currency mode *) LOCALE_INEGCURR = 16_0000001C; (* negative currency mode *) LOCALE_SDATE = 16_0000001D; (* date separator *) LOCALE_STIME = 16_0000001E; (* time separator *) LOCALE_SSHORTDATE = 16_0000001F; (* short date format string *) LOCALE_SLONGDATE = 16_00000020; (* long date format string *) LOCALE_STIMEFORMAT = 16_00001003; (* time format string *) LOCALE_IDATE = 16_00000021; (* short date format ordering *) LOCALE_ILDATE = 16_00000022; (* long date format ordering *) LOCALE_ITIME = 16_00000023; (* time format specifier *) LOCALE_ITIMEMARKPOSN = 16_00001005; (* time marker position *) LOCALE_ICENTURY = 16_00000024; (* century format specifier (short date) *) LOCALE_ITLZERO = 16_00000025; (* leading zeros in time field *) LOCALE_IDAYLZERO = 16_00000026; (* leading zeros in day field (short date) *) LOCALE_IMONLZERO = 16_00000027; (* leading zeros in month field (short date) *) LOCALE_S1159 = 16_00000028; (* AM designator *) LOCALE_S2359 = 16_00000029; (* PM designator *) LOCALE_ICALENDARTYPE = 16_00001009; (* type of calendar specifier *) LOCALE_IOPTIONALCALENDAR = 16_0000100B; (* additional calendar types specifier *) LOCALE_IFIRSTDAYOFWEEK = 16_0000100C; (* first day of week specifier *) LOCALE_IFIRSTWEEKOFYEAR = 16_0000100D; (* first week of year specifier *) LOCALE_SDAYNAME1 = 16_0000002A; (* long name for Monday *) LOCALE_SDAYNAME2 = 16_0000002B; (* long name for Tuesday *) LOCALE_SDAYNAME3 = 16_0000002C; (* long name for Wednesday *) LOCALE_SDAYNAME4 = 16_0000002D; (* long name for Thursday *) LOCALE_SDAYNAME5 = 16_0000002E; (* long name for Friday *) LOCALE_SDAYNAME6 = 16_0000002F; (* long name for Saturday *) LOCALE_SDAYNAME7 = 16_00000030; (* long name for Sunday *) LOCALE_SABBREVDAYNAME1 = 16_00000031; (* abbreviated name for Monday *) LOCALE_SABBREVDAYNAME2 = 16_00000032; (* abbreviated name for Tuesday *) LOCALE_SABBREVDAYNAME3 = 16_00000033; (* abbreviated name for Wednesday *) LOCALE_SABBREVDAYNAME4 = 16_00000034; (* abbreviated name for Thursday *) LOCALE_SABBREVDAYNAME5 = 16_00000035; (* abbreviated name for Friday *) LOCALE_SABBREVDAYNAME6 = 16_00000036; (* abbreviated name for Saturday *) LOCALE_SABBREVDAYNAME7 = 16_00000037; (* abbreviated name for Sunday *) LOCALE_SMONTHNAME1 = 16_00000038; (* long name for January *) LOCALE_SMONTHNAME2 = 16_00000039; (* long name for February *) LOCALE_SMONTHNAME3 = 16_0000003A; (* long name for March *) LOCALE_SMONTHNAME4 = 16_0000003B; (* long name for April *) LOCALE_SMONTHNAME5 = 16_0000003C; (* long name for May *) LOCALE_SMONTHNAME6 = 16_0000003D; (* long name for June *) LOCALE_SMONTHNAME7 = 16_0000003E; (* long name for July *) LOCALE_SMONTHNAME8 = 16_0000003F; (* long name for August *) LOCALE_SMONTHNAME9 = 16_00000040; (* long name for September *) LOCALE_SMONTHNAME10 = 16_00000041; (* long name for October *) LOCALE_SMONTHNAME11 = 16_00000042; (* long name for November *) LOCALE_SMONTHNAME12 = 16_00000043; (* long name for December *) LOCALE_SMONTHNAME13 = 16_0000100E; (* long name for 13th month (if exists) *) LOCALE_SABBREVMONTHNAME1 = 16_00000044; (* abbreviated name for January *) LOCALE_SABBREVMONTHNAME2 = 16_00000045; (* abbreviated name for February *) LOCALE_SABBREVMONTHNAME3 = 16_00000046; (* abbreviated name for March *) LOCALE_SABBREVMONTHNAME4 = 16_00000047; (* abbreviated name for April *) LOCALE_SABBREVMONTHNAME5 = 16_00000048; (* abbreviated name for May *) LOCALE_SABBREVMONTHNAME6 = 16_00000049; (* abbreviated name for June *) LOCALE_SABBREVMONTHNAME7 = 16_0000004A; (* abbreviated name for July *) LOCALE_SABBREVMONTHNAME8 = 16_0000004B; (* abbreviated name for August *) LOCALE_SABBREVMONTHNAME9 = 16_0000004C; (* abbreviated name for September *) LOCALE_SABBREVMONTHNAME10 = 16_0000004D; (* abbreviated name for October *) LOCALE_SABBREVMONTHNAME11 = 16_0000004E; (* abbreviated name for November *) LOCALE_SABBREVMONTHNAME12 = 16_0000004F; (* abbreviated name for December *) LOCALE_SABBREVMONTHNAME13 = 16_0000100F; (* abbreviated name for 13th month (if exists) *) LOCALE_SPOSITIVESIGN = 16_00000050; (* positive sign *) LOCALE_SNEGATIVESIGN = 16_00000051; (* negative sign *) LOCALE_IPOSSIGNPOSN = 16_00000052; (* positive sign position *) LOCALE_INEGSIGNPOSN = 16_00000053; (* negative sign position *) LOCALE_IPOSSYMPRECEDES = 16_00000054; (* mon sym precedes pos amt *) LOCALE_IPOSSEPBYSPACE = 16_00000055; (* mon sym sep by space from pos amt *) LOCALE_INEGSYMPRECEDES = 16_00000056; (* mon sym precedes neg amt *) LOCALE_INEGSEPBYSPACE = 16_00000057; (* mon sym sep by space from neg amt *) LOCALE_FONTSIGNATURE = 16_00000058; (* font signature *)
* Time Flags for GetTimeFormatW.
CONST TIME_NOMINUTESORSECONDS = 16_00000001; (* do not use minutes or seconds *) TIME_NOSECONDS = 16_00000002; (* do not use seconds *) TIME_NOTIMEMARKER = 16_00000004; (* do not use time marker *) TIME_FORCE24HOURFORMAT = 16_00000008; (* always use 24 hour format *)
* Date Flags for GetDateFormatW.
CONST DATE_SHORTDATE = 16_00000001; (* use short date picture *) DATE_LONGDATE = 16_00000002; (* use long date picture *) DATE_USE_ALT_CALENDAR = 16_00000004; (* use alternate calendar (if any) *)
* Calendar Types. * * These types are used for the GetALTCalendarInfoW NLS API routine.
CONST CAL_ICALINTVALUE = 16_00000001; (* calendar type *) CAL_SCALNAME = 16_00000002; (* native name of calendar *) CAL_IYEAROFFSETRANGE = 16_00000003; (* starting years of eras *) CAL_SERASTRING = 16_00000004; (* era name for IYearOffsetRanges *) CAL_SSHORTDATE = 16_00000005; (* short date format string *) CAL_SLONGDATE = 16_00000006; (* long date format string *) CAL_SDAYNAME1 = 16_00000007; (* native name for Monday *) CAL_SDAYNAME2 = 16_00000008; (* native name for Tuesday *) CAL_SDAYNAME3 = 16_00000009; (* native name for Wednesday *) CAL_SDAYNAME4 = 16_0000000a; (* native name for Thursday *) CAL_SDAYNAME5 = 16_0000000b; (* native name for Friday *) CAL_SDAYNAME6 = 16_0000000c; (* native name for Saturday *) CAL_SDAYNAME7 = 16_0000000d; (* native name for Sunday *) CAL_SABBREVDAYNAME1 = 16_0000000e; (* abbreviated name for Monday *) CAL_SABBREVDAYNAME2 = 16_0000000f; (* abbreviated name for Tuesday *) CAL_SABBREVDAYNAME3 = 16_00000010; (* abbreviated name for Wednesday *) CAL_SABBREVDAYNAME4 = 16_00000011; (* abbreviated name for Thursday *) CAL_SABBREVDAYNAME5 = 16_00000012; (* abbreviated name for Friday *) CAL_SABBREVDAYNAME6 = 16_00000013; (* abbreviated name for Saturday *) CAL_SABBREVDAYNAME7 = 16_00000014; (* abbreviated name for Sunday *) CAL_SMONTHNAME1 = 16_00000015; (* native name for January *) CAL_SMONTHNAME2 = 16_00000016; (* native name for February *) CAL_SMONTHNAME3 = 16_00000017; (* native name for March *) CAL_SMONTHNAME4 = 16_00000018; (* native name for April *) CAL_SMONTHNAME5 = 16_00000019; (* native name for May *) CAL_SMONTHNAME6 = 16_0000001a; (* native name for June *) CAL_SMONTHNAME7 = 16_0000001b; (* native name for July *) CAL_SMONTHNAME8 = 16_0000001c; (* native name for August *) CAL_SMONTHNAME9 = 16_0000001d; (* native name for September *) CAL_SMONTHNAME10 = 16_0000001e; (* native name for October *) CAL_SMONTHNAME11 = 16_0000001f; (* native name for November *) CAL_SMONTHNAME12 = 16_00000020; (* native name for December *) CAL_SMONTHNAME13 = 16_00000021; (* native name for 13th month (if any) *) CAL_SABBREVMONTHNAME1 = 16_00000022; (* abbreviated name for January *) CAL_SABBREVMONTHNAME2 = 16_00000023; (* abbreviated name for February *) CAL_SABBREVMONTHNAME3 = 16_00000024; (* abbreviated name for March *) CAL_SABBREVMONTHNAME4 = 16_00000025; (* abbreviated name for April *) CAL_SABBREVMONTHNAME5 = 16_00000026; (* abbreviated name for May *) CAL_SABBREVMONTHNAME6 = 16_00000027; (* abbreviated name for June *) CAL_SABBREVMONTHNAME7 = 16_00000028; (* abbreviated name for July *) CAL_SABBREVMONTHNAME8 = 16_00000029; (* abbreviated name for August *) CAL_SABBREVMONTHNAME9 = 16_0000002a; (* abbreviated name for September *) CAL_SABBREVMONTHNAME10 = 16_0000002b; (* abbreviated name for October *) CAL_SABBREVMONTHNAME11 = 16_0000002c; (* abbreviated name for November *) CAL_SABBREVMONTHNAME12 = 16_0000002d; (* abbreviated name for December *) CAL_SABBREVMONTHNAME13 = 16_0000002e; (* abbreviated name for 13th month (if any) *)
* Calendar Enumeration Value.
CONST ENUM_ALL_CALENDARS = 16_ffffffff; (* enumerate all calendars *)
* Calendar ID Values.
CONST CAL_GREGORIAN = 1; (* Gregorian (localized) calendar *) CAL_GREGORIAN_US = 2; (* Gregorian (U.S.) calendar *) CAL_JAPAN = 3; (* Japanese Emperor Era calendar *) CAL_TAIWAN = 4; (* Republic of China Era calendar *) CAL_KOREA = 5; (* Korean Tangun Era calendar *)*************************************************************************** * Typedefs * * Define all types for the NLS component here. ***************************************************************************
TYPE LCTYPE = DWORD; (* Locale type constant. *) CALTYPE = DWORD; (* Calendar type constant. *) CALID = DWORD; (* Calendar ID. *)
* CP Info.
TYPE
  LPCPINFO = UNTRACED REF CPINFO;
  CPINFO = RECORD
    MaxCharSize : UINT;  (* max length (bytes) of a char *)
    DefaultChar : ARRAY [0..MAX_DEFAULTCHAR-1] OF BYTE;   (* default character *)
    LeadByte    : ARRAY [0..MAX_LEADBYTES-1] OF BYTE;     (* lead byte ranges *)
  END;
* Number format.
TYPE
  LPNUMBERFMTA = UNTRACED REF NUMBERFMTA;
  NUMBERFMTA = RECORD
    NumDigits     : UINT;    (* number of decimal digits *)
    LeadingZero   : UINT;    (* if leading zero in decimal fields *)
    Grouping      : UINT;    (* group size left of decimal *)
    lpDecimalSep  : LPSTR;   (* ptr to decimal separator string *)
    lpThousandSep : LPSTR;   (* ptr to thousand separator string *)
    NegativeOrder : UINT;    (* negative number ordering *)
  END;
  LPNUMBERFMTW = UNTRACED REF NUMBERFMTW;
  NUMBERFMTW = RECORD
    NumDigits     : UINT;    (* number of decimal digits *)
    LeadingZero   : UINT;    (* if leading zero in decimal fields *)
    Grouping      : UINT;    (* group size left of decimal *)
    lpDecimalSep  : LPWSTR;  (* ptr to decimal separator string *)
    lpThousandSep : LPWSTR;  (* ptr to thousand separator string *)
    NegativeOrder : UINT;    (* negative number ordering *)
  END;
  NUMBERFMT   = NUMBERFMTA;
  LPNUMBERFMT = LPNUMBERFMTA;
* Currency format.
TYPE
  LPCURRENCYFMTA = UNTRACED REF CURRENCYFMTA;
  CURRENCYFMTA = RECORD
    NumDigits        : UINT;    (* number of decimal digits *)
    LeadingZero      : UINT;    (* if leading zero in decimal fields *)
    Grouping         : UINT;    (* group size left of decimal *)
    lpDecimalSep     : LPSTR;   (* ptr to decimal separator string *)
    lpThousandSep    : LPSTR;   (* ptr to thousand separator string *)
    NegativeOrder    : UINT;    (* negative currency ordering *)
    PositiveOrder    : UINT;    (* positive currency ordering *)
    lpCurrencySymbol : LPSTR;   (* ptr to currency symbol string *)
  END;
  LPCURRENCYFMTW = UNTRACED REF CURRENCYFMTW;
  CURRENCYFMTW = RECORD
    NumDigits        : UINT;    (* number of decimal digits *)
    LeadingZero      : UINT;    (* if leading zero in decimal fields *)
    Grouping         : UINT;    (* group size left of decimal *)
    lpDecimalSep     : LPWSTR;  (* ptr to decimal separator string *)
    lpThousandSep    : LPWSTR;  (* ptr to thousand separator string *)
    NegativeOrder    : UINT;    (* negative currency ordering *)
    PositiveOrder    : UINT;    (* positive currency ordering *)
    lpCurrencySymbol : LPWSTR;  (* ptr to currency symbol string *)
  END;
  CURRENCYFMT   = CURRENCYFMTA;
  LPCURRENCYFMT = LPCURRENCYFMTA;
* Enumeration function constants.
TYPE LOCALE_ENUMPROCA = <*CALLBACK*> PROCEDURE (str: LPSTR): BOOL; CODEPAGE_ENUMPROCA = <*CALLBACK*> PROCEDURE (str: LPSTR): BOOL; DATEFMT_ENUMPROCA = <*CALLBACK*> PROCEDURE (str: LPSTR): BOOL; TIMEFMT_ENUMPROCA = <*CALLBACK*> PROCEDURE (str: LPSTR): BOOL; CALINFO_ENUMPROCA = <*CALLBACK*> PROCEDURE (str: LPSTR): BOOL; LOCALE_ENUMPROCW = <*CALLBACK*> PROCEDURE (str: LPWSTR): BOOL; CODEPAGE_ENUMPROCW = <*CALLBACK*> PROCEDURE (str: LPWSTR): BOOL; DATEFMT_ENUMPROCW = <*CALLBACK*> PROCEDURE (str: LPWSTR): BOOL; TIMEFMT_ENUMPROCW = <*CALLBACK*> PROCEDURE (str: LPWSTR): BOOL; CALINFO_ENUMPROCW = <*CALLBACK*> PROCEDURE (str: LPWSTR): BOOL; LOCALE_ENUMPROC = LOCALE_ENUMPROCA; CODEPAGE_ENUMPROC = CODEPAGE_ENUMPROCA; DATEFMT_ENUMPROC = DATEFMT_ENUMPROCA; TIMEFMT_ENUMPROC = TIMEFMT_ENUMPROCA; CALINFO_ENUMPROC = CALINFO_ENUMPROCA;*************************************************************************** * Macros * * Define all macros for the NLS component here. ***************************************************************************
*************************************************************************** * Function Prototypes * * Only prototypes for the NLS APIs should go here. ***************************************************************************
* Code Page Dependent APIs.
<*EXTERNAL IsValidCodePage:WINAPI*>
PROCEDURE IsValidCodePage (CodePage: UINT): BOOL;
<*EXTERNAL GetACP:WINAPI*>
PROCEDURE GetACP (): UINT;
<*EXTERNAL GetOEMCP:WINAPI*>
PROCEDURE GetOEMCP (): UINT;
<*EXTERNAL GetCPInfo:WINAPI*>
PROCEDURE GetCPInfo (CodePage: UINT;  lpCPInfo: LPCPINFO): BOOL;
<*EXTERNAL IsDBCSLeadByte:WINAPI*>
PROCEDURE IsDBCSLeadByte (TestChar: BYTE): BOOL;
<*EXTERNAL IsDBCSLeadByteEx:WINAPI*>
PROCEDURE IsDBCSLeadByteEx (CodePage: UINT;  TestChar: BYTE): BOOL;
<*EXTERNAL MultiByteToWideChar:WINAPI*>
PROCEDURE MultiByteToWideChar (CodePage       : UINT;
                               dwFlags        : DWORD;
                               lpMultiByteStr : LPCSTR;
                               cchMultiByte   : int;
                               lpWideCharStr  : LPWSTR;
                               cchWideChar    : int): int;
<*EXTERNAL WideCharToMultiByte:WINAPI*>
PROCEDURE WideCharToMultiByte (CodePage          : UINT;
                               dwFlags           : DWORD;
                               lpWideCharStr     : LPCWSTR;
                               cchWideChar       : int;
                               lpMultiByteStr    : LPSTR;
                               cchMultiByte      : int;
                               lpDefaultChar     : LPCSTR;
                               lpUsedDefaultChar : LPBOOL): int;
* Locale Dependent APIs.
<*EXTERNAL CompareStringA:WINAPI*>
PROCEDURE CompareStringA (Locale     : LCID;
                          dwCmpFlags : DWORD;
                          lpString1  : LPCSTR;
                          cchCount1  : int;
                          lpString2  : LPCSTR;
                          cchCount2  : int): int;
<*EXTERNAL CompareStringW:WINAPI*>
PROCEDURE CompareStringW (Locale     : LCID;
                          dwCmpFlags : DWORD;
                          lpString1  : LPCWSTR;
                          cchCount1  : int;
                          lpString2  : LPCWSTR;
                          cchCount2  : int): int;
CONST CompareString = CompareStringA;
<*EXTERNAL LCMapStringA:WINAPI*>
PROCEDURE LCMapStringA (Locale     : LCID;
                        dwMapFlags : DWORD;
                        lpSrcStr   : LPCSTR;
                        cchSrc     : int;
                        lpDestStr  : LPSTR;
                        cchDest    : int): int;
<*EXTERNAL LCMapStringW:WINAPI*>
PROCEDURE LCMapStringW (Locale     : LCID;
                        dwMapFlags : DWORD;
                        lpSrcStr   : LPCWSTR;
                        cchSrc     : int;
                        lpDestStr  : LPWSTR;
                        cchDest    : int): int;
CONST LCMapString = LCMapStringA;
<*EXTERNAL GetLocaleInfoA:WINAPI*>
PROCEDURE GetLocaleInfoA (Locale   : LCID;
                          LCType   : LCTYPE;
                          lpLCData : LPSTR;
                          cchData  : int): int;
<*EXTERNAL GetLocaleInfoW:WINAPI*>
PROCEDURE GetLocaleInfoW (Locale   : LCID;
                          LCType   : LCTYPE;
                          lpLCData : LPWSTR;
                          cchData  : int): int;
CONST GetLocaleInfo = GetLocaleInfoA;
<*EXTERNAL SetLocaleInfoA:WINAPI*>
PROCEDURE SetLocaleInfoA (Locale   : LCID;
                          LCType   : LCTYPE;
                          lpLCData : LPCSTR): BOOL;
<*EXTERNAL SetLocaleInfoW:WINAPI*>
PROCEDURE SetLocaleInfoW (Locale   : LCID;
                          LCType   : LCTYPE;
                          lpLCData : LPCWSTR): BOOL;
CONST SetLocaleInfo = SetLocaleInfoA;
<*EXTERNAL GetTimeFormatA:WINAPI*>
PROCEDURE GetTimeFormatA (Locale    : LCID;
                          dwFlags   : DWORD;
                          lpTime    : LPSYSTEMTIME;
                          lpFormat  : LPCSTR;
                          lpTimeStr : LPSTR;
                          cchTime   : int): int;
<*EXTERNAL GetTimeFormatW:WINAPI*>
PROCEDURE GetTimeFormatW (Locale    : LCID;
                          dwFlags   : DWORD;
                          lpTime    : LPSYSTEMTIME;
                          lpFormat  : LPCWSTR;
                          lpTimeStr : LPWSTR;
                          cchTime   : int): int;
CONST GetTimeFormat = GetTimeFormatA;
<*EXTERNAL GetDateFormatA:WINAPI*>
PROCEDURE GetDateFormatA (Locale    : LCID;
                          dwFlags   : DWORD;
                          lpDate    : LPSYSTEMTIME;
                          lpFormat  : LPCSTR;
                          lpDateStr : LPSTR;
                          cchDate   : int): int;
<*EXTERNAL GetDateFormatW:WINAPI*>
PROCEDURE GetDateFormatW (Locale    : LCID;
                          dwFlags   : DWORD;
                          lpDate    : LPSYSTEMTIME;
                          lpFormat  : LPCWSTR;
                          lpDateStr : LPWSTR;
                          cchDate   : int): int;
CONST GetDateFormat = GetDateFormatA;
<*EXTERNAL GetNumberFormatA:WINAPI*>
PROCEDURE GetNumberFormatA (Locale      : LCID;
                            dwFlags     : DWORD;
                            lpValue     : LPCSTR;
                            lpFormat    : LPNUMBERFMTA;
                            lpNumberStr : LPSTR;
                            cchNumber   : int): int;
<*EXTERNAL GetNumberFormatW:WINAPI*>
PROCEDURE GetNumberFormatW (Locale      : LCID;
                            dwFlags     : DWORD;
                            lpValue     : LPCWSTR;
                            lpFormat    : LPNUMBERFMTW;
                            lpNumberStr : LPWSTR;
                            cchNumber   : int): int;
CONST GetNumberFormat = GetNumberFormatA;
<*EXTERNAL GetCurrencyFormatA:WINAPI*>
PROCEDURE GetCurrencyFormatA (Locale        : LCID;
                              dwFlags       : DWORD;
                              lpValue       : LPCSTR;
                              lpFormat      : LPCURRENCYFMTA;
                              lpCurrencyStr : LPSTR;
                              cchCurrency   : int): int;
<*EXTERNAL GetCurrencyFormatW:WINAPI*>
PROCEDURE GetCurrencyFormatW (Locale        : LCID;
                              dwFlags       : DWORD;
                              lpValue       : LPCWSTR;
                              lpFormat      : LPCURRENCYFMTW;
                              lpCurrencyStr : LPWSTR;
                              cchCurrency   : int): int;
CONST GetCurrencyFormat = GetCurrencyFormatA;
<*EXTERNAL EnumCalendarInfoA:WINAPI*>
PROCEDURE EnumCalendarInfoA (lpCalInfoEnumProc : CALINFO_ENUMPROCA;
                             Locale            : LCID;
                             Calendar          : CALID;
                             CalType           : CALTYPE): BOOL;
<*EXTERNAL EnumCalendarInfoW:WINAPI*>
PROCEDURE EnumCalendarInfoW (lpCalInfoEnumProc : CALINFO_ENUMPROCW;
                             Locale            : LCID;
                             Calendar          : CALID;
                             CalType           : CALTYPE): BOOL;
CONST EnumCalendarInfo = EnumCalendarInfoA;
<*EXTERNAL EnumTimeFormatsA:WINAPI*>
PROCEDURE EnumTimeFormatsA (lpTimeFmtEnumProc : TIMEFMT_ENUMPROCA;
                            Locale            : LCID;
                            dwFlags           : DWORD): BOOL;
<*EXTERNAL EnumTimeFormatsW:WINAPI*>
PROCEDURE EnumTimeFormatsW (lpTimeFmtEnumProc : TIMEFMT_ENUMPROCW;
                            Locale            : LCID;
                            dwFlags           : DWORD): BOOL;
CONST EnumTimeFormats = EnumTimeFormatsA;
<*EXTERNAL EnumDateFormatsA:WINAPI*>
PROCEDURE EnumDateFormatsA (lpDateFmtEnumProc : DATEFMT_ENUMPROCA;
                            Locale            : LCID;
                            dwFlags           : DWORD): BOOL;
<*EXTERNAL EnumDateFormatsW:WINAPI*>
PROCEDURE EnumDateFormatsW (lpDateFmtEnumProc : DATEFMT_ENUMPROCW;
                            Locale            : LCID;
                            dwFlags           : DWORD): BOOL;
CONST EnumDateFormats = EnumDateFormatsA;
<*EXTERNAL IsValidLocale:WINAPI*>
PROCEDURE IsValidLocale (Locale: LCID;  dwFlags: DWORD): BOOL;
<*EXTERNAL ConvertDefaultLocale:WINAPI*>
PROCEDURE ConvertDefaultLocale (Locale: LCID): LCID;
<*EXTERNAL GetThreadLocale:WINAPI*>
PROCEDURE GetThreadLocale (): LCID;
<*EXTERNAL SetThreadLocale:WINAPI*>
PROCEDURE SetThreadLocale (Locale: LCID): BOOL;
<*EXTERNAL GetSystemDefaultLangID:WINAPI*>
PROCEDURE GetSystemDefaultLangID (): LANGID;
<*EXTERNAL GetUserDefaultLangID:WINAPI*>
PROCEDURE GetUserDefaultLangID (): LANGID;
<*EXTERNAL GetSystemDefaultLCID:WINAPI*>
PROCEDURE GetSystemDefaultLCID (): LCID;
<*EXTERNAL GetUserDefaultLCID:WINAPI*>
PROCEDURE GetUserDefaultLCID (): LCID;
* Locale Independent APIs.
<*EXTERNAL GetStringTypeExA:WINAPI*>
PROCEDURE GetStringTypeExA (Locale     : LCID;
                            dwInfoType : DWORD;
                            lpSrcStr   : LPCSTR;
                            cchSrc     : int;
                            lpCharType : LPWORD): BOOL;
<*EXTERNAL GetStringTypeExW:WINAPI*>
PROCEDURE GetStringTypeExW (Locale     : LCID;
                            dwInfoType : DWORD;
                            lpSrcStr   : LPCWSTR;
                            cchSrc     : int;
                            lpCharType : LPWORD): BOOL;
CONST GetStringTypeEx = GetStringTypeExA;
* NOTE: The parameters for GetStringTypeA and GetStringTypeW are * NOT the same. The W version was shipped in NT 3.1. The * A version was then shipped in 16-bit OLE with the wrong * parameters (ported from Win95). To be compatible, we * must break the relationship between the A and W versions * of GetStringType. There will be NO function call for the * generic GetStringType. * * GetStringTypeEx (above) should be used instead.
<*EXTERNAL GetStringTypeA:WINAPI*>
PROCEDURE GetStringTypeA (Locale     : LCID;
                          dwInfoType : DWORD;
                          lpSrcStr   : LPCSTR;
                          cchSrc     : int;
                          lpCharType : LPWORD): BOOL;
<*EXTERNAL GetStringTypeW:WINAPI*>
PROCEDURE GetStringTypeW (dwInfoType : DWORD;
                          lpSrcStr   : LPCWSTR;
                          cchSrc     : int;
                          lpCharType : LPWORD): BOOL;
<*EXTERNAL FoldStringA:WINAPI*>
PROCEDURE FoldStringA (dwMapFlags : DWORD;
                       lpSrcStr   : LPCSTR;
                       cchSrc     : int;
                       lpDestStr  : LPSTR;
                       cchDest    : int): int;
<*EXTERNAL FoldStringW:WINAPI*>
PROCEDURE FoldStringW (dwMapFlags : DWORD;
                       lpSrcStr   : LPCWSTR;
                       cchSrc     : int;
                       lpDestStr  : LPWSTR;
                       cchDest    : int): int;
CONST FoldString = FoldStringA;
<*EXTERNAL EnumSystemLocalesA:WINAPI*>
PROCEDURE EnumSystemLocalesA (lpLocaleEnumProc : LOCALE_ENUMPROCA;
                              dwFlags          : DWORD): BOOL;
<*EXTERNAL EnumSystemLocalesW:WINAPI*>
PROCEDURE EnumSystemLocalesW (lpLocaleEnumProc : LOCALE_ENUMPROCW;
                              dwFlags          : DWORD): BOOL;
CONST EnumSystemLocales = EnumSystemLocalesA;
<*EXTERNAL EnumSystemCodePagesA:WINAPI*>
PROCEDURE EnumSystemCodePagesA (lpCodePageEnumProc : CODEPAGE_ENUMPROCA;
                                dwFlags            : DWORD): BOOL;
<*EXTERNAL EnumSystemCodePagesW:WINAPI*>
PROCEDURE EnumSystemCodePagesW (lpCodePageEnumProc : CODEPAGE_ENUMPROCW;
                                dwFlags            : DWORD): BOOL;
CONST EnumSystemCodePages = EnumSystemCodePagesA;
END WinNLS.