|
|
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: */
35: #define MAX_LANG_LEN 255 /* maximum language length */
36: #define MAX_CTRY_LEN 255 /* maximum country length */
37: #define MAX_CP_LEN 255 /* maximum codepage length */
38:
39:
40: /*
41: * MBCS and Unicode Translation Flags.
42: */
43: #define MB_PRECOMPOSED 0x00000001 /* use precomposed chars */
44: #define MB_COMPOSITE 0x00000002 /* use composite chars */
45:
46: #define WC_DISCARDNS 0x00000010 /* discard non-spacing chars */
47: #define WC_SEPCHARS 0x00000020 /* generate seperate chars */
48: #define WC_REPLACEBASE 0x00000040 /* replace base char w/ default */
49:
50:
51: /*
52: * Character Type Flags.
53: */
54: #define CT_CTYPE1 0x00000001 /* ctype 1 information */
55: #define CT_CTYPE2 0x00000002 /* ctype 2 information */
56:
57: /*
58: * CType 1 Flag Bits.
59: */
60: #define C1_UPPERCASE 0x0001 /* upper case */
61: #define C1_LOWERCASE 0x0002 /* lower case */
62: #define C1_DIGIT 0x0004 /* 0-9 */
63: #define C1_WHITESPACE 0x0008 /* tab,CR,NL,vertical tab,form feed */
64: #define C1_PUNCTUATION 0x0010 /* punctuation character */
65: #define C1_CONTROLCHAR 0x0020 /* control character */
66: #define C1_ALPHA 0x0100 /* A-Z, a-z */
67: #define C1_NONSPACING 0x0200 /* nonspacing character */
68: #define C1_SYMBOL 0x0400 /* ! @ # $ % ^ & * ( ) etc. */
69: #define C1_ISNUMERIC 0x0800 /* numeric value */
70:
71: /*
72: * CType 2 Flag Bits.
73: */
74: #define C2_LEFTTORIGHT 0x0001 /* left to right */
75: #define C2_RIGHTTOLEFT 0x0002 /* right to left */
76:
77: #define C2_EUROPENUMBER 0x0004 /* European number, digit */
78: #define C2_EUROPESEPERATOR 0x0008 /* European numeric seperator */
79: #define C2_EUROPETERMINATOR 0x0010 /* European numeric terminator */
80: #define C2_ARABICNUMBER 0x0020 /* Arabic number */
81: #define C2_COMMONSEPERATOR 0x0040 /* common numeric seperator */
82:
83: #define C2_BLOCKSEPERATOR 0x0080 /* block seperator paragraph */
84: #define C2_SEGMENTSEPERATOR 0x0100 /* segment seperator */
85: #define C2_WHITESPACE 0x0200 /* white space */
86: #define C2_OTHERNEUTRAL 0x0400 /* other neutrals */
87:
88:
89: /*
90: * String Flags.
91: */
92: #define STR_IGNORECASE 0x00000001 /* ignore case */
93: #define STR_IGNORENONSPACE 0x00000002 /* ignore nonspacing chars */
94: #define STR_IGNORESYMBOLS 0x00000004 /* ignore symbols */
95:
96: /*
97: * Mapping Flags.
98: */
99: #define MAP_UPPERCASE 0x00000010 /* upper case letters */
100: #define MAP_LOWERCASE 0x00000020 /* lower case letters */
101: #define MAP_CTYPE1 0x00000040 /* ctype 1 info */
102: #define MAP_CTYPE2 0x00000080 /* ctype 2 info */
103:
104: #define MAP_COLLATE 0x00000100 /* collation (sort) table */
105: #define MAP_SORTKEY 0x00000200 /* sort key */
106:
107: #define MAP_UCTOMB 0x00000400 /* UC to MB table */
108: #define MAP_MBTOUC 0x00000800 /* MB to UC table */
109:
110: #define MAP_FOLDCZONE 0x00001000 /* fold compatibility zone chars */
111: #define MAP_PRECOMPOSED 0x00002000 /* accented to precomposed chars */
112: #define MAP_COMPOSITE 0x00004000 /* accented to composite chars */
113: #define MAP_ASCIIDIGITS 0x00008000 /* all digits to ASCII 0-9 */
114:
115:
116: /*
117: * Locale Information Flags.
118: */
119: #define LI_CPDATA 0x00000001 /* code page data */
120: #define LI_CTRYDATA 0x00000002 /* country data */
121: #define LI_LANGDATA 0x00000004 /* language data */
122: #define LI_LCMONETARY 0x00000008 /* monetary conventions */
123: #define LI_LCNUMERIC 0x00000010 /* numeric conventions */
124: #define LI_DATETIMEFMT 0x00000020 /* date/time formats */
125: #define LI_DATETIMESTR 0x00000040 /* date/time strings */
126:
127:
128: /*
129: * Qualified Locale Flags.
130: */
131: #define QF_LCID 0x00000001 /* LCID structure */
132: #define QF_STRINGS 0x00000002 /* LCSTRINGS structure */
133:
134:
135: /*
136: * Language IDs.
137: *
138: * The following two combinations of primary language ID and
139: * sublanguage ID have special semantics:
140: *
141: * Primary Language ID Sublanguage ID Result
142: * ------------------- --------------- ------------------------
143: * LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral
144: * LANG_NEUTRAL SUBLANG_DEFAULT Process default language
145: */
146:
147: /*
148: * Primary language IDs.
149: */
150: #define LANG_NEUTRAL 0x00
151:
152: #define LANG_ALBANIAN 0x1c
153: #define LANG_ARABIC 0x01
154: #define LANG_BAHASA 0x21
155: #define LANG_BULGARIAN 0x02
156: #define LANG_CATALAN 0x03
157: #define LANG_CHINESE 0x04
158: #define LANG_CZECH 0x05
159: #define LANG_DANISH 0x06
160: #define LANG_DUTCH 0x13
161: #define LANG_ENGLISH 0x09
162: #define LANG_FINNISH 0x0b
163: #define LANG_FRENCH 0x0c
164: #define LANG_GERMAN 0x07
165: #define LANG_GREEK 0x08
166: #define LANG_HEBREW 0x0d
167: #define LANG_HUNGARIAN 0x0e
168: #define LANG_ICELANDIC 0x0f
169: #define LANG_ITALIAN 0x10
170: #define LANG_JAPANESE 0x11
171: #define LANG_KOREAN 0x12
172: #define LANG_NORWEGIAN 0x14
173: #define LANG_POLISH 0x15
174: #define LANG_PORTUGUESE 0x16
175: #define LANG_RHAETO_ROMAN 0x17
176: #define LANG_ROMANIAN 0x18
177: #define LANG_RUSSIAN 0x19
178: #define LANG_SERBO_CROATIAN 0x1a
179: #define LANG_SLOVAK 0x1b
180: #define LANG_SPANISH 0x0a
181: #define LANG_SWEDISH 0x1d
182: #define LANG_THAI 0x1e
183: #define LANG_TURKISH 0x1f
184: #define LANG_URDU 0x20
185:
186: /*
187: * Sublanguage IDs.
188: *
189: * The name immediately following SUBLANG_ dictates which primary
190: * language ID that sublanguage ID can be combined with to form a
191: * valid language ID.
192: */
193: #define SUBLANG_DEFAULT 0x01 /* language/process default */
194: #define SUBLANG_NEUTRAL 0x00 /* language neutral */
195:
196: #define SUBLANG_CHINESE_SIMPLIFIED 0x02 /* Chinese (Simplified) */
197: #define SUBLANG_CHINESE_TRADITIONAL 0x01 /* Chinese (Traditional) */
198: #define SUBLANG_DUTCH 0x01 /* Dutch */
199: #define SUBLANG_DUTCH_BELGIAN 0x02 /* Dutch (Belgian) */
200: #define SUBLANG_ENGLISH_US 0x01 /* English (USA) */
201: #define SUBLANG_ENGLISH_UK 0x02 /* English (UK) */
202: #define SUBLANG_ENGLISH_AUS 0x03 /* English (Australian) */
203: #define SUBLANG_ENGLISH_CAN 0x04 /* English (Canadian) */
204: #define SUBLANG_FRENCH 0x01 /* French */
205: #define SUBLANG_FRENCH_BELGIAN 0x02 /* French (Belgian) */
206: #define SUBLANG_FRENCH_CANADIAN 0x03 /* French (Canadian) */
207: #define SUBLANG_FRENCH_SWISS 0x04 /* French (Swiss) */
208: #define SUBLANG_GERMAN 0x01 /* German */
209: #define SUBLANG_GERMAN_SWISS 0x02 /* German (Swiss) */
210: #define SUBLANG_ITALIAN 0x01 /* Italian */
211: #define SUBLANG_ITALIAN_SWISS 0x02 /* Italian (Swiss) */
212: #define SUBLANG_NORWEGIAN_BOKMAL 0x01 /* Norwegian (Bokmal) */
213: #define SUBLANG_NORWEGIAN_NYNORSK 0x02 /* Norwegian (Nynorsk) */
214: #define SUBLANG_PORTUGUESE 0x02 /* Portuguese */
215: #define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 /* Portuguese (Brazilian) */
216: #define SUBLANG_SERBO_CROATIAN_CYRILLIC 0x02 /* Serbo-Croatian (Cyrillic) */
217: #define SUBLANG_SERBO_CROATIAN_LATIN 0x01 /* Croato-Serbian (Latin) */
218: #define SUBLANG_SPANISH 0x01 /* Spanish */
219: #define SUBLANG_SPANISH_MEXICAN 0x02 /* Spanish (Mexican) */
220: #define SUBLANG_SPANISH_MODERN 0x03 /* Spanish (Modern) */
221:
222:
223:
224: /***************************************************************************\
225: * Typedefs
226: *
227: * Define all types for the NLS component here.
228: \***************************************************************************/
229:
230: /*
231: * Handles.
232: */
233: typedef HANDLE HLOCALE; /* locale handle */
234: typedef HANDLE HLCID; /* lcid handle */
235:
236:
237: /*
238: * Locale ID.
239: */
240: typedef struct _lcid {
241: WORD wLanguage; /* language id */
242: UINT Country; /* country id */
243: UINT CodePage; /* codepage id */
244: } LCID, *LPLCID;
245:
246:
247: /*
248: * Locale Strings.
249: */
250: typedef struct _lcstrings {
251: CHAR szLanguage[MAX_LANG_LEN]; /* language name */
252: CHAR szCountry[MAX_CTRY_LEN]; /* country name */
253: CHAR szCodePage[MAX_CP_LEN]; /* codepage name */
254: } LCSTRINGS, *LPLCSTRINGS;
255:
256:
257:
258: /***************************************************************************\
259: * Macros
260: *
261: * Define all macros for the NLS component here.
262: \***************************************************************************/
263:
264: /*
265: * A language ID is a 16 bit value which is the combination of a
266: * primary language ID and a secondary language ID. The bits are
267: * allocated as follows:
268: *
269: * +-----------------------+-------------------------+
270: * | Sublanguage ID | Primary Language ID |
271: * +-----------------------+-------------------------+
272: * 15 10 9 0 bit
273: */
274:
275: /*
276: * Language ID creation/extraction macros:
277: *
278: * MAKELANGID - construct language id from primary language id and
279: * sublanguage id.
280: * PRIMARYLANGID - extract primary language id from a language id.
281: * SUBLANGID - extract sublanguage id from a language id.
282: */
283: #define MAKELANGID(p, s) ((((USHORT)(s)) << 10) | (USHORT)(p))
284: #define PRIMARYLANGID(lgid) ((USHORT)(lgid) & 0x1ff)
285: #define SUBLANGID(lgid) ((USHORT)(lgid) >> 10)
286:
287:
288:
289: /***************************************************************************\
290: * Function Prototypes
291: *
292: * Only prototypes for the NLS APIs should go here.
293: \***************************************************************************/
294:
295: /*
296: * MBCS Translation APIs.
297: */
298: int APIENTRY MultiByteToWideChar(UINT, LPSTR, int, LPWSTR, int *, DWORD);
299: int APIENTRY WideCharToMultiByte(UINT, LPWSTR, int, LPSTR, int *, LPSTR,
300: LPBOOL, DWORD);
301: int APIENTRY MultiByteToMultiByte(UINT, UINT, LPSTR, int, UINT, LPSTR,
302: int *);
303: int APIENTRY GetDBCSLeadBytes(UINT, UINT *, LPBYTE, int *);
304:
305:
306: /*
307: * High Level APIs.
308: */
309: HLOCALE APIENTRY OpenLocale(LPLCID);
310: BOOL APIENTRY CloseLocale(HLOCALE);
311: BOOL APIENTRY GetCharType(HLOCALE, DWORD, WCHAR, LPWORD);
312: int APIENTRY CompareString(HLOCALE, DWORD, LPWSTR, int, LPWSTR, int);
313: int APIENTRY MapString(HLOCALE, DWORD, LPWSTR, int, LPWSTR, int *);
314: int APIENTRY QueryMap(HLOCALE, DWORD, DWORD, WCHAR, WCHAR, LPVOID, LPDWORD);
315:
316:
317: /*
318: * Low Level APIs.
319: */
320: HLCID APIENTRY BeginEnumLocale(DWORD, LPLCID);
321: BOOL APIENTRY GetNextLocale(HLCID, LPLCID);
322: BOOL APIENTRY EndEnumLocale(HLCID);
323: int APIENTRY GetLocaleInfo(LPLCID, DWORD, LPVOID, LPDWORD);
324: BOOL APIENTRY GetQualifiedLocale(DWORD, LPVOID, LPLCID, LPLCSTRINGS);
325:
326:
327:
328: #endif // NONLS
329:
330: #endif // _WINNLS_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.