1 #ifndef CHARSET_H 2 #define CHARSET_H 3 4 #ifndef FOR_LT 5 #include "system.h" 6 #endif 7 8 STD_API int init_charset(void); 9 STD_API void deinit_charset(void); 10 11 /* 12 * We'd like char8 to be unsigned char, but it causes too many problems. 13 * For example: 14 * char8 name; ...; return name ? name : "<none>" 15 * produces a warning with many compilers if char8 is unsigned. 16 */ 17 18 typedef char char8; 19 typedef unsigned short char16; 20 typedef unsigned int char32; 21 22 #if CHAR_SIZE == 8 23 typedef char8 Char; 24 #elif CHAR_SIZE == 16 25 typedef char16 Char; 26 #else 27 #error CHAR_SIZE must be 8 or 16 28 #endif 29 30 /* Character encodings */ 31 32 enum character_encoding { 33 CE_unknown, CE_unspecified_ascii_superset, 34 CE_UTF_8, CE_ISO_646, 35 CE_ISO_8859_1, 36 37 CE_ISO_8859_2, CE_ISO_8859_3, CE_ISO_8859_4, CE_ISO_8859_5, 38 CE_ISO_8859_6, CE_ISO_8859_7, CE_ISO_8859_8, CE_ISO_8859_9, 39 CE_ISO_8859_10, CE_ISO_8859_11, CE_ISO_8859_12_XXX, CE_ISO_8859_13, 40 CE_ISO_8859_14, CE_ISO_8859_15, 41 42 CE_UTF_16B, CE_UTF_16L, CE_ISO_10646_UCS_2B, CE_ISO_10646_UCS_2L, 43 CE_enum_count 44 }; 45 46 typedef enum character_encoding CharacterEncoding; 47 48 extern STD_API CharacterEncoding InternalCharacterEncoding; 49 50 extern STD_API const char8 *CharacterEncodingName[CE_enum_count]; 51 extern STD_API const char8 *CharacterEncodingNameAndByteOrder[CE_enum_count]; 52 53 struct character_encoding_alias {const char8 *name; CharacterEncoding enc;}; 54 extern STD_API struct character_encoding_alias CharacterEncodingAlias[]; 55 extern STD_API const int CE_alias_count; 56 57 STD_API int EncodingIsAsciiSuperset(CharacterEncoding enc); 58 STD_API int EncodingsCompatible(CharacterEncoding enc1, CharacterEncoding enc2, 59 CharacterEncoding *enc3); 60 STD_API CharacterEncoding FindEncoding(char8 *name); 61 62 /* Translation tables for Latin-N - do this right sometime! XXX */ 63 64 extern STD_API int iso_to_unicode[14][256]; 65 extern STD_API int iso_max_val[14]; 66 extern STD_API char8 *unicode_to_iso[14]; 67 68 #endif /* CHARSET_H */ 69