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