-#ifndef CHAR_IS_UCS4
-#include "mule-charset.h"
-#else
-
-/************************************************************************/
-/* Definition of leading bytes */
-/************************************************************************/
-
-typedef int Charset_ID;
-
-#define MIN_LEADING_BYTE 0x80
-
-#define LEADING_BYTE_UCS_BMP 0x80
-#define LEADING_BYTE_CONTROL_1 0x81 /* represent normal 80-9F */
-
-
-#define CHARSET_ID_OFFSET_94 0x60
-
-#define MIN_CHARSET_ID_PRIVATE_94 (CHARSET_ID_OFFSET_94 + '0')
-#define MAX_CHARSET_ID_PRIVATE_94 (CHARSET_ID_OFFSET_94 + '?')
-
-/* ISO 646 IRV */
-#define LEADING_BYTE_ASCII (CHARSET_ID_OFFSET_94 + 'B')
-
-/* Right half of JIS X0201-1976 */
-#define LEADING_BYTE_KATAKANA_JISX0201 (CHARSET_ID_OFFSET_94 + 'I')
-
-/* Left half of JIS X0201-1976 */
-#define LEADING_BYTE_LATIN_JISX0201 (CHARSET_ID_OFFSET_94 + 'J')
-
-
-#define CHARSET_ID_OFFSET_96 0x70
-
-/* Right half of ISO 8859-1 */
-#define LEADING_BYTE_LATIN_ISO8859_1 (CHARSET_ID_OFFSET_96 + 'A')
-
-/* Right half of ISO 8859-2 */
-#define LEADING_BYTE_LATIN_ISO8859_2 (CHARSET_ID_OFFSET_96 + 'B')
-
-/* Right half of ISO 8859-3 */
-#define LEADING_BYTE_LATIN_ISO8859_3 (CHARSET_ID_OFFSET_96 + 'C')
-
-/* Right half of ISO 8859-4 */
-#define LEADING_BYTE_LATIN_ISO8859_4 (CHARSET_ID_OFFSET_96 + 'D')
-
-/* Right half of ISO 8859-7 */
-#define LEADING_BYTE_GREEK_ISO8859_7 (CHARSET_ID_OFFSET_96 + 'F')
-
-/* Right half of ISO 8859-6 */
-#define LEADING_BYTE_ARABIC_ISO8859_6 (CHARSET_ID_OFFSET_96 + 'G')
-
-/* Right half of ISO 8859-8 */
-#define LEADING_BYTE_HEBREW_ISO8859_8 (CHARSET_ID_OFFSET_96 + 'H')
-
-/* Right half of ISO 8859-5 */
-#define LEADING_BYTE_CYRILLIC_ISO8859_5 (CHARSET_ID_OFFSET_96 + 'L')
-
-/* Right half of ISO 8859-9 */
-#define LEADING_BYTE_LATIN_ISO8859_9 (CHARSET_ID_OFFSET_96 + 'M')
-
-/* TIS620-2533 */
-#define LEADING_BYTE_THAI_TIS620 (CHARSET_ID_OFFSET_96 + 'T')
-
-
-#define MIN_LEADING_BYTE_PRIVATE_1 0xD0
-#define MAX_LEADING_BYTE_PRIVATE_1 0xDF
-
-
-#define CHARSET_ID_OFFSET_94x94 0xB0
-
-/* Big5 Level 1 */
-#define LEADING_BYTE_CHINESE_BIG5_1 ('0' + CHARSET_ID_OFFSET_94x94)
-
-/* Big5 Level 2 */
-#define LEADING_BYTE_CHINESE_BIG5_2 ('1' + CHARSET_ID_OFFSET_94x94)
-
-#define MIN_LEADING_BYTE_PRIVATE_2 ('0' + CHARSET_ID_OFFSET_94x94)
-#define MAX_LEADING_BYTE_PRIVATE_2 ('?' + CHARSET_ID_OFFSET_94x94)
-
-/* Japanese JIS X0208-1978 */
-#define LEADING_BYTE_JAPANESE_JISX0208_1978 \
- ('@' + CHARSET_ID_OFFSET_94x94)
-
-/* Chinese Hanzi GB2312-1980 */
-#define LEADING_BYTE_CHINESE_GB2312 ('A' + CHARSET_ID_OFFSET_94x94)
-
-/* Japanese JIS X0208-1983 */
-#define LEADING_BYTE_JAPANESE_JISX0208 ('B' + CHARSET_ID_OFFSET_94x94)
-
-/* Hangul KS C5601-1987 */
-#define LEADING_BYTE_KOREAN_KSC5601 ('C' + CHARSET_ID_OFFSET_94x94)
-
-/* Japanese JIS X0212-1990 */
-#define LEADING_BYTE_JAPANESE_JISX0212 ('D' + CHARSET_ID_OFFSET_94x94)
-
-/* CCITT Extended GB */
-#define LEADING_BYTE_CHINESE_CCITT_GB ('E' + CHARSET_ID_OFFSET_94x94)
-
-/* Chinese CNS11643 Set 1 */
-#define LEADING_BYTE_CHINESE_CNS11643_1 ('G' + CHARSET_ID_OFFSET_94x94)
-
-/* Chinese CNS11643 Set 2 */
-#define LEADING_BYTE_CHINESE_CNS11643_2 ('H' + CHARSET_ID_OFFSET_94x94)
-
-/* Chinese CNS11643 Set 3 */
-#define LEADING_BYTE_CHINESE_CNS11643_3 ('I' + CHARSET_ID_OFFSET_94x94)
-
-/* Chinese CNS11643 Set 4 */
-#define LEADING_BYTE_CHINESE_CNS11643_4 ('J' + CHARSET_ID_OFFSET_94x94)
-
-/* Chinese CNS11643 Set 5 */
-#define LEADING_BYTE_CHINESE_CNS11643_5 ('K' + CHARSET_ID_OFFSET_94x94)
-
-/* Chinese CNS11643 Set 6 */
-#define LEADING_BYTE_CHINESE_CNS11643_6 ('L' + CHARSET_ID_OFFSET_94x94)
-
-/* Chinese CNS11643 Set 7 */
-#define LEADING_BYTE_CHINESE_CNS11643_7 ('M' + CHARSET_ID_OFFSET_94x94)
-
-/* DPRK Hangul KPS 9566-1997 */
-#define LEADING_BYTE_KOREAN_KPS9566 ('N' + CHARSET_ID_OFFSET_94x94)
-
-#define MIN_LEADING_BYTE_OFFICIAL_2 LEADING_BYTE_JAPANESE_JISX0208_1978
-#define MAX_LEADING_BYTE_OFFICIAL_2 LEADING_BYTE_KOREAN_KPS9566
-
-#define NUM_LEADING_BYTES 256
-
-\f
-/************************************************************************/
-/* Operations on individual bytes */
-/* of any format */
-/************************************************************************/
-
-/* Argument `c' should be (unsigned int) or (unsigned char). */
-/* Note that SP and DEL are not included. */
-
-#define BYTE_ASCII_P(c) ((c) < 0x80)
-#define BYTE_C0_P(c) ((c) < 0x20)
-/* Do some forced casting just to make *sure* things are gotten right. */
-#define BYTE_C1_P(c) ((unsigned int) ((unsigned int) (c) - 0x80) < 0x20)
-
-\f
-/************************************************************************/
-/* Information about a particular character set */
-/************************************************************************/
-
-struct Lisp_Charset
-{
- struct lcrecord_header header;
-
- int id;
- Lisp_Object name;
- Lisp_Object doc_string, registry, short_name, long_name;
-
- Lisp_Object reverse_direction_charset;
-
- Lisp_Object ccl_program;
-
- /* Final byte of this character set in ISO2022 designating escape sequence */
- Bufbyte final;
-
- /* Number of bytes (1 - 4) required in the internal representation
- for characters in this character set. This is *not* the
- same as the dimension of the character set). */
- unsigned int rep_bytes;
-
- /* Number of columns a character in this charset takes up, on TTY
- devices. Not used for X devices. */
- unsigned int columns;
-
- /* Direction of this character set */
- unsigned int direction;
-
- /* Type of this character set (94, 96, 94x94, 96x96) */
- unsigned int type;