1 |
|
---|
2 | /*
|
---|
3 | *@@sourcefile
|
---|
4 | *
|
---|
5 | *
|
---|
6 | *@@added V0.9.9 (2001-02-10) [umoeller]
|
---|
7 | */
|
---|
8 |
|
---|
9 | #if __cplusplus
|
---|
10 | extern "C" {
|
---|
11 | #endif
|
---|
12 |
|
---|
13 | #ifndef ENC_BASE_HEADER_INCLUDED
|
---|
14 | #define ENC_BASE_HEADER_INCLUDED
|
---|
15 |
|
---|
16 | /*
|
---|
17 | *@@ XWPENCODINGMAP:
|
---|
18 | * entry in a codepage-to-Unicode conversion table.
|
---|
19 | */
|
---|
20 |
|
---|
21 | typedef struct _XWPENCODINGMAP
|
---|
22 | {
|
---|
23 | unsigned short usCP;
|
---|
24 | unsigned short usUni;
|
---|
25 | } XWPENCODINGMAP, *PXWPENCODINGMAP;
|
---|
26 |
|
---|
27 | /*
|
---|
28 | *@@ ENCID:
|
---|
29 | * enum identifying each encoding set which is
|
---|
30 | * generally supported. Each ID corresponds to
|
---|
31 | * one header file in include\encodings\.
|
---|
32 | */
|
---|
33 |
|
---|
34 | typedef enum _ENCID
|
---|
35 | {
|
---|
36 | UNSUPPORTED,
|
---|
37 | enc_cp437,
|
---|
38 | enc_cp737,
|
---|
39 | enc_cp775,
|
---|
40 | enc_cp850,
|
---|
41 | enc_cp852,
|
---|
42 | enc_cp855,
|
---|
43 | enc_cp857,
|
---|
44 | enc_cp860,
|
---|
45 | enc_cp861,
|
---|
46 | enc_cp862,
|
---|
47 | enc_cp863,
|
---|
48 | enc_cp864,
|
---|
49 | enc_cp865,
|
---|
50 | enc_cp866,
|
---|
51 | enc_cp869,
|
---|
52 | enc_cp874,
|
---|
53 | enc_cp932,
|
---|
54 | enc_cp936,
|
---|
55 | enc_cp949,
|
---|
56 | enc_cp950,
|
---|
57 | enc_cp1004, // added V0.9.18 (2002-03-08) [umoeller]
|
---|
58 | enc_cp1250,
|
---|
59 | enc_cp1251,
|
---|
60 | enc_cp1252,
|
---|
61 | enc_cp1253,
|
---|
62 | enc_cp1254,
|
---|
63 | enc_cp1255,
|
---|
64 | enc_cp1256,
|
---|
65 | enc_cp1257,
|
---|
66 | enc_cp1258,
|
---|
67 | enc_iso8859_1,
|
---|
68 | enc_iso8859_2,
|
---|
69 | enc_iso8859_3,
|
---|
70 | enc_iso8859_4,
|
---|
71 | enc_iso8859_5,
|
---|
72 | enc_iso8859_6,
|
---|
73 | enc_iso8859_7,
|
---|
74 | enc_iso8859_8,
|
---|
75 | enc_iso8859_9,
|
---|
76 | enc_iso8859_10,
|
---|
77 | enc_iso8859_13,
|
---|
78 | enc_iso8859_14,
|
---|
79 | enc_iso8859_15
|
---|
80 | } ENCID;
|
---|
81 |
|
---|
82 | /*
|
---|
83 | *@@ CONVERSION:
|
---|
84 | *
|
---|
85 | *@@added V0.9.18 (2002-03-08) [umoeller]
|
---|
86 | */
|
---|
87 |
|
---|
88 | typedef struct _CONVERSION
|
---|
89 | {
|
---|
90 | ENCID EncodingID;
|
---|
91 |
|
---|
92 | // to get Unicode for character 123 in the specific
|
---|
93 | // encoding, do pTable->ausEntriesUniFromCP[123].
|
---|
94 | // If you get 0xFFFF, the encoding is undefined.
|
---|
95 | unsigned short usHighestCP;
|
---|
96 | unsigned short *ausEntriesUniFromCP; // usHighestCP + 1 entries
|
---|
97 |
|
---|
98 | // to get codepage for unicode character 123,
|
---|
99 | // do pTable->ausEntriesCPFromUni[123].
|
---|
100 | // If you get 0xFFFF, the encoding is undefined.
|
---|
101 | unsigned short usHighestUni;
|
---|
102 | unsigned short *ausEntriesCPFromUni; // usHighestUni + 1 entries
|
---|
103 |
|
---|
104 | } CONVERSION, *PCONVERSION;
|
---|
105 |
|
---|
106 | typedef enum _ENCBYTECOUNT
|
---|
107 | {
|
---|
108 | SINGLE,
|
---|
109 | DOUBLE,
|
---|
110 | EBCDIC,
|
---|
111 | MULTI_UNICODE,
|
---|
112 | UNKNOWN
|
---|
113 | } ENCBYTECOUNT;
|
---|
114 |
|
---|
115 | ENCID encFindIdForCodepage(unsigned short usCodepage,
|
---|
116 | const char **ppcszDescription,
|
---|
117 | ENCBYTECOUNT *pByteCount);
|
---|
118 |
|
---|
119 | PCONVERSION encCreateCodec(ENCID id);
|
---|
120 |
|
---|
121 | void encFreeCodec(PCONVERSION *ppTable);
|
---|
122 |
|
---|
123 | unsigned long encChar2Uni(PCONVERSION pTable,
|
---|
124 | unsigned short c);
|
---|
125 |
|
---|
126 | unsigned short encUni2Char(PCONVERSION pTable,
|
---|
127 | unsigned long ulUni);
|
---|
128 |
|
---|
129 | unsigned long encDecodeUTF8(const char **ppch);
|
---|
130 |
|
---|
131 | #endif
|
---|
132 |
|
---|
133 | #if __cplusplus
|
---|
134 | }
|
---|
135 | #endif
|
---|
136 |
|
---|