Sync with r21-2-19-utf-2000-0_6-0. r21-4-10-kanon-0_6-0
authortomo <tomo>
Sun, 15 Dec 2002 10:55:24 +0000 (10:55 +0000)
committertomo <tomo>
Sun, 15 Dec 2002 10:55:24 +0000 (10:55 +0000)
17 files changed:
src/ChangeLog
src/buffer.h
src/char-1byte.h [new file with mode: 0644]
src/char-lb.h [new file with mode: 0644]
src/char-ucs.h [new file with mode: 0644]
src/character.h
src/depend
src/lstream.h
src/mb-1byte.h [new file with mode: 0644]
src/mb-lb.h [new file with mode: 0644]
src/mb-multibyte.h [new file with mode: 0644]
src/mb-utf-8.h [new file with mode: 0644]
src/mule-ccl.c
src/mule-charset.c
src/mule-charset.h
src/multibyte.h [new file with mode: 0644]
src/search.c

index 599d41d..00f6353 100644 (file)
@@ -1,3 +1,213 @@
+1999-09-06  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (vars_of_mule_charset):
+       Update `utf-2000-version' to 0.6.
+
+1999-09-05  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * lstream.h:
+       - Include multibyte.h instead of character.h for `BYTE_ASCII_P'.
+       - Include character.h for `CHAR_ASCII_P'.
+
+       * mb-multibyte.h (CHAR_MULTIBYTE_P): Moved from mule-charset.h.
+
+       * mule-charset.h (CHAR_MULTIBYTE_P): Moved to mb-multibyte.h.
+       (CHAR_ASCII_P): Don't use `CHAR_MULTIBYTE_P'.
+
+       * mb-multibyte.h (BYTE_ASCII_P): Moved from char-ucs.h.
+       (BYTE_C0_P): Likewise.
+       (BYTE_C1_P): Likewise.
+       (Lstream_get_emchar_1): Likewise.
+       (Lstream_fput_emchar): Likewise.
+       (Lstream_funget_emchar): Likewise.
+       (copy_internal_to_external): Likewise.
+       (copy_external_to_internal): Likewise.
+
+       * char-ucs.h (BYTE_ASCII_P): Moved to mb-multibyte.h.
+       (BYTE_C0_P): Likewise.
+       (BYTE_C1_P): Likewise.
+       (Lstream_get_emchar_1): Likewise.
+       (Lstream_fput_emchar): Likewise.
+       (Lstream_funget_emchar): Likewise.
+       (copy_internal_to_external): Likewise.
+       (copy_external_to_internal): Likewise.
+
+       * mb-1byte.h (BYTE_ASCII_P): Moved from buffer.h.
+       (REP_BYTES_BY_FIRST_BYTE): Likewise.
+
+       * buffer.h (REP_BYTES_BY_FIRST_BYTE): Moved to mb-1byte.h.
+       (BYTE_ASCII_P): Moved to mb-1byte.h.
+
+1999-09-04  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mb-utf-8.h, mb-lb.h: Include mb-multibyte.h.
+
+       * multibyte.h: Include mb-1byte.h in unibyte-XEmacs.
+       (MAX_EMCHAR_LEN): Moved to mb-1byte.h.
+       (VALID_CHARPTR_P): Moved to mb-*byte.h.
+       (VALIDATE_CHARPTR_BACKWARD): Likewise.
+       (VALIDATE_CHARPTR_FORWARD): Likewise.
+       (simple_charptr_emchar): Moved to mb-multibyte.h.
+       (simple_set_charptr_emchar): Likewise.
+       (simple_charptr_copy_char): Likewise.
+       (non_ascii_charptr_emchar): Likewise.
+       (non_ascii_set_charptr_emchar): Likewise.
+       (non_ascii_charptr_copy_char): Likewise.
+       (charptr_emchar): Moved to mb-*byte.h.
+       (set_charptr_emchar): Likewise.
+       (charptr_copy_char): Likewise.
+
+       * mb-1byte.h, mb-multibyte.h: New files.
+
+1999-09-03  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mb-utf-8.h (MULTIBYTE): New macro.
+       (MAX_EMCHAR_LEN): Moved from buffer.h.
+       (REP_BYTES_BY_FIRST_BYTE): Moved from char-ucs.h.
+
+       * char-ucs.h (REP_BYTES_BY_FIRST_BYTE): Moved to mb-utf-8.h.
+
+       * mb-lb.h, multibyte.h: New files.
+
+       * char-1byte.h (Charset_ID): Moved from buffer.h.
+       (MIN_LEADING_BYTE): Likewise.
+       (LEADING_BYTE_ASCII): Likewise.
+       (NUM_LEADING_BYTES): Likewise.
+       (CHARSETP): Likewise.
+       (CHARSET_BY_LEADING_BYTE): Likewise.
+       (XCHARSET_LEADING_BYTE): Likewise.
+       (XCHARSET_GRAPHIC): Likewise.
+       (XCHARSET_COLUMNS): Likewise.
+       (XCHARSET_DIMENSION): Likewise.
+       (CHAR_CHARSET): Likewise.
+       (CHAR_LEADING_BYTE): Likewise.
+       (BREAKUP_CHAR): Likewise.
+       (Vcharset_ascii): Likewise.
+
+       * buffer.h: Include multibyte.h unconditionally.
+       (VALID_CHARPTR_P): Moved to multibyte.h.
+       (ASSERT_VALID_CHARPTR): Likewise.
+       (REAL_INC_CHARPTR): Likewise.
+       (REAL_INC_CHARBYTIND): Likewise.
+       (REAL_DEC_CHARPTR): Likewise.
+       (INC_CHARPTR): Likewise.
+       (INC_CHARBYTIND): Likewise.
+       (DEC_CHARPTR): Likewise.
+       (VALIDATE_CHARPTR_BACKWARD): Likewise.
+       (VALIDATE_CHARPTR_FORWARD): Likewise.
+       (charptr_n_addr): Likewise.
+       (MAX_EMCHAR_LEN): Moved to mb-*.h.
+       (simple_charptr_emchar): Moved to multibyte.h.
+       (simple_set_charptr_emchar): Likewise.
+       (simple_charptr_copy_char): Likewise.
+       (non_ascii_charptr_emchar): Likewise.
+       (non_ascii_set_charptr_emchar): Likewise.
+       (non_ascii_charptr_copy_char): Likewise.
+       (charptr_emchar): Likewise.
+       (set_charptr_emchar): Likewise.
+       (charptr_copy_char): Likewise.
+       (charptr_emchar_n): Likewise.
+       (Charset_ID): Moved to char-1byte.h.
+       (Vcharset_ascii): Likewise.
+       (CHAR_CHARSET): Likewise.
+       (CHAR_LEADING_BYTE): Likewise.
+       (LEADING_BYTE_ASCII): Likewise.
+       (NUM_LEADING_BYTES): Likewise.
+       (MIN_LEADING_BYTE): Likewise.
+       (CHARSETP): Likewise.
+       (CHARSET_BY_LEADING_BYTE): Likewise.
+       (XCHARSET_LEADING_BYTE): Likewise.
+       (XCHARSET_GRAPHIC): Likewise.
+       (XCHARSET_COLUMNS): Likewise.
+       (XCHARSET_DIMENSION): Likewise.
+       (BREAKUP_CHAR): Likewise.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * character.h: Add document about interface for characters.
+
+       * char-ucs.h (CHAR_ASCII_P): Modify name of argument.
+       (MAKE_CHAR): Delete comment about
+       `FIELD2_TO_OFFICIAL_LEADING_BYTE' and
+       `FIELD2_TO_PRIVATE_LEADING_BYTE'.
+       (BREAKUP_CHAR): Modify name of arguments.
+       (CHAR_CHARSET): Modify name of argument.
+
+       * buffer.h: Delete document about Emchar accessors.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * character.h (CHAR_INTP): Moved from buffer.h
+       (CHAR_OR_CHAR_INTP): Likewise.
+       (XCHAR_OR_CHAR_INT): Likewise.
+       (CHECK_CHAR_COERCE_INT): Likewise.
+
+       * buffer.h (CHAR_INTP): Moved to character.h
+       (CHAR_OR_CHAR_INTP): Likewise.
+       (XCHAR_OR_CHAR_INT): Likewise.
+       (CHECK_CHAR_COERCE_INT): Likewise.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * character.h:
+       - Move definitions about UCS-2000 (UCS-4) to char-ucs.h.
+       - Include char-1byte.h, char-lb.h or char-ucs.h.
+
+       * mb-utf-8.h (CHAR_ASCII_P): Moved to char-ucs.h.
+
+       * buffer.h: Include character unconditionally.
+       (valid_char_p): Moved to char-*.h.
+       (non_ascii_valid_char_p): Moved to char-lb.h.
+
+       * char-1byte.h, char-lb.h, char-ucs.h: New files.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-ccl.c (ccl_driver): Don't define `CCL_WriteMultibyteChar2'
+       in UTF-2000 because it is not ported yet and not to use
+       `FIELD2_TO_OFFICIAL_LEADING_BYTE', `MIN_LEADING_BYTE_OFFICIAL_2',
+       `FIELD1_TO_OFFICIAL_LEADING_BYTE' and
+       `FIELD1_TO_PRIVATE_LEADING_BYTE'.
+
+       * mb-utf-8.h (CHAR_MULTIBYTE_P): Moved from character.h.
+       (CHAR_ASCII_P): Moved from character.h.
+
+       * character.h (CHAR_MULTIBYTE_P): Moved to mb-utf-8.h.
+       (CHAR_ASCII_P): Likewise.
+       (CHAR_FIELD1_MASK): Deleted.
+       (CHAR_FIELD2_MASK): Deleted.
+       (CHAR_FIELD3_MASK): Deleted.
+       (MAX_CHAR_BASIC_LATIN): New macro.
+       (CHAR_FIELD1): Deleted.
+       (CHAR_FIELD2_INTERNAL): Deleted.
+       (CHAR_FIELD3_INTERNAL): Deleted.
+       (FIELD1_TO_PRIVATE_LEADING_BYTE): Deleted.
+       (FIELD1_TO_OFFICIAL_LEADING_BYTE): Deleted.
+       (FIELD2_TO_PRIVATE_LEADING_BYTE): Deleted.
+       (FIELD2_TO_OFFICIAL_LEADING_BYTE): Deleted.
+       (MIN_CHAR_FIELD1_OFFICIAL): Deleted.
+       (MAX_CHAR_FIELD1_OFFICIAL): Deleted.
+       (MIN_CHAR_FIELD2_PRIVATE): Deleted.
+       (MAX_CHAR_FIELD2_PRIVATE): Deleted.
+       (MIN_CHAR_FIELD1_PRIVATE): Deleted.
+       (MAX_CHAR_FIELD1_PRIVATE): Deleted.
+       (MULE_CHAR_PRIVATE_OFFSET): Deleted.
+       (MIN_CHAR_PRIVATE_TYPE9N): Deleted.
+       (MAX_CHAR_PRIVATE_TYPE9N): Deleted.
+       (MIN_CHAR_PRIVATE_TYPE9NX9N): Deleted.
+       (MIN_CHAR_OFFICIAL_TYPE9NX9N): Deleted.
+       (MIN_CHAR_COMPOSITION): Deleted.
+       (breakup_char_1): Use `MAX_CHAR_BASIC_LATIN' instead of
+       `CHAR_ASCII_P'; use `0x7f' instead of `CHAR_FIELD3_INTERNAL'.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * buffer.h: Include mb-utf-8.h in UTF-2000.
+
+       * character.h (BUFBYTE_FIRST_BYTE_P): Moved to mb-utf-8.h.
+
+       * mb-utf-8.h: New file.
+
 1999-09-02  MORIOKA Tomohiko  <tomo@etl.go.jp>
 
        * chartab.h (CHAR_TABLE_NON_ASCII_VALUE_UNSAFE): Use `Charset_ID'
index 0b69cd4..d4d05dd 100644 (file)
@@ -32,9 +32,8 @@ Boston, MA 02111-1307, USA.  */
 #ifndef INCLUDED_buffer_h_
 #define INCLUDED_buffer_h_
 
-#ifdef MULE
 #include "character.h"
-#endif
+#include "multibyte.h"
 
 #include "casetab.h"
 #include "chartab.h"
@@ -287,318 +286,8 @@ for (mps_bufcons = Qunbound,                                                      \
       denoted with the word "unsafe" in their name and are generally
       meant to be called only by other macros that have already
       stored the calling values in temporary variables.
-
-
-   Use the following functions/macros on contiguous strings of data.
-   If the text you're operating on is known to come from a buffer, use
-   the buffer-level functions below -- they know about the gap and may
-   be more efficient.
-
-
-  (A) For working with charptr's (pointers to internally-formatted text):
-  -----------------------------------------------------------------------
-
-   VALID_CHARPTR_P (ptr):
-       Given a charptr, does it point to the beginning of a character?
-
-   ASSERT_VALID_CHARPTR (ptr):
-       If error-checking is enabled, assert that the given charptr
-       points to the beginning of a character.  Otherwise, do nothing.
-
-   INC_CHARPTR (ptr):
-       Given a charptr (assumed to point at the beginning of a character),
-       modify that pointer so it points to the beginning of the next
-       character.
-
-   DEC_CHARPTR (ptr):
-       Given a charptr (assumed to point at the beginning of a
-       character or at the very end of the text), modify that pointer
-       so it points to the beginning of the previous character.
-
-   VALIDATE_CHARPTR_BACKWARD (ptr):
-       Make sure that PTR is pointing to the beginning of a character.
-       If not, back up until this is the case.   Note that there are not
-       too many places where it is legitimate to do this sort of thing.
-       It's an error if you're passed an "invalid" char * pointer.
-       NOTE: PTR *must* be pointing to a valid part of the string (i.e.
-       not the very end, unless the string is zero-terminated or
-       something) in order for this function to not cause crashes.
-
-   VALIDATE_CHARPTR_FORWARD (ptr):
-       Make sure that PTR is pointing to the beginning of a character.
-       If not, move forward until this is the case.  Note that there
-       are not too many places where it is legitimate to do this sort
-       of thing.  It's an error if you're passed an "invalid" char *
-       pointer.
-
-
-   (B) For working with the length (in bytes and characters) of a
-       section of internally-formatted text:
-   --------------------------------------------------------------
-
-   bytecount_to_charcount (ptr, nbi):
-       Given a pointer to a text string and a length in bytes,
-       return the equivalent length in characters.
-
-   charcount_to_bytecount (ptr, nch):
-       Given a pointer to a text string and a length in characters,
-       return the equivalent length in bytes.
-
-   charptr_n_addr (ptr, n):
-       Return a pointer to the beginning of the character offset N
-       (in characters) from PTR.
-
-
-   (C) For retrieving or changing the character pointed to by a charptr:
-   ---------------------------------------------------------------------
-
-   charptr_emchar (ptr):
-       Retrieve the character pointed to by PTR as an Emchar.
-
-   charptr_emchar_n (ptr, n):
-       Retrieve the character at offset N (in characters) from PTR,
-       as an Emchar.
-
-   set_charptr_emchar (ptr, ch):
-       Store the character CH (an Emchar) as internally-formatted
-       text starting at PTR.  Return the number of bytes stored.
-
-   charptr_copy_char (ptr, ptr2):
-       Retrieve the character pointed to by PTR and store it as
-       internally-formatted text in PTR2.
-
-
-   (D) For working with Emchars:
-   -----------------------------
-
-   [Note that there are other functions/macros for working with Emchars
-    in mule-charset.h, for retrieving the charset of an Emchar
-    and such.  These are only valid when MULE is defined.]
-
-   valid_char_p (ch):
-       Return whether the given Emchar is valid.
-
-   CHARP (ch):
-       Return whether the given Lisp_Object is a character.
-
-   CHECK_CHAR_COERCE_INT (ch):
-       Signal an error if CH is not a valid character or integer Lisp_Object.
-       If CH is an integer Lisp_Object, convert it to a character Lisp_Object,
-       but merely by repackaging, without performing tests for char validity.
-
-   MAX_EMCHAR_LEN:
-       Maximum number of buffer bytes per Emacs character.
-
 */
 
-
-/* ---------------------------------------------------------------------- */
-/* (A) For working with charptr's (pointers to internally-formatted text) */
-/* ---------------------------------------------------------------------- */
-
-#ifdef MULE
-# define VALID_CHARPTR_P(ptr) BUFBYTE_FIRST_BYTE_P (* (unsigned char *) ptr)
-#else
-# define VALID_CHARPTR_P(ptr) 1
-#endif
-
-#ifdef ERROR_CHECK_BUFPOS
-# define ASSERT_VALID_CHARPTR(ptr) assert (VALID_CHARPTR_P (ptr))
-#else
-# define ASSERT_VALID_CHARPTR(ptr)
-#endif
-
-/* Note that INC_CHARPTR() and DEC_CHARPTR() have to be written in
-   completely separate ways.  INC_CHARPTR() cannot use the DEC_CHARPTR()
-   trick of looking for a valid first byte because it might run off
-   the end of the string.  DEC_CHARPTR() can't use the INC_CHARPTR()
-   method because it doesn't have easy access to the first byte of
-   the character it's moving over. */
-
-#define REAL_INC_CHARPTR(ptr) \
-  ((void) ((ptr) += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr))))
-
-#define REAL_INC_CHARBYTIND(ptr, pos) \
-  (pos += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr)))
-
-#define REAL_DEC_CHARPTR(ptr) do {     \
-  (ptr)--;                             \
-} while (!VALID_CHARPTR_P (ptr))
-
-#ifdef ERROR_CHECK_BUFPOS
-#define INC_CHARPTR(ptr) do {          \
-  ASSERT_VALID_CHARPTR (ptr);          \
-  REAL_INC_CHARPTR (ptr);              \
-} while (0)
-
-#define INC_CHARBYTIND(ptr, pos) do {          \
-  ASSERT_VALID_CHARPTR (ptr);                  \
-  REAL_INC_CHARBYTIND (ptr, pos);              \
-} while (0)
-
-#define DEC_CHARPTR(ptr) do {                  \
-  const Bufbyte *dc_ptr1 = (ptr);              \
-  const Bufbyte *dc_ptr2 = dc_ptr1;            \
-  REAL_DEC_CHARPTR (dc_ptr2);                  \
-  assert (dc_ptr1 - dc_ptr2 ==                 \
-         REP_BYTES_BY_FIRST_BYTE (*dc_ptr2));  \
-  (ptr) = (Bufbyte *) dc_ptr2;                 \
-} while (0)
-
-#else /* ! ERROR_CHECK_BUFPOS */
-#define INC_CHARBYTIND(ptr, pos) REAL_INC_CHARBYTIND (ptr, pos)
-#define INC_CHARPTR(ptr) REAL_INC_CHARPTR (ptr)
-#define DEC_CHARPTR(ptr) REAL_DEC_CHARPTR (ptr)
-#endif /* ! ERROR_CHECK_BUFPOS */
-
-#ifdef MULE
-
-#define VALIDATE_CHARPTR_BACKWARD(ptr) do {    \
-  while (!VALID_CHARPTR_P (ptr)) ptr--;                \
-} while (0)
-
-/* This needs to be trickier to avoid the possibility of running off
-   the end of the string. */
-
-#define VALIDATE_CHARPTR_FORWARD(ptr) do {     \
-  Bufbyte *vcf_ptr = (ptr);                    \
-  VALIDATE_CHARPTR_BACKWARD (vcf_ptr);         \
-  if (vcf_ptr != (ptr))                                \
-    {                                          \
-      (ptr) = vcf_ptr;                         \
-      INC_CHARPTR (ptr);                       \
-    }                                          \
-} while (0)
-
-#else /* not MULE */
-#define VALIDATE_CHARPTR_BACKWARD(ptr)
-#define VALIDATE_CHARPTR_FORWARD(ptr)
-#endif /* not MULE */
-
-/* -------------------------------------------------------------- */
-/* (B) For working with the length (in bytes and characters) of a */
-/*     section of internally-formatted text                      */
-/* -------------------------------------------------------------- */
-
-INLINE_HEADER const Bufbyte *
-charptr_n_addr (const Bufbyte *ptr, Charcount offset);
-INLINE_HEADER const Bufbyte *
-charptr_n_addr (const Bufbyte *ptr, Charcount offset)
-{
-  return ptr + charcount_to_bytecount (ptr, offset);
-}
-
-/* -------------------------------------------------------------------- */
-/* (C) For retrieving or changing the character pointed to by a charptr */
-/* -------------------------------------------------------------------- */
-
-#define simple_charptr_emchar(ptr)             ((Emchar) (ptr)[0])
-#define simple_set_charptr_emchar(ptr, x)      ((ptr)[0] = (Bufbyte) (x), 1)
-#define simple_charptr_copy_char(ptr, ptr2)    ((ptr2)[0] = *(ptr), 1)
-
-#ifdef MULE
-
-Emchar non_ascii_charptr_emchar (const Bufbyte *ptr);
-Bytecount non_ascii_set_charptr_emchar (Bufbyte *ptr, Emchar c);
-Bytecount non_ascii_charptr_copy_char (const Bufbyte *src, Bufbyte *dst);
-
-INLINE_HEADER Emchar charptr_emchar (const Bufbyte *ptr);
-INLINE_HEADER Emchar
-charptr_emchar (const Bufbyte *ptr)
-{
-  return BYTE_ASCII_P (*ptr) ?
-    simple_charptr_emchar (ptr) :
-    non_ascii_charptr_emchar (ptr);
-}
-
-INLINE_HEADER Bytecount set_charptr_emchar (Bufbyte *ptr, Emchar x);
-INLINE_HEADER Bytecount
-set_charptr_emchar (Bufbyte *ptr, Emchar x)
-{
-  return !CHAR_MULTIBYTE_P (x) ?
-    simple_set_charptr_emchar (ptr, x) :
-    non_ascii_set_charptr_emchar (ptr, x);
-}
-
-/* Copy the character pointed to by SRC into DST.
-   Return the number of bytes copied.  */
-INLINE_HEADER Bytecount
-charptr_copy_char (const Bufbyte *src, Bufbyte *dst);
-INLINE_HEADER Bytecount
-charptr_copy_char (const Bufbyte *src, Bufbyte *dst)
-{
-  return BYTE_ASCII_P (*src) ?
-    simple_charptr_copy_char (src, dst) :
-    non_ascii_charptr_copy_char (src, dst);
-}
-
-#else /* not MULE */
-
-# define charptr_emchar(ptr)           simple_charptr_emchar (ptr)
-# define set_charptr_emchar(ptr, x)    simple_set_charptr_emchar (ptr, x)
-# define charptr_copy_char(ptr, ptr2)  simple_charptr_copy_char (ptr, ptr2)
-
-#endif /* not MULE */
-
-#define charptr_emchar_n(ptr, offset) \
-  charptr_emchar (charptr_n_addr (ptr, offset))
-
-
-/* ---------------------------- */
-/* (D) For working with Emchars */
-/* ---------------------------- */
-
-#ifdef MULE
-
-#ifdef UTF2000
-#define valid_char_p(ch) 1
-#else
-int non_ascii_valid_char_p (Emchar ch);
-
-INLINE_HEADER int valid_char_p (Emchar ch);
-INLINE_HEADER int
-valid_char_p (Emchar ch)
-{
-  return ((unsigned int) (ch) <= 0xff) || non_ascii_valid_char_p (ch);
-}
-#endif
-
-#else /* not MULE */
-
-#define valid_char_p(ch) ((unsigned int) (ch) <= 0xff)
-
-#endif /* not MULE */
-
-#define CHAR_INTP(x) (INTP (x) && valid_char_p (XINT (x)))
-
-#define CHAR_OR_CHAR_INTP(x) (CHARP (x) || CHAR_INTP (x))
-
-INLINE_HEADER Emchar XCHAR_OR_CHAR_INT (Lisp_Object obj);
-INLINE_HEADER Emchar
-XCHAR_OR_CHAR_INT (Lisp_Object obj)
-{
-  return CHARP (obj) ? XCHAR (obj) : XINT (obj);
-}
-
-#define CHECK_CHAR_COERCE_INT(x) do {          \
-  if (CHARP (x))                               \
-     ;                                         \
-  else if (CHAR_INTP (x))                      \
-    x = make_char (XINT (x));                  \
-  else                                         \
-    x = wrong_type_argument (Qcharacterp, x);  \
-} while (0)
-
-#ifdef UTF2000
-# define MAX_EMCHAR_LEN 6
-#else
-#ifdef MULE
-# define MAX_EMCHAR_LEN 4
-#else
-# define MAX_EMCHAR_LEN 1
-#endif
-#endif
-
 \f
 /*----------------------------------------------------------------------*/
 /*         Accessor macros for important positions in a buffer         */
@@ -1357,42 +1046,6 @@ typedef union { char c; void *p; } *dfc_aliasing_voidpp;
 \f
 /************************************************************************/
 /*                                                                      */
-/*                          fake charset functions                      */
-/*                                                                      */
-/************************************************************************/
-
-/* used when MULE is not defined, so that Charset-type stuff can still
-   be done */
-
-#ifndef MULE
-
-typedef int Charset_ID;
-
-#define Vcharset_ascii Qnil
-
-#define CHAR_CHARSET(ch) Vcharset_ascii
-#define CHAR_LEADING_BYTE(ch) LEADING_BYTE_ASCII
-#define LEADING_BYTE_ASCII 0x80
-#define NUM_LEADING_BYTES 1
-#define MIN_LEADING_BYTE 0x80
-#define CHARSETP(cs) 1
-#define CHARSET_BY_LEADING_BYTE(lb) Vcharset_ascii
-#define XCHARSET_LEADING_BYTE(cs) LEADING_BYTE_ASCII
-#define XCHARSET_GRAPHIC(cs) -1
-#define XCHARSET_COLUMNS(cs) 1
-#define XCHARSET_DIMENSION(cs) 1
-#define REP_BYTES_BY_FIRST_BYTE(fb) 1
-#define BREAKUP_CHAR(ch, charset, byte1, byte2) do {   \
-  (charset) = Vcharset_ascii;                          \
-  (byte1) = (ch);                                      \
-  (byte2) = 0;                                         \
-} while (0)
-#define BYTE_ASCII_P(byte) 1
-
-#endif /* ! MULE */
-\f
-/************************************************************************/
-/*                                                                      */
 /*                  higher-level buffer-position functions              */
 /*                                                                      */
 /************************************************************************/
diff --git a/src/char-1byte.h b/src/char-1byte.h
new file mode 100644 (file)
index 0000000..98aefa5
--- /dev/null
@@ -0,0 +1,73 @@
+/* Header for UCS-4 character representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_CHAR_1BYTE_H
+#define _XEMACS_CHAR_1BYTE_H
+
+#define valid_char_p(ch) ((unsigned int) (ch) <= 0xff)
+
+\f
+/************************************************************************/
+/*                    Definition of leading bytes                       */
+/************************************************************************/
+
+typedef int Charset_ID;
+
+#define MIN_LEADING_BYTE 0x80
+#define LEADING_BYTE_ASCII 0x80
+#define NUM_LEADING_BYTES 1
+
+\f
+/************************************************************************/
+/*            Information about a particular character set              */
+/************************************************************************/
+
+#define CHARSETP(cs) 1
+#define CHARSET_BY_LEADING_BYTE(lb) Vcharset_ascii
+#define XCHARSET_LEADING_BYTE(cs) LEADING_BYTE_ASCII
+#define XCHARSET_GRAPHIC(cs) -1
+#define XCHARSET_COLUMNS(cs) 1
+#define XCHARSET_DIMENSION(cs) 1
+
+\f
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+#define CHAR_CHARSET(ch) Vcharset_ascii
+#define CHAR_LEADING_BYTE(ch) LEADING_BYTE_ASCII
+
+#define BREAKUP_CHAR(ch, charset, byte1, byte2) do {   \
+  (charset) = Vcharset_ascii;                          \
+  (byte1) = (ch);                                      \
+  (byte2) = 0;                                         \
+} while (0)
+
+\f
+/************************************************************************/
+/*                            Exported functions                        */
+/************************************************************************/
+
+#define Vcharset_ascii Qnil
+
+#endif /* _XEMACS_CHAR_1BYTE_H */
diff --git a/src/char-lb.h b/src/char-lb.h
new file mode 100644 (file)
index 0000000..a9bbce9
--- /dev/null
@@ -0,0 +1,38 @@
+/* Header for leading-byte character representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_CHAR_LB_H
+#define _XEMACS_CHAR_LB_H
+
+#include "mule-charset.h"
+
+int non_ascii_valid_char_p (Emchar ch);
+
+INLINE int valid_char_p (Emchar ch);
+INLINE int
+valid_char_p (Emchar ch)
+{
+  return ((unsigned int) (ch) <= 0xff) || non_ascii_valid_char_p (ch);
+}
+
+#endif /* _XEMACS_CHAR_LB_H */
diff --git a/src/char-ucs.h b/src/char-ucs.h
new file mode 100644 (file)
index 0000000..45e801b
--- /dev/null
@@ -0,0 +1,562 @@
+/* Header for UCS-4 character representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_CHAR_UCS_H
+#define _XEMACS_CHAR_UCS_H
+
+#define valid_char_p(ch) 1
+
+#define CHAR_ASCII_P(ch) ((ch) <= 0x7F)
+
+\f
+/************************************************************************/
+/*                    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
+/************************************************************************/
+/*            Information about a particular character set              */
+/************************************************************************/
+
+struct Lisp_Charset
+{
+  struct lcrecord_header header;
+
+  int id;
+  Lisp_Object name;
+  Lisp_Object doc_string;
+  Lisp_Object registry;
+  Lisp_Object short_name;
+  Lisp_Object 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;
+
+  /* Number of bytes used in encoding of this character set (1 or 2) */
+  unsigned int dimension;
+
+  /* Number of chars in each dimension (usually 94 or 96) */
+  unsigned int chars;
+
+  /* Which half of font to be used to display this character set */
+  unsigned int graphic;
+};
+typedef struct Lisp_Charset Lisp_Charset;
+
+DECLARE_LRECORD (charset, Lisp_Charset);
+#define XCHARSET(x) XRECORD (x, charset, Lisp_Charset)
+#define XSETCHARSET(x, p) XSETRECORD (x, p, charset)
+#define CHARSETP(x) RECORDP (x, charset)
+#define CHECK_CHARSET(x) CHECK_RECORD (x, charset)
+#define CONCHECK_CHARSET(x) CONCHECK_RECORD (x, charset)
+
+#define CHARSET_TYPE_94      0 /* This charset includes 94    characters. */
+#define CHARSET_TYPE_96      1 /* This charset includes 96    characters. */
+#define CHARSET_TYPE_94X94   2 /* This charset includes 94x94 characters. */
+#define CHARSET_TYPE_96X96   3 /* This charset includes 96x96 characters. */
+#define CHARSET_TYPE_128X128 4 /* This charset includes 128x128 characters. */
+#define CHARSET_TYPE_256X256 5 /* This charset includes 256x256 characters. */
+
+#define CHARSET_LEFT_TO_RIGHT  0
+#define CHARSET_RIGHT_TO_LEFT  1
+
+/* Leading byte and id have been regrouped. -- OG */
+#define CHARSET_ID(cs)          ((cs)->id)
+#define CHARSET_LEADING_BYTE(cs) (CHARSET_ID(cs))
+#define CHARSET_NAME(cs)        ((cs)->name)
+#define CHARSET_SHORT_NAME(cs)  ((cs)->short_name)
+#define CHARSET_LONG_NAME(cs)   ((cs)->long_name)
+#define CHARSET_REP_BYTES(cs)   ((cs)->rep_bytes)
+#define CHARSET_COLUMNS(cs)     ((cs)->columns)
+#define CHARSET_GRAPHIC(cs)     ((cs)->graphic)
+#define CHARSET_TYPE(cs)        ((cs)->type)
+#define CHARSET_DIRECTION(cs)   ((cs)->direction)
+#define CHARSET_FINAL(cs)       ((cs)->final)
+#define CHARSET_DOC_STRING(cs)  ((cs)->doc_string)
+#define CHARSET_REGISTRY(cs)    ((cs)->registry)
+#define CHARSET_CCL_PROGRAM(cs)  ((cs)->ccl_program)
+#define CHARSET_DIMENSION(cs)   ((cs)->dimension)
+#define CHARSET_CHARS(cs)       ((cs)->chars)
+#define CHARSET_REVERSE_DIRECTION_CHARSET(cs) ((cs)->reverse_direction_charset)
+
+
+#define XCHARSET_ID(cs)                  CHARSET_ID           (XCHARSET (cs))
+#define XCHARSET_NAME(cs)        CHARSET_NAME         (XCHARSET (cs))
+#define XCHARSET_SHORT_NAME(cs)          CHARSET_SHORT_NAME   (XCHARSET (cs))
+#define XCHARSET_LONG_NAME(cs)   CHARSET_LONG_NAME    (XCHARSET (cs))
+#define XCHARSET_REP_BYTES(cs)   CHARSET_REP_BYTES    (XCHARSET (cs))
+#define XCHARSET_COLUMNS(cs)     CHARSET_COLUMNS      (XCHARSET (cs))
+#define XCHARSET_GRAPHIC(cs)      CHARSET_GRAPHIC      (XCHARSET (cs))
+#define XCHARSET_TYPE(cs)        CHARSET_TYPE         (XCHARSET (cs))
+#define XCHARSET_DIRECTION(cs)   CHARSET_DIRECTION    (XCHARSET (cs))
+#define XCHARSET_FINAL(cs)       CHARSET_FINAL        (XCHARSET (cs))
+#define XCHARSET_DOC_STRING(cs)          CHARSET_DOC_STRING   (XCHARSET (cs))
+#define XCHARSET_REGISTRY(cs)    CHARSET_REGISTRY     (XCHARSET (cs))
+#define XCHARSET_LEADING_BYTE(cs) CHARSET_LEADING_BYTE (XCHARSET (cs))
+#define XCHARSET_CCL_PROGRAM(cs)  CHARSET_CCL_PROGRAM  (XCHARSET (cs))
+#define XCHARSET_DIMENSION(cs)   CHARSET_DIMENSION    (XCHARSET (cs))
+#define XCHARSET_CHARS(cs)       CHARSET_CHARS        (XCHARSET (cs))
+#define XCHARSET_REVERSE_DIRECTION_CHARSET(cs) \
+  CHARSET_REVERSE_DIRECTION_CHARSET (XCHARSET (cs))
+
+struct charset_lookup {
+  /* Table of charsets indexed by (leading byte - MIN_LEADING_BYTE). */
+  Lisp_Object charset_by_leading_byte[NUM_LEADING_BYTES];
+
+  /* Table of charsets indexed by type/final-byte. */
+  Lisp_Object charset_by_attributes[4][128];
+
+  Charset_ID next_allocated_1_byte_leading_byte;
+  Charset_ID next_allocated_2_byte_leading_byte;
+};
+
+extern struct charset_lookup *chlook;
+
+INLINE_HEADER Lisp_Object CHARSET_BY_LEADING_BYTE (Charset_ID lb);
+INLINE_HEADER Lisp_Object
+CHARSET_BY_LEADING_BYTE (Charset_ID lb)
+{
+  extern struct charset_lookup *chlook;
+
+#ifdef ERROR_CHECK_TYPECHECK
+  /* When error-checking is on, x86 GCC 2.95.2 -O3 miscompiles the
+     following unless we introduce `tem'. */
+  int tem = lb;
+  type_checking_assert (tem >= MIN_LEADING_BYTE &&
+                       tem < (MIN_LEADING_BYTE + NUM_LEADING_BYTES));
+#endif
+  return chlook->charset_by_leading_byte[lb - MIN_LEADING_BYTE];
+}
+
+INLINE_HEADER Lisp_Object
+CHARSET_BY_ATTRIBUTES (unsigned int type, unsigned char final, int dir);
+INLINE_HEADER Lisp_Object
+CHARSET_BY_ATTRIBUTES (unsigned int type, unsigned char final, int dir)
+{
+  extern struct charset_lookup *chlook;
+
+  type_checking_assert (type  < countof (chlook->charset_by_attributes) &&
+                       final < countof (chlook->charset_by_attributes[0]));
+  return chlook->charset_by_attributes[type][final];
+}
+
+\f
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+#define MAX_CHAR_BASIC_LATIN   0x007F
+
+#define MIN_CHAR_GREEK         0x0370
+#define MAX_CHAR_GREEK         0x03CF
+
+#define MIN_CHAR_CYRILLIC      0x0400
+#define MAX_CHAR_CYRILLIC      0x045F
+
+#define MIN_CHAR_HEBREW                0x0590
+#define MAX_CHAR_HEBREW                0x05EF
+
+#define MIN_CHAR_THAI          0x0E00
+#define MAX_CHAR_THAI          0x0E5F
+
+#define MIN_CHAR_HALFWIDTH_KATAKANA    0xFF60
+#define MAX_CHAR_HALFWIDTH_KATAKANA    0xFF9F
+
+#define MIN_CHAR_94            0xE90940
+#define MAX_CHAR_94            (MIN_CHAR_94 + 94 * 80 - 1)
+#define MIN_CHAR_96            (MIN_CHAR_94 + 94 * 80)
+#define MAX_CHAR_96            (MIN_CHAR_96 + 96 * 80 - 1)
+
+#define MIN_CHAR_94x94         0xE9F6C0
+#define MAX_CHAR_94x94         (MIN_CHAR_94x94 + 94 * 94 * 80 - 1)
+#define MIN_CHAR_96x96         0xF4C000
+#define MAX_CHAR_96x96         (MIN_CHAR_96x96 + 96 * 96 * 80 - 1)
+
+
+/* Return a character whose charset is CHARSET and position-codes
+   are C1 and C2.  TYPE9N character ignores C2. */
+
+INLINE_HEADER Emchar MAKE_CHAR (Lisp_Object charset, int c1, int c2);
+INLINE_HEADER Emchar
+MAKE_CHAR (Lisp_Object charset, int c1, int c2)
+{
+  if (EQ (charset, Vcharset_ascii))
+    return c1;
+  else if (EQ (charset, Vcharset_control_1))
+    return c1 | 0x80;
+  else if (EQ (charset, Vcharset_latin_iso8859_1))
+    return c1 | 0x80;
+  else if (EQ (charset, Vcharset_greek_iso8859_7))
+    return c1 + MIN_CHAR_GREEK - 0x20;
+  else if (EQ (charset, Vcharset_cyrillic_iso8859_5))
+    return c1 + MIN_CHAR_CYRILLIC - 0x20;
+  else if (EQ (charset, Vcharset_hebrew_iso8859_8))
+    return c1 + MIN_CHAR_HEBREW - 0x20;
+  else if (EQ (charset, Vcharset_thai_tis620))
+    return c1 + MIN_CHAR_THAI - 0x20;
+  else if (EQ (charset, Vcharset_katakana_jisx0201))
+    if (c1 < 0x60)
+      return c1 + MIN_CHAR_HALFWIDTH_KATAKANA - 0x20;
+    else
+      return 32;
+  else if (XCHARSET_DIMENSION (charset) == 1)
+    {
+      switch (XCHARSET_CHARS (charset))
+       {
+       case 94:
+         return MIN_CHAR_94
+           + (XCHARSET_FINAL (charset) - '0') * 94 + (c1 - 33);
+       case 96:
+         return MIN_CHAR_96
+           + (XCHARSET_FINAL (charset) - '0') * 96 + (c1 - 32);
+       default:
+         abort ();
+       }
+    }
+  else
+    {
+      switch (XCHARSET_CHARS (charset))
+       {
+       case 94:
+         return MIN_CHAR_94x94
+           + (XCHARSET_FINAL (charset) - '0') * 94 * 94
+           + (c1 - 33) * 94 + (c2 - 33);
+       case 96:
+         return MIN_CHAR_96x96
+           + (XCHARSET_FINAL (charset) - '0') * 96 * 96
+           + (c1 - 32) * 96 + (c2 - 32);
+       default:
+         abort ();
+       }
+    }
+}
+
+extern Charset_ID    latin_a_char_to_charset[128];
+extern unsigned char latin_a_char_to_byte1[128];
+extern unsigned char latin_a_char_to_byte2[128];
+
+INLINE_HEADER void breakup_char_1 (Emchar c, Lisp_Object *charset, int *c1, int *c2);
+INLINE_HEADER void
+breakup_char_1 (Emchar c, Lisp_Object *charset, int *c1, int *c2)
+{
+  if (c <= MAX_CHAR_BASIC_LATIN)
+    {
+      *charset = Vcharset_ascii;
+      *c1 = c;
+      *c2 = 0;
+    }
+  else if (c < 0xA0)
+    {
+      *charset = Vcharset_control_1;
+      *c1 = c & 0x7f;
+      *c2 = 0;
+    }
+  else if (c <= 0xff)
+    {
+      *charset = Vcharset_latin_iso8859_1;
+      *c1 = c & 0x7f;
+      *c2 = 0;
+    }
+  else if (c <= 0x17f)
+    {
+      *charset
+       = CHARSET_BY_LEADING_BYTE (latin_a_char_to_charset[c - 0x100]);
+      *c1 = latin_a_char_to_byte1[c - 0x100];
+      *c2 = latin_a_char_to_byte2[c - 0x100];
+    }
+  else if (c < MIN_CHAR_GREEK)
+    {
+      printf("not break up u+%x", c);
+      abort ();
+    }
+  else if (c <= MAX_CHAR_GREEK)
+    {
+      *charset = Vcharset_greek_iso8859_7;
+      *c1 = c - MIN_CHAR_GREEK + 0x20;
+      *c2 = 0;
+    }
+  else if (c < MIN_CHAR_CYRILLIC)
+    {
+      printf("not break up u+%x", c);
+      abort ();
+    }
+  else if (c <= MAX_CHAR_CYRILLIC)
+    {
+      *charset = Vcharset_cyrillic_iso8859_5;
+      *c1 = c - MIN_CHAR_CYRILLIC + 0x20;
+      *c2 = 0;
+    }
+  else if (c < MIN_CHAR_HEBREW)
+    {
+      printf("not break up u+%x", c);
+      abort ();
+    }
+  else if (c <= MAX_CHAR_HEBREW)
+    {
+      *charset = Vcharset_hebrew_iso8859_8;
+      *c1 = c - MIN_CHAR_HEBREW + 0x20;
+      *c2 = 0;
+    }
+  else if (c < MIN_CHAR_THAI)
+    {
+      printf("not break up u+%x", c);
+      abort ();
+    }
+  else if (c <= MAX_CHAR_THAI)
+    {
+      *charset = Vcharset_thai_tis620;
+      *c1 = c - MIN_CHAR_THAI + 0x20;
+      *c2 = 0;
+    }
+  else if (c < MIN_CHAR_HALFWIDTH_KATAKANA)
+    {
+      printf("not break up u+%x", c);
+      abort ();
+    }
+  else if (c <= MAX_CHAR_HALFWIDTH_KATAKANA)
+    {
+      *charset = Vcharset_katakana_jisx0201;
+      *c1 = c - MIN_CHAR_HALFWIDTH_KATAKANA + 0x20;
+      *c2 = 0;
+    }
+  else if (c <= MAX_CHAR_94)
+    {
+      *charset
+       = CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_94,
+                                ((c - MIN_CHAR_94) / 94) + '0',
+                                CHARSET_LEFT_TO_RIGHT);
+      *c1 = ((c - MIN_CHAR_94) % 94) + 33;
+      *c2 = 0;
+    }
+  else if (c <= MAX_CHAR_96)
+    {
+      *charset
+       = CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_96,
+                                ((c - MIN_CHAR_96) / 96) + '0',
+                                CHARSET_LEFT_TO_RIGHT);
+      *c1 = ((c - MIN_CHAR_96) % 96) + 32;
+      *c2 = 0;
+    }
+  else if (c <= MAX_CHAR_94x94)
+    {
+      *charset
+       = CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_94X94,
+                                ((c - MIN_CHAR_94x94) / (94 * 94)) + '0',
+                                CHARSET_LEFT_TO_RIGHT);
+      *c1 = (((c - MIN_CHAR_94x94) / 94) % 94) + 33;
+      *c2 = ((c - MIN_CHAR_94x94) % 94) + 33;
+    }
+  else if (c <= MAX_CHAR_96x96)
+    {
+      *charset
+       = CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_96X96,
+                                ((c - MIN_CHAR_96x96) / (96 * 96)) + '0',
+                                CHARSET_LEFT_TO_RIGHT);
+      *c1 = (((c - MIN_CHAR_96x96) / 96) % 96) + 32;
+      *c2 = ((c - MIN_CHAR_96x96) % 96) + 32;
+    }
+  else
+    {
+      printf("u+%x", c);
+      abort();
+    }
+}
+
+#define BREAKUP_CHAR(ch, charset, b1, b2) \
+  breakup_char_1 (ch, &(charset), &(b1), &(b2))
+
+INLINE_HEADER Lisp_Object CHAR_CHARSET (Emchar ch);
+INLINE_HEADER Lisp_Object
+CHAR_CHARSET (Emchar ch)
+{
+  Lisp_Object charset;
+  int b1, b2;
+
+  BREAKUP_CHAR(ch, charset, b1, b2);
+  return charset;
+}
+
+#define CHAR_LEADING_BYTE(c) (XCHARSET_LEADING_BYTE(CHAR_CHARSET(c)))
+
+\f
+#ifdef ENABLE_COMPOSITE_CHARS
+/************************************************************************/
+/*                           Composite characters                       */
+/************************************************************************/
+
+Emchar lookup_composite_char (Bufbyte *str, int len);
+Lisp_Object composite_char_string (Emchar ch);
+#endif /* ENABLE_COMPOSITE_CHARS */
+
+\f
+/************************************************************************/
+/*                            Exported functions                        */
+/************************************************************************/
+
+EXFUN (Ffind_charset, 1);
+EXFUN (Fget_charset, 1);
+
+extern Lisp_Object Vcharset_chinese_big5_1;
+extern Lisp_Object Vcharset_chinese_big5_2;
+extern Lisp_Object Vcharset_japanese_jisx0208;
+extern Lisp_Object Vcharset_japanese_jisx0212;
+
+#endif /* _XEMACS_CHAR_UCS_H */
index 5dd9ece..9f89559 100644 (file)
@@ -1,4 +1,4 @@
-/* Header for UCS-4 character representation.
+/* Header for character representation.
    Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
    Licensed to the Free Software Foundation.
 
@@ -24,652 +24,80 @@ Boston, MA 02111-1307, USA.  */
 #ifndef _XEMACS_CHARACTER_H
 #define _XEMACS_CHARACTER_H
 
-#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                            */
-/************************************************************************/
-
-/* These are carefully designed to work if BYTE is signed or unsigned. */
-/* Note that SPC and DEL are considered ASCII, not control. */
-
-#define BYTE_ASCII_P(byte) (((byte) & ~0x7f) == 0)
-#define BYTE_C0_P(byte)    (((byte) & ~0x1f) == 0)
-#define BYTE_C1_P(byte)    (((byte) & ~0x1f) == 0x80)
-
-\f
-/************************************************************************/
-/*                     Operations on individual bytes                   */
-/*                       in a Mule-formatted string                     */
-/************************************************************************/
-
-/* Does BYTE represent the first byte of a character? */
-
-INLINE_HEADER int BUFBYTE_FIRST_BYTE_P (Bufbyte byte);
-INLINE_HEADER int
-BUFBYTE_FIRST_BYTE_P (Bufbyte byte)
-{
-  return (byte <= 0x7f) || (0xc0 <= byte);
-}
-
-\f
-/************************************************************************/
-/*            Information about a particular character set              */
-/************************************************************************/
-
-struct Lisp_Charset
-{
-  struct lcrecord_header header;
-
-  int id;
-  Lisp_Object name;
-  Lisp_Object doc_string;
-  Lisp_Object registry;
-  Lisp_Object short_name;
-  Lisp_Object 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;
-
-  /* Number of bytes used in encoding of this character set (1 or 2) */
-  unsigned int dimension;
+#if !defined(MULE) /* unibyte representation */
+# include "char-1byte.h"
+#elif !defined(CHAR_IS_UCS4) /* leading-byte representation */
+# include "char-lb.h"
+#else /* CHAR_IS_UCS4 */
+# include "char-ucs.h"
+#endif /* CHAR_IS_UCS4 */
 
-  /* Number of chars in each dimension (usually 94 or 96) */
-  unsigned int chars;
+/********************************/
+/*                              */
+/*   Interface for characters   */
+/*                              */
+/********************************/
+/*
+   valid_char_p (ch):
+       Return whether the given Emchar is valid.
 
-  /* Which half of font to be used to display this character set */
-  unsigned int graphic;
-};
-typedef struct Lisp_Charset Lisp_Charset;
+   CHARP (ch):
+       Return whether the given Lisp_Object is a character.
 
-DECLARE_LRECORD (charset, Lisp_Charset);
-#define XCHARSET(x) XRECORD (x, charset, Lisp_Charset)
-#define XSETCHARSET(x, p) XSETRECORD (x, p, charset)
-#define CHARSETP(x) RECORDP (x, charset)
-#define CHECK_CHARSET(x) CHECK_RECORD (x, charset)
-#define CONCHECK_CHARSET(x) CONCHECK_RECORD (x, charset)
+   CHECK_CHAR_COERCE_INT (ch):
+       Signal an error if CH is not a valid character or integer
+       Lisp_Object.
+       If CH is an integer Lisp_Object, convert it to a character
+       Lisp_Object, but merely by repackaging, without performing
+       tests for char validity.
 
-#define CHARSET_TYPE_94      0 /* This charset includes 94    characters. */
-#define CHARSET_TYPE_96      1 /* This charset includes 96    characters. */
-#define CHARSET_TYPE_94X94   2 /* This charset includes 94x94 characters. */
-#define CHARSET_TYPE_96X96   3 /* This charset includes 96x96 characters. */
-#define CHARSET_TYPE_128X128 4 /* This charset includes 128x128 characters. */
-#define CHARSET_TYPE_256X256 5 /* This charset includes 256x256 characters. */
+Functions/macros when MULE is defined:
 
-#define CHARSET_LEFT_TO_RIGHT  0
-#define CHARSET_RIGHT_TO_LEFT  1
+   CHAR_ASCII_P (ch):
+        Return whether the given Emchar is ASCII.
 
-/* Leading byte and id have been regrouped. -- OG */
-#define CHARSET_ID(cs)          ((cs)->id)
-#define CHARSET_LEADING_BYTE(cs) ((Bufbyte) CHARSET_ID(cs))
-#define CHARSET_NAME(cs)        ((cs)->name)
-#define CHARSET_SHORT_NAME(cs)  ((cs)->short_name)
-#define CHARSET_LONG_NAME(cs)   ((cs)->long_name)
-#define CHARSET_REP_BYTES(cs)   ((cs)->rep_bytes)
-#define CHARSET_COLUMNS(cs)     ((cs)->columns)
-#define CHARSET_GRAPHIC(cs)     ((cs)->graphic)
-#define CHARSET_TYPE(cs)        ((cs)->type)
-#define CHARSET_DIRECTION(cs)   ((cs)->direction)
-#define CHARSET_FINAL(cs)       ((cs)->final)
-#define CHARSET_DOC_STRING(cs)  ((cs)->doc_string)
-#define CHARSET_REGISTRY(cs)    ((cs)->registry)
-#define CHARSET_CCL_PROGRAM(cs)  ((cs)->ccl_program)
-#define CHARSET_DIMENSION(cs)   ((cs)->dimension)
-#define CHARSET_CHARS(cs)       ((cs)->chars)
-#define CHARSET_REVERSE_DIRECTION_CHARSET(cs) ((cs)->reverse_direction_charset)
+   MAKE_CHAR (CHARSET, B1, B2):
+       Return a character whose coded-charset is CHARSET and
+       position-codes are B1 and B2.  1 byte character ignores B2.
 
+   BREAKUP_CHAR (ch, charset, B1, B2):
+       Break up the given Emchar, and store found coded-charset and
+       position-codes to CHARSET, B1 and B2.
 
-#define XCHARSET_ID(cs)                  CHARSET_ID           (XCHARSET (cs))
-#define XCHARSET_NAME(cs)        CHARSET_NAME         (XCHARSET (cs))
-#define XCHARSET_SHORT_NAME(cs)          CHARSET_SHORT_NAME   (XCHARSET (cs))
-#define XCHARSET_LONG_NAME(cs)   CHARSET_LONG_NAME    (XCHARSET (cs))
-#define XCHARSET_REP_BYTES(cs)   CHARSET_REP_BYTES    (XCHARSET (cs))
-#define XCHARSET_COLUMNS(cs)     CHARSET_COLUMNS      (XCHARSET (cs))
-#define XCHARSET_GRAPHIC(cs)      CHARSET_GRAPHIC      (XCHARSET (cs))
-#define XCHARSET_TYPE(cs)        CHARSET_TYPE         (XCHARSET (cs))
-#define XCHARSET_DIRECTION(cs)   CHARSET_DIRECTION    (XCHARSET (cs))
-#define XCHARSET_FINAL(cs)       CHARSET_FINAL        (XCHARSET (cs))
-#define XCHARSET_DOC_STRING(cs)          CHARSET_DOC_STRING   (XCHARSET (cs))
-#define XCHARSET_REGISTRY(cs)    CHARSET_REGISTRY     (XCHARSET (cs))
-#define XCHARSET_LEADING_BYTE(cs) CHARSET_LEADING_BYTE (XCHARSET (cs))
-#define XCHARSET_CCL_PROGRAM(cs)  CHARSET_CCL_PROGRAM  (XCHARSET (cs))
-#define XCHARSET_DIMENSION(cs)   CHARSET_DIMENSION    (XCHARSET (cs))
-#define XCHARSET_CHARS(cs)       CHARSET_CHARS        (XCHARSET (cs))
-#define XCHARSET_REVERSE_DIRECTION_CHARSET(cs) \
-  CHARSET_REVERSE_DIRECTION_CHARSET (XCHARSET (cs))
+   CHAR_CHARSET (CH):
+        Return coded-charset object of Emchar CH.
 
-struct charset_lookup {
-  /* Table of charsets indexed by leading byte. */
-  Lisp_Object charset_by_leading_byte[NUM_LEADING_BYTES];
+   CHAR_LEADING_BYTE (CH):
+        Return Charset-ID of Emchar CH.
+*/
 
-  /* Table of charsets indexed by type/final-byte. */
-  Lisp_Object charset_by_attributes[4][128];
+#define CHAR_INTP(x) (INTP (x) && valid_char_p (XINT (x)))
 
-  Bufbyte next_allocated_1_byte_leading_byte;
-  Bufbyte next_allocated_2_byte_leading_byte;
-};
-
-INLINE_HEADER Lisp_Object CHARSET_BY_LEADING_BYTE (Charset_ID lb);
-INLINE_HEADER Lisp_Object
-CHARSET_BY_LEADING_BYTE (Charset_ID lb)
-{
-  extern struct charset_lookup *chlook;
+#define CHAR_OR_CHAR_INTP(x) (CHARP (x) || CHAR_INTP (x))
 
 #ifdef ERROR_CHECK_TYPECHECK
-  /* When error-checking is on, x86 GCC 2.95.2 -O3 miscompiles the
-     following unless we introduce `tem'. */
-  int tem = lb;
-  type_checking_assert (tem >= MIN_LEADING_BYTE &&
-                       tem < (MIN_LEADING_BYTE + NUM_LEADING_BYTES));
-#endif
-  return chlook->charset_by_leading_byte[lb - MIN_LEADING_BYTE];
-}
-
-INLINE_HEADER Lisp_Object
-CHARSET_BY_ATTRIBUTES (unsigned int type, unsigned char final, int dir);
-INLINE_HEADER Lisp_Object
-CHARSET_BY_ATTRIBUTES (unsigned int type, unsigned char final, int dir)
-{
-  extern struct charset_lookup *chlook;
-
-  type_checking_assert (type  < countof (chlook->charset_by_attributes) &&
-                       final < countof (chlook->charset_by_attributes[0]));
-  return chlook->charset_by_attributes[type][final];
-}
-
-/* Number of bytes in the string representation of a character. */
-INLINE_HEADER int REP_BYTES_BY_FIRST_BYTE (int fb);
-INLINE_HEADER int
-REP_BYTES_BY_FIRST_BYTE (int fb)
-{
-  if ( fb < 0xc0 )
-    return 1;
-  else if ( fb < 0xe0 )
-    return 2;
-  else if ( fb < 0xf0 )
-    return 3;
-  else if ( fb < 0xf8 )
-    return 4;
-  else if ( fb < 0xfc )
-    return 5;
-  else
-    return 6;
-}
-
-\f
-/************************************************************************/
-/*                        Dealing with characters                       */
-/************************************************************************/
-
-/* Is this character represented by more than one byte in a string? */
-
-#define CHAR_MULTIBYTE_P(c) ((c) >= 0x80)
-
-#define CHAR_ASCII_P(c) (!CHAR_MULTIBYTE_P (c))
-
-/* The bit fields of character are divided into 3 parts:
-   FIELD1(5bits):FIELD2(7bits):FIELD3(7bits) */
-
-#define CHAR_FIELD1_MASK (0x7F << 14)
-#define CHAR_FIELD2_MASK (0x7F << 7)
-#define CHAR_FIELD3_MASK 0x7F
-
-#define MIN_CHAR_GREEK         0x0370
-#define MAX_CHAR_GREEK         0x03CF
-
-#define MIN_CHAR_CYRILLIC      0x0400
-#define MAX_CHAR_CYRILLIC      0x045F
-
-#define MIN_CHAR_HEBREW                0x0590
-#define MAX_CHAR_HEBREW                0x05EF
-
-#define MIN_CHAR_THAI          0x0E00
-#define MAX_CHAR_THAI          0x0E5F
-
-#define MIN_CHAR_HALFWIDTH_KATAKANA    0xFF60
-#define MAX_CHAR_HALFWIDTH_KATAKANA    0xFF9F
-
-#define MIN_CHAR_94            0xE90940
-#define MAX_CHAR_94            (MIN_CHAR_94 + 94 * 80 - 1)
-#define MIN_CHAR_96            (MIN_CHAR_94 + 94 * 80)
-#define MAX_CHAR_96            (MIN_CHAR_96 + 96 * 80 - 1)
 
-#define MIN_CHAR_94x94         0xE9F6C0
-#define MAX_CHAR_94x94         (MIN_CHAR_94x94 + 94 * 94 * 80 - 1)
-#define MIN_CHAR_96x96         0xF4C000
-#define MAX_CHAR_96x96         (MIN_CHAR_96x96 + 96 * 96 * 80 - 1)
-
-/* Macros to access each field of a character code of C.  */
-
-#define CHAR_FIELD1(c) (((c) & CHAR_FIELD1_MASK) >> 14)
-#define CHAR_FIELD2_INTERNAL(c) (((c) & CHAR_FIELD2_MASK) >> 7)
-#define CHAR_FIELD3_INTERNAL(c)  ((c) & CHAR_FIELD3_MASK)
-
-/* Field 1, if non-zero, usually holds a leading byte for a
-   dimension-2 charset.  Field 2, if non-zero, usually holds a leading
-   byte for a dimension-1 charset. */
-
-/* Converting between field values and leading bytes.  */
-
-#define FIELD1_TO_PRIVATE_LEADING_BYTE  CHARSET_ID_OFFSET_94x94
-#define FIELD1_TO_OFFICIAL_LEADING_BYTE CHARSET_ID_OFFSET_94x94
-#define FIELD2_TO_PRIVATE_LEADING_BYTE  (MIN_LEADING_BYTE_PRIVATE_1 - 32)
-#define FIELD2_TO_OFFICIAL_LEADING_BYTE LEADING_BYTE_ASCII
-
-/* Minimum and maximum allowed values for the fields. */
-
-#define MIN_CHAR_FIELD1_OFFICIAL \
-  (MIN_LEADING_BYTE_OFFICIAL_2 - FIELD1_TO_OFFICIAL_LEADING_BYTE)
-#define MAX_CHAR_FIELD1_OFFICIAL \
-  (MAX_LEADING_BYTE_OFFICIAL_2 - FIELD1_TO_OFFICIAL_LEADING_BYTE)
-
-#define MIN_CHAR_FIELD2_PRIVATE \
-  (MIN_LEADING_BYTE_PRIVATE_1 - FIELD2_TO_PRIVATE_LEADING_BYTE)
-#define MAX_CHAR_FIELD2_PRIVATE \
-  (MAX_LEADING_BYTE_PRIVATE_1 - FIELD2_TO_PRIVATE_LEADING_BYTE)
-
-#define MIN_CHAR_FIELD1_PRIVATE \
-  (MIN_LEADING_BYTE_PRIVATE_2 - FIELD1_TO_PRIVATE_LEADING_BYTE)
-#define MAX_CHAR_FIELD1_PRIVATE \
-  (MAX_LEADING_BYTE_PRIVATE_2 - FIELD1_TO_PRIVATE_LEADING_BYTE)
-
-/* Minimum character code of each <type> character.  */
-
-#define MULE_CHAR_PRIVATE_OFFSET (0xe0 << 16)
-
-#define MIN_CHAR_PRIVATE_TYPE9N \
-  (MULE_CHAR_PRIVATE_OFFSET | (MIN_CHAR_FIELD2_PRIVATE  <<  7))
-#define MAX_CHAR_PRIVATE_TYPE9N \
-  (MULE_CHAR_PRIVATE_OFFSET | (MAX_CHAR_FIELD2_PRIVATE  <<  7) | 0x7f)
-#define MIN_CHAR_PRIVATE_TYPE9NX9N \
-  (MULE_CHAR_PRIVATE_OFFSET | (MIN_CHAR_FIELD1_PRIVATE  << 14))
-#define MIN_CHAR_OFFICIAL_TYPE9NX9N \
-  (MULE_CHAR_PRIVATE_OFFSET | (MIN_CHAR_FIELD1_OFFICIAL << 14))
-#define MIN_CHAR_COMPOSITION \
-  (MULE_CHAR_PRIVATE_OFFSET | (0x7f << 14))
-
-/* Return a character whose charset is CHARSET and position-codes
-   are C1 and C2.  TYPE9N character ignores C2.
-
-   NOTE: This takes advantage of the fact that
-   FIELD2_TO_OFFICIAL_LEADING_BYTE and
-   FIELD2_TO_PRIVATE_LEADING_BYTE are the same.
-   */
-
-INLINE_HEADER Emchar MAKE_CHAR (Lisp_Object charset, int c1, int c2);
-INLINE_HEADER Emchar
-MAKE_CHAR (Lisp_Object charset, int c1, int c2)
+INLINE Emchar XCHAR_OR_CHAR_INT (Lisp_Object obj);
+INLINE Emchar
+XCHAR_OR_CHAR_INT (Lisp_Object obj)
 {
-  if (EQ (charset, Vcharset_ascii))
-    return c1;
-  else if (EQ (charset, Vcharset_control_1))
-    return c1 | 0x80;
-  else if (EQ (charset, Vcharset_latin_iso8859_1))
-    return c1 | 0x80;
-  else if (EQ (charset, Vcharset_greek_iso8859_7))
-    return c1 + MIN_CHAR_GREEK - 0x20;
-  else if (EQ (charset, Vcharset_cyrillic_iso8859_5))
-    return c1 + MIN_CHAR_CYRILLIC - 0x20;
-  else if (EQ (charset, Vcharset_hebrew_iso8859_8))
-    return c1 + MIN_CHAR_HEBREW - 0x20;
-  else if (EQ (charset, Vcharset_thai_tis620))
-    return c1 + MIN_CHAR_THAI - 0x20;
-  else if (EQ (charset, Vcharset_katakana_jisx0201))
-    if (c1 < 0x60)
-      return c1 + MIN_CHAR_HALFWIDTH_KATAKANA - 0x20;
-    else
-      return 32;
-  else if (XCHARSET_DIMENSION (charset) == 1)
-    {
-      switch (XCHARSET_CHARS (charset))
-       {
-       case 94:
-         return MIN_CHAR_94
-           + (XCHARSET_FINAL (charset) - '0') * 94 + (c1 - 33);
-       case 96:
-         return MIN_CHAR_96
-           + (XCHARSET_FINAL (charset) - '0') * 96 + (c1 - 32);
-       default:
-         abort ();
-       }
-    }
-  else
-    {
-      switch (XCHARSET_CHARS (charset))
-       {
-       case 94:
-         return MIN_CHAR_94x94
-           + (XCHARSET_FINAL (charset) - '0') * 94 * 94
-           + (c1 - 33) * 94 + (c2 - 33);
-       case 96:
-         return MIN_CHAR_96x96
-           + (XCHARSET_FINAL (charset) - '0') * 96 * 96
-           + (c1 - 32) * 96 + (c2 - 32);
-       default:
-         abort ();
-       }
-    }
+  assert (CHAR_OR_CHAR_INTP (obj));
+  return CHARP (obj) ? XCHAR (obj) : XINT (obj);
 }
 
-extern Charset_ID    latin_a_char_to_charset[128];
-extern unsigned char latin_a_char_to_byte1[128];
-extern unsigned char latin_a_char_to_byte2[128];
-
-INLINE_HEADER void breakup_char_1 (Emchar c, Lisp_Object *charset, int *c1, int *c2);
-INLINE_HEADER void
-breakup_char_1 (Emchar c, Lisp_Object *charset, int *c1, int *c2)
-{
-  if (CHAR_ASCII_P (c))
-    {
-      *charset = Vcharset_ascii;
-      *c1 = c;
-      *c2 = 0;
-    }
-  else if (c < 0xA0)
-    {
-      *charset = Vcharset_control_1;
-      *c1 = CHAR_FIELD3_INTERNAL (c);
-      *c2 = 0;
-    }
-  else if (c <= 0xff)
-    {
-      *charset = Vcharset_latin_iso8859_1;
-      *c1 = CHAR_FIELD3_INTERNAL (c);
-      *c2 = 0;
-    }
-  else if (c <= 0x17f)
-    {
-      *charset
-       = CHARSET_BY_LEADING_BYTE (latin_a_char_to_charset[c - 0x100]);
-      *c1 = latin_a_char_to_byte1[c - 0x100];
-      *c2 = latin_a_char_to_byte2[c - 0x100];
-    }
-  else if (c < MIN_CHAR_GREEK)
-    {
-      printf("not break up u+%x", c);
-      abort ();
-    }
-  else if (c <= MAX_CHAR_GREEK)
-    {
-      *charset = Vcharset_greek_iso8859_7;
-      *c1 = c - MIN_CHAR_GREEK + 0x20;
-      *c2 = 0;
-    }
-  else if (c < MIN_CHAR_CYRILLIC)
-    {
-      printf("not break up u+%x", c);
-      abort ();
-    }
-  else if (c <= MAX_CHAR_CYRILLIC)
-    {
-      *charset = Vcharset_cyrillic_iso8859_5;
-      *c1 = c - MIN_CHAR_CYRILLIC + 0x20;
-      *c2 = 0;
-    }
-  else if (c < MIN_CHAR_HEBREW)
-    {
-      printf("not break up u+%x", c);
-      abort ();
-    }
-  else if (c <= MAX_CHAR_HEBREW)
-    {
-      *charset = Vcharset_hebrew_iso8859_8;
-      *c1 = c - MIN_CHAR_HEBREW + 0x20;
-      *c2 = 0;
-    }
-  else if (c < MIN_CHAR_THAI)
-    {
-      printf("not break up u+%x", c);
-      abort ();
-    }
-  else if (c <= MAX_CHAR_THAI)
-    {
-      *charset = Vcharset_thai_tis620;
-      *c1 = c - MIN_CHAR_THAI + 0x20;
-      *c2 = 0;
-    }
-  else if (c < MIN_CHAR_HALFWIDTH_KATAKANA)
-    {
-      printf("not break up u+%x", c);
-      abort ();
-    }
-  else if (c <= MAX_CHAR_HALFWIDTH_KATAKANA)
-    {
-      *charset = Vcharset_katakana_jisx0201;
-      *c1 = c - MIN_CHAR_HALFWIDTH_KATAKANA + 0x20;
-      *c2 = 0;
-    }
-  else if (c <= MAX_CHAR_94)
-    {
-      *charset
-       = CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_94,
-                                ((c - MIN_CHAR_94) / 94) + '0',
-                                CHARSET_LEFT_TO_RIGHT);
-      *c1 = ((c - MIN_CHAR_94) % 94) + 33;
-      *c2 = 0;
-    }
-  else if (c <= MAX_CHAR_96)
-    {
-      *charset
-       = CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_96,
-                                ((c - MIN_CHAR_96) / 96) + '0',
-                                CHARSET_LEFT_TO_RIGHT);
-      *c1 = ((c - MIN_CHAR_96) % 96) + 32;
-      *c2 = 0;
-    }
-  else if (c <= MAX_CHAR_94x94)
-    {
-      *charset
-       = CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_94X94,
-                                ((c - MIN_CHAR_94x94) / (94 * 94)) + '0',
-                                CHARSET_LEFT_TO_RIGHT);
-      *c1 = (((c - MIN_CHAR_94x94) / 94) % 94) + 33;
-      *c2 = ((c - MIN_CHAR_94x94) % 94) + 33;
-    }
-  else if (c <= MAX_CHAR_96x96)
-    {
-      *charset
-       = CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_96X96,
-                                ((c - MIN_CHAR_96x96) / (96 * 96)) + '0',
-                                CHARSET_LEFT_TO_RIGHT);
-      *c1 = (((c - MIN_CHAR_96x96) / 96) % 96) + 32;
-      *c2 = ((c - MIN_CHAR_96x96) % 96) + 32;
-    }
-  else
-    {
-      printf("u+%x", c);
-      abort();
-    }
-}
-
-#define BREAKUP_CHAR(c, charset, c1, c2) \
-  breakup_char_1 (c, &(charset), &(c1), &(c2))
-
-INLINE_HEADER Lisp_Object CHAR_CHARSET (Emchar c);
-INLINE_HEADER Lisp_Object
-CHAR_CHARSET (Emchar c)
-{
-  Lisp_Object charset;
-  int c1, c2;
-
-  BREAKUP_CHAR(c, charset, c1, c2);
-  return charset;
-}
-
-#define CHAR_LEADING_BYTE(c) (XCHARSET_LEADING_BYTE(CHAR_CHARSET(c)))
-
-\f
-#ifdef ENABLE_COMPOSITE_CHARS
-/************************************************************************/
-/*                           Composite characters                       */
-/************************************************************************/
-
-Emchar lookup_composite_char (Bufbyte *str, int len);
-Lisp_Object composite_char_string (Emchar ch);
-#endif /* ENABLE_COMPOSITE_CHARS */
-
-\f
-/************************************************************************/
-/*                            Exported functions                        */
-/************************************************************************/
+#else
 
-EXFUN (Ffind_charset, 1);
-EXFUN (Fget_charset, 1);
+#define XCHAR_OR_CHAR_INT(obj) (CHARP ((obj)) ? XCHAR ((obj)) : XINT ((obj)))
 
-extern Lisp_Object Vcharset_chinese_big5_1;
-extern Lisp_Object Vcharset_chinese_big5_2;
-extern Lisp_Object Vcharset_japanese_jisx0208;
-extern Lisp_Object Vcharset_japanese_jisx0212;
+#endif
 
-Emchar Lstream_get_emchar_1 (Lstream *stream, int first_char);
-int Lstream_fput_emchar (Lstream *stream, Emchar ch);
-void Lstream_funget_emchar (Lstream *stream, Emchar ch);
+#define CHECK_CHAR_COERCE_INT(x) do {          \
+  if (CHARP (x))                               \
+     ;                                         \
+  else if (CHAR_INTP (x))                      \
+    x = make_char (XINT (x));                  \
+  else                                         \
+    x = wrong_type_argument (Qcharacterp, x);  \
+} while (0)
 
-#endif /* CHAR_IS_UCS4 */
 #endif /* _XEMACS_CHARACTER_H */
index 8179c18..96f333d 100644 (file)
@@ -7,69 +7,69 @@ LISP_UNION_H=lisp-disunion.h
 #endif
 LISP_H=lisp.h config.h general-slots.h lrecord.h symeval.h symsinit.h $(LISP_UNION_H)
 #if defined(HAVE_MS_WINDOWS)
-console-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h events.h mule-charset.h opaque.h syscommctrl.h systime.h syswindows.h
-device-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
-dialog-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
-dired-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h ndir.h nt.h regex.h sysdir.h sysfile.h sysproc.h systime.h syswindows.h
-event-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h menubar-msw.h menubar.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.h specifier.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
-frame-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
-glyphs-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syswindows.h toolbar.h window.h winslots.h
-gui-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
-menubar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h menubar-msw.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
-objects-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h device.h hash.h insdel.h mule-charset.h objects-msw.h objects.h specifier.h syscommctrl.h syswindows.h
-redisplay-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h debug.h device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
+console-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h events.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h syscommctrl.h systime.h syswindows.h
+device-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
+dialog-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+dired-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h nt.h regex.h sysdir.h sysfile.h sysproc.h systime.h syswindows.h
+event-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar-msw.h menubar.h mule-charset.h multibyte.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.h specifier.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
+frame-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+glyphs-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syswindows.h toolbar.h window.h winslots.h
+gui-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+menubar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar-msw.h menubar.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+objects-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h device.h hash.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-msw.h objects.h specifier.h syscommctrl.h syswindows.h
+redisplay-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h debug.h device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
 scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
-select-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h device.h file-coding.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h select.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
-toolbar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+select-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h device.h file-coding.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h select.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+toolbar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
 #endif
 #if defined(HAVE_X_WINDOWS)
 balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h xintrinsic.h
-console-x.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h mule-charset.h process.h redisplay.h xintrinsic.h
-device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
-dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h dragdrop.h events-mod.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
-glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
-gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h keymap.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-objects-x.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h insdel.h mule-charset.h objects-x.h objects.h specifier.h xintrinsic.h
-redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+console-x.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h redisplay.h xintrinsic.h
+device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
+dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h dragdrop.h events-mod.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
+gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+objects-x.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h specifier.h xintrinsic.h
+redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
 scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h redisplay.h scrollbar-x.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
-select-x.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+select-x.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
 #endif
 #if defined(HAVE_TTY)
-console-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
-device-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+console-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+device-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
 event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
 frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-objects-tty.o: $(LISP_H) character.h conslots.h console-tty.h console.h device.h insdel.h mule-charset.h objects-tty.h objects.h specifier.h syssignal.h systty.h
-redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+objects-tty.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-tty.h console.h device.h insdel.h mule-charset.h objects-tty.h objects.h specifier.h syssignal.h systty.h
+redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
 #endif
 #if defined(HAVE_GTK)
 console-gtk.o: $(LISP_H) conslots.h console-gtk.h console.h process.h redisplay.h
-device-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
-dialog-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
-event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console-gtk.h console-tty.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h lstream.h mule-charset.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
-frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
+device-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
+dialog-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-gtk.h console-tty.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
 gccache-gtk.o: $(LISP_H) gccache-gtk.h hash.h
-glyphs-gtk.o: $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-gtk.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h sysfile.h toolbar.h ui-gtk.h window.h winslots.h
-gui-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-menubar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
-objects-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h insdel.h mule-charset.h objects-gtk.h objects.h specifier.h
-redisplay-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h
+glyphs-gtk.o: $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h imgproc.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h sysfile.h toolbar.h ui-gtk.h window.h winslots.h
+gui-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+menubar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
+objects-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h specifier.h
+redisplay-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h
 scrollbar-gtk.o: $(LISP_H) conslots.h console-gtk.h console.h device.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-select-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h select.h specifier.h systime.h toolbar.h window.h winslots.h
-toolbar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-ui-gtk.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h elhash.h emacs-marshals.c emacs-widget-accessors.c events.h faces.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui-gtk.h gui.h hash.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h ui-byhand.c ui-gtk.h window.h winslots.h
+select-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h select.h specifier.h systime.h toolbar.h window.h winslots.h
+toolbar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+ui-gtk.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h elhash.h emacs-marshals.c emacs-widget-accessors.c events.h faces.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui-gtk.h gui.h hash.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h ui-byhand.c ui-gtk.h window.h winslots.h
 #endif
 #if defined(HAVE_DATABASE)
-database.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h database.h mule-charset.h sysfile.h
+database.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h database.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h sysfile.h
 #endif
 #if defined(MULE)
-mule-canna.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h file-coding.h mule-charset.h
-mule-ccl.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h file-coding.h mule-ccl.h mule-charset.h
-mule-charset.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h elhash.h faces.h lstream.h mule-ccl.h mule-charset.h
-mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h redisplay.h scrollbar.h sysdep.h window.h winslots.h
+mule-canna.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h file-coding.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
+mule-ccl.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h file-coding.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h
+mule-charset.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h elhash.h faces.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h
+mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h sysdep.h window.h winslots.h
 mule.o: $(LISP_H) regex.h
 #endif
 #if defined(EXTERNAL_WIDGET)
@@ -79,129 +79,129 @@ ExternalShell.o: ExternalShell.h ExternalShellP.h config.h extw-Xlib.h extw-Xt.h
 extw-Xlib.o: config.h extw-Xlib.h
 extw-Xt.o: config.h extw-Xlib.h extw-Xt.h
 #endif
-EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
 EmacsManager.o: EmacsManager.h EmacsManagerP.h config.h xintrinsicp.h xmmanagerp.h
 EmacsShell-sub.o: EmacsShell.h EmacsShellP.h config.h xintrinsic.h xintrinsicp.h
 EmacsShell.o: EmacsShell.h ExternalShell.h config.h xintrinsicp.h
-abbrev.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h insdel.h mule-charset.h redisplay.h scrollbar.h syntax.h window.h winslots.h
-alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h conslots.h console-stream.h console.h device.h dumper.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
+abbrev.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h syntax.h window.h winslots.h
+alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-stream.h console.h device.h dumper.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
 alloca.o: config.h
 balloon_help.o: balloon_help.h config.h xintrinsic.h
 blocktype.o: $(LISP_H) blocktype.h
-buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
-bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h mule-charset.h opaque.h syntax.h
-callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h commands.h events.h insdel.h mule-charset.h redisplay.h scrollbar.h systime.h window.h winslots.h
-callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h file-coding.h insdel.h lstream.h mule-charset.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h
-casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h insdel.h mule-charset.h syntax.h
-casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h opaque.h
-chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h syntax.h
-cm.o: $(LISP_H) character.h conslots.h console-tty.h console.h device.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systty.h toolbar.h window.h winslots.h
-cmdloop.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
-cmds.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h insdel.h mule-charset.h syntax.h
+buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h syntax.h
+callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h events.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h systime.h window.h winslots.h
+callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h file-coding.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h
+casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h syntax.h
+casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h
+chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h syntax.h
+cm.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-tty.h console.h device.h frame.h frameslots.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h syssignal.h systty.h toolbar.h window.h winslots.h
+cmdloop.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+cmds.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h syntax.h
 console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-console.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-data.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h mule-charset.h sysfloat.h syssignal.h
+console.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+data.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h sysfloat.h syssignal.h
 debug.o: $(LISP_H) bytecode.h debug.h
-device.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
+device.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
 dgif_lib.o: $(LISP_H) gifrlib.h sysfile.h
 dialog.o: $(LISP_H) conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-dired.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h elhash.h mule-charset.h ndir.h opaque.h regex.h syntax.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h
-doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h insdel.h keymap.h mule-charset.h sysfile.h
-doprnt.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h lstream.h mule-charset.h
+dired.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h elhash.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h opaque.h regex.h syntax.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h
+doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h insdel.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h sysfile.h
+doprnt.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
 dragdrop.o: $(LISP_H) dragdrop.h
 dumper.o: $(LISP_H) conslots.h console-stream.h console.h dumper.h elhash.h nt.h specifier.h sysfile.h systime.h syswindows.h
 dynarr.o: $(LISP_H)
 ecrt0.o: config.h
-editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
-eldap.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h eldap.h mule-charset.h opaque.h sysdep.h
+editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
+eldap.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h eldap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h sysdep.h
 elhash.o: $(LISP_H) bytecode.h elhash.h
 emacs-marshals.o: hash.h
 emacs-widget-accessors.o: 
-emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console.h device.h dumper.h frame.h frameslots.h glyphs.h gui.h mule-charset.h nt.h paths.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h winslots.h
-emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h toolbar.h window.h winslots.h
+emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h dumper.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h nt.h paths.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h winslots.h
+emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h toolbar.h window.h winslots.h
 esd.o: $(LISP_H) miscplay.h
-eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h commands.h conslots.h console.h mule-charset.h opaque.h
-event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-tty.h console-x.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h
-event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console.h device.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lstream.h macros.h menubar.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
-event-unixoid.o: $(LISP_H) character.h conslots.h console-stream.h console-tty.h console.h device.h events.h lstream.h mule-charset.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
-events.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console-tty.h console-x.h console.h device.h events-mod.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
-extents.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h debug.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h keymap.h mule-charset.h opaque.h process.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-faces.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-file-coding.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h elhash.h file-coding.h insdel.h lstream.h mule-ccl.h mule-charset.h opaque.h
-fileio.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h ndir.h nt.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h syswindows.h toolbar.h window.h winslots.h
-filelock.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h ndir.h paths.h sysdir.h sysfile.h syspwd.h syssignal.h
+eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h
+event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-tty.h console-x.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h
+event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lstream.h macros.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar.h mule-charset.h multibyte.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+event-unixoid.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-stream.h console-tty.h console.h device.h events.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
+events.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console-tty.h console-x.h console.h device.h events-mod.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+extents.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h debug.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h process.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+faces.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+file-coding.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h elhash.h file-coding.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h opaque.h
+fileio.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h nt.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h syswindows.h toolbar.h window.h winslots.h
+filelock.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h paths.h sysdir.h sysfile.h syspwd.h syssignal.h
 filemode.o: $(LISP_H) sysfile.h
 floatfns.o: $(LISP_H) sysfloat.h syssignal.h
-fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h systime.h toolbar.h window.h winslots.h
-font-lock.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h insdel.h mule-charset.h syntax.h
-frame.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h systime.h toolbar.h window.h winslots.h
+font-lock.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h syntax.h
+frame.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 free-hook.o: $(LISP_H) hash.h
 general.o: $(LISP_H)
 getloadavg.o: $(LISP_H) sysfile.h
 gif_io.o: config.h gifrlib.h sysfile.h
 glade.o: bytecode.h
-glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h
-glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h
+glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 gmalloc.o: config.h getpagesize.h
-gpmevent.o: $(LISP_H) character.h commands.h conslots.h console-tty.h console.h device.h events-mod.h events.h gpmevent.h lstream.h mule-charset.h process.h sysdep.h sysproc.h syssignal.h systime.h systty.h
+gpmevent.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console-tty.h console.h device.h events-mod.h events.h gpmevent.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h sysdep.h sysproc.h syssignal.h systime.h systty.h
 gtk-glue.o: 
-gtk-xemacs.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h elhash.h gui.h mule-charset.h
-gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gtk-xemacs.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h elhash.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
+gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 hash.o: $(LISP_H) hash.h
 hftctl.o: $(LISP_H)
 hpplay.o: $(LISP_H) nativesound.h
 imgproc.o: $(LISP_H) imgproc.h
-indent.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h conslots.h console-gtk.h console-msw.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mule-charset.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h sysdll.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window.h winslots.h xintrinsic.h
+indent.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console-msw.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h sysdll.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window.h winslots.h xintrinsic.h
 input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
-input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h
-keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h conslots.h console.h device.h elhash.h events-mod.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h elhash.h events-mod.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 lastfile.o: config.h
 libsst.o: $(LISP_H) libsst.h
-line-number.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h line-number.h mule-charset.h
+line-number.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h line-number.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
 linuxplay.o: $(LISP_H) miscplay.h nativesound.h sysfile.h syssignal.h
-lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h elhash.h file-coding.h lstream.h mule-charset.h opaque.h sysfile.h sysfloat.h
-lstream.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h insdel.h lstream.h mule-charset.h sysfile.h
-macros.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h elhash.h file-coding.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h sysfile.h sysfloat.h
+lstream.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h sysfile.h
+macros.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h macros.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 malloc.o: config.h getpagesize.h
-marker.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h
-md5.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h file-coding.h lstream.h mule-charset.h
-menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h keymap.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console-stream.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+marker.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
+md5.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h file-coding.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
+menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-stream.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 miscplay.o: $(LISP_H) miscplay.h sysfile.h syssignal.h
 nas.o: $(LISP_H) sysdep.h syssignal.h
-native-gtk-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-nt.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h ndir.h nt.h ntheap.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h
+native-gtk-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+nt.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h nt.h ntheap.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h
 ntheap.o: $(LISP_H) ntheap.h syswindows.h
 ntplay.o: $(LISP_H) nativesound.h nt.h sysfile.h systime.h syswindows.h
-ntproc.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h mule-charset.h nt.h ntheap.h process.h syscommctrl.h sysfile.h sysproc.h syssignal.h systime.h syswait.h syswindows.h
-objects.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+ntproc.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h nt.h ntheap.h process.h syscommctrl.h sysfile.h sysproc.h syssignal.h systime.h syswait.h syswindows.h
+objects.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h
 opaque.o: $(LISP_H) opaque.h
-postgresql.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h postgresql.h sysdep.h
-print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h character.h chartab.h conslots.h console-msw.h console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syssignal.h systty.h syswindows.h toolbar.h window.h winslots.h
-process-nt.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-msw.h console.h hash.h lstream.h mule-charset.h nt.h process.h procimpl.h syscommctrl.h sysdep.h systime.h syswindows.h
-process-unix.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
-process.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+postgresql.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h postgresql.h sysdep.h
+print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syssignal.h systty.h syswindows.h toolbar.h window.h winslots.h
+process-nt.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h hash.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h nt.h process.h procimpl.h syscommctrl.h sysdep.h systime.h syswindows.h
+process-unix.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+process.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
 profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h hash.h syssignal.h systime.h
 ralloc.o: $(LISP_H) getpagesize.h
 rangetab.o: $(LISP_H) rangetab.h
 realpath.o: $(LISP_H) syswindows.h
-redisplay-output.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console-tty.h console.h debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
-regex.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h regex.h syntax.h
-scrollbar.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-search.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h insdel.h mule-charset.h opaque.h regex.h syntax.h
-select.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h toolbar.h window.h winslots.h
+redisplay-output.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-tty.h console.h debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar.h mule-charset.h multibyte.h objects.h process.h redisplay.h scrollbar.h specifier.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+regex.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h regex.h syntax.h
+scrollbar.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+search.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h regex.h syntax.h
+select.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h toolbar.h window.h winslots.h
 sgiplay.o: $(LISP_H) libst.h
 sheap.o: $(LISP_H) sheap-adjust.h
 signal.o: $(LISP_H) conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
-sound.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-x.h console.h device.h mule-charset.h nativesound.h redisplay.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h
-specifier.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+sound.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h device.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h nativesound.h redisplay.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h
+specifier.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 strcat.o: config.h
 strcmp.o: config.h
 strcpy.o: config.h
@@ -209,18 +209,18 @@ strftime.o: $(LISP_H)
 sunOS-fix.o: config.h
 sunplay.o: $(LISP_H) nativesound.h sysdep.h syssignal.h
 sunpro.o: $(LISP_H)
-symbols.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h elhash.h mule-charset.h
-syntax.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h extents.h mule-charset.h syntax.h
-sysdep.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h ndir.h nt.h ntheap.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
+symbols.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h elhash.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
+syntax.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h extents.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h syntax.h
+sysdep.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h nt.h ntheap.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
 sysdll.o: config.h sysdll.h
 termcap.o: $(LISP_H) conslots.h console.h device.h
 terminfo.o: config.h
-tests.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h lstream.h mule-charset.h opaque.h
-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-tooltalk.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h elhash.h mule-charset.h process.h syssignal.h tooltalk.h
+tests.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h
+toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+tooltalk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h elhash.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h syssignal.h tooltalk.h
 tparam.o: config.h
 ui-byhand.o: gui.h
-undo.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h extents.h mule-charset.h
+undo.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h extents.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
 unexaix.o: $(LISP_H) getpagesize.h
 unexalpha.o: config.h
 unexapollo.o: config.h
@@ -237,8 +237,8 @@ unexmips.o: config.h getpagesize.h
 unexnt.o: $(LISP_H) nt.h ntheap.h systime.h syswindows.h
 unexsunos4.o: config.h
 vm-limit.o: $(LISP_H) mem-limits.h
-widget.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h
-win32.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h mule-charset.h syssignal.h systime.h syswindows.h
-window.o: $(LISP_H) buffer.h bufslots.h casetab.h character.h chartab.h commands.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+widget.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
+win32.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h syssignal.h systime.h syswindows.h
+window.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 xgccache.o: $(LISP_H) hash.h xgccache.h
 xmu.o: config.h
index fc78936..b9a6af4 100644 (file)
@@ -293,6 +293,10 @@ void Lstream_set_character_mode (Lstream *str);
 #ifdef MULE
 
 #ifndef BYTE_ASCII_P
+#include "multibyte.h"
+#endif
+
+#ifndef CHAR_ASCII_P
 #include "character.h"
 #endif
 
diff --git a/src/mb-1byte.h b/src/mb-1byte.h
new file mode 100644 (file)
index 0000000..82b84ed
--- /dev/null
@@ -0,0 +1,64 @@
+/* Header for 1-byte string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_MB_1BYTE_H
+#define _XEMACS_MB_1BYTE_H
+
+/* Maximum number of buffer bytes per Emacs character. */
+# define MAX_EMCHAR_LEN 1
+
+/************************************************************************/
+/*                     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(byte) 1
+
+
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+#define REP_BYTES_BY_FIRST_BYTE(fb) 1
+
+\f
+/* ---------------------------------------------------------------------- */
+/* (A) For working with charptr's (pointers to internally-formatted text) */
+/* ---------------------------------------------------------------------- */
+
+#define VALID_CHARPTR_P(ptr) 1
+#define VALIDATE_CHARPTR_BACKWARD(ptr)
+#define VALIDATE_CHARPTR_FORWARD(ptr)
+
+/* -------------------------------------------------------------------- */
+/* (C) For retrieving or changing the character pointed to by a charptr */
+/* -------------------------------------------------------------------- */
+
+#define charptr_emchar(ptr)            ((Emchar) (ptr)[0])
+#define set_charptr_emchar(ptr, x)     ((ptr)[0] = (Bufbyte) (x), 1)
+#define charptr_copy_char(ptr, ptr2)   ((ptr2)[0] = *(ptr), 1)
+
+#endif /* _XEMACS_MB_1BYTE_H */
diff --git a/src/mb-lb.h b/src/mb-lb.h
new file mode 100644 (file)
index 0000000..26d9359
--- /dev/null
@@ -0,0 +1,35 @@
+/* Header for leading-byte based string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_MB_LB_H
+#define _XEMACS_MB_LB_H
+
+#define MULTIBYTE
+
+/* Maximum number of buffer bytes per Emacs character. */
+#define MAX_EMCHAR_LEN 4
+
+
+#include "mb-multibyte.h"
+
+#endif /* _XEMACS_MB_LB_H */
diff --git a/src/mb-multibyte.h b/src/mb-multibyte.h
new file mode 100644 (file)
index 0000000..3268353
--- /dev/null
@@ -0,0 +1,126 @@
+/* Header for generic multibyte string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_MB_MULTIBYTE_H
+#define _XEMACS_MB_MULTIBYTE_H
+
+/************************************************************************/
+/*                     Operations on individual bytes                   */
+/*                             of any format                            */
+/************************************************************************/
+
+/* These are carefully designed to work if BYTE is signed or unsigned. */
+/* Note that SPC and DEL are considered ASCII, not control. */
+
+#define BYTE_ASCII_P(byte) (((byte) & ~0x7f) == 0)
+#define BYTE_C0_P(byte)    (((byte) & ~0x1f) == 0)
+#define BYTE_C1_P(byte)    (((byte) & ~0x1f) == 0x80)
+
+
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+/* Is this character represented by more than one byte in a string? */
+
+#define CHAR_MULTIBYTE_P(c) ((c) >= 0x80)
+
+
+/* ---------------------------------------------------------------------- */
+/* (A) For working with charptr's (pointers to internally-formatted text) */
+/* ---------------------------------------------------------------------- */
+
+# define VALID_CHARPTR_P(ptr) BUFBYTE_FIRST_BYTE_P (* (unsigned char *) ptr)
+
+#define VALIDATE_CHARPTR_BACKWARD(ptr) do {    \
+  while (!VALID_CHARPTR_P (ptr)) ptr--;                \
+} while (0)
+
+/* This needs to be trickier to avoid the possibility of running off
+   the end of the string. */
+
+#define VALIDATE_CHARPTR_FORWARD(ptr) do {     \
+  Bufbyte *vcf_ptr = (ptr);                    \
+  VALIDATE_CHARPTR_BACKWARD (vcf_ptr);         \
+  if (vcf_ptr != (ptr))                                \
+    {                                          \
+      (ptr) = vcf_ptr;                         \
+      INC_CHARPTR (ptr);                       \
+    }                                          \
+} while (0)
+
+/* -------------------------------------------------------------------- */
+/* (C) For retrieving or changing the character pointed to by a charptr */
+/* -------------------------------------------------------------------- */
+
+#define simple_charptr_emchar(ptr)             ((Emchar) (ptr)[0])
+#define simple_set_charptr_emchar(ptr, x)      ((ptr)[0] = (Bufbyte) (x), 1)
+#define simple_charptr_copy_char(ptr, ptr2)    ((ptr2)[0] = *(ptr), 1)
+
+Emchar non_ascii_charptr_emchar (const Bufbyte *ptr);
+Bytecount non_ascii_set_charptr_emchar (Bufbyte *ptr, Emchar c);
+Bytecount non_ascii_charptr_copy_char (const Bufbyte *src, Bufbyte *dst);
+
+INLINE_HEADER Emchar charptr_emchar (const Bufbyte *ptr);
+INLINE_HEADER Emchar
+charptr_emchar (const Bufbyte *ptr)
+{
+  return BYTE_ASCII_P (*ptr) ?
+    simple_charptr_emchar (ptr) :
+    non_ascii_charptr_emchar (ptr);
+}
+
+INLINE_HEADER Bytecount set_charptr_emchar (Bufbyte *ptr, Emchar x);
+INLINE_HEADER Bytecount
+set_charptr_emchar (Bufbyte *ptr, Emchar x)
+{
+  return !CHAR_MULTIBYTE_P (x) ?
+    simple_set_charptr_emchar (ptr, x) :
+    non_ascii_set_charptr_emchar (ptr, x);
+}
+
+INLINE_HEADER Bytecount
+charptr_copy_char (const Bufbyte *src, Bufbyte *dst);
+INLINE_HEADER Bytecount
+charptr_copy_char (const Bufbyte *src, Bufbyte *dst)
+{
+  return BYTE_ASCII_P (*src) ?
+    simple_charptr_copy_char (src, dst) :
+    non_ascii_charptr_copy_char (src, dst);
+}
+
+
+/************************************************************************/
+/*                            Exported functions                        */
+/************************************************************************/
+
+Emchar Lstream_get_emchar_1 (Lstream *stream, int first_char);
+int Lstream_fput_emchar (Lstream *stream, Emchar ch);
+void Lstream_funget_emchar (Lstream *stream, Emchar ch);
+
+int copy_internal_to_external (const Bufbyte *internal, Bytecount len,
+                              unsigned char *external);
+Bytecount copy_external_to_internal (const unsigned char *external,
+                                    int len, Bufbyte *internal);
+
+#endif /* _XEMACS_MB_MULTIBYTE_H */
diff --git a/src/mb-utf-8.h b/src/mb-utf-8.h
new file mode 100644 (file)
index 0000000..84a8382
--- /dev/null
@@ -0,0 +1,78 @@
+/* Header for UTF-8 string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Author: MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_MB_UTF_8_H
+#define _XEMACS_MB_UTF_8_H
+
+#define MULTIBYTE
+
+/* Maximum number of buffer bytes per Emacs character. */
+#define MAX_EMCHAR_LEN 6
+
+/************************************************************************/
+/*                     Operations on individual bytes                   */
+/*                       in a Mule-formatted string                     */
+/************************************************************************/
+
+/* Does BYTE represent the first byte of a character? */
+
+INLINE_HEADER int BUFBYTE_FIRST_BYTE_P (Bufbyte byte);
+INLINE_HEADER int
+BUFBYTE_FIRST_BYTE_P (Bufbyte byte)
+{
+  return (byte <= 0x7f) || (0xc0 <= byte);
+}
+
+\f
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+/* Is this character represented by more than one byte in a string? */
+
+#define CHAR_MULTIBYTE_P(c) ((c) >= 0x80)
+
+
+/* Number of bytes in the string representation of a character. */
+INLINE_HEADER int REP_BYTES_BY_FIRST_BYTE (int fb);
+INLINE_HEADER int
+REP_BYTES_BY_FIRST_BYTE (int fb)
+{
+  if ( fb < 0xc0 )
+    return 1;
+  else if ( fb < 0xe0 )
+    return 2;
+  else if ( fb < 0xf0 )
+    return 3;
+  else if ( fb < 0xf8 )
+    return 4;
+  else if ( fb < 0xfc )
+    return 5;
+  else
+    return 6;
+}
+
+
+#include "mb-multibyte.h"
+
+#endif /* _XEMACS_MB_UTF_8_H */
index 0c13b13..a1a4083 100644 (file)
@@ -1350,6 +1350,7 @@ ccl_driver (struct ccl_program *ccl,
              break;
 #endif
 
+#ifndef UTF2000
            case CCL_WriteMultibyteChar2:
              i = reg[RRR]; /* charset */
              if (i == LEADING_BYTE_ASCII)
@@ -1365,6 +1366,7 @@ ccl_driver (struct ccl_program *ccl,
              CCL_WRITE_CHAR (i);
 
              break;
+#endif
 
            case CCL_TranslateCharacter:
 #if 0
index 35e1166..9af1db5 100644 (file)
@@ -1952,7 +1952,7 @@ Leading-code of private TYPE9N charset of column-width 1.
 #endif
 
 #ifdef UTF2000
-  Vutf_2000_version = build_string("0.5 (Tennōji)");
+  Vutf_2000_version = build_string("0.6 (Tōbushijō-mae)");
   DEFVAR_LISP ("utf-2000-version", &Vutf_2000_version /*
 Version number of UTF-2000.
 */ );
index 2942d2c..df5f8a1 100644 (file)
@@ -613,11 +613,7 @@ REP_BYTES_BY_FIRST_BYTE (Bufbyte fb)
 /*                        Dealing with characters                       */
 /************************************************************************/
 
-/* Is this character represented by more than one byte in a string? */
-
-#define CHAR_MULTIBYTE_P(c) ((c) >= 0x80)
-
-#define CHAR_ASCII_P(c) (!CHAR_MULTIBYTE_P (c))
+#define CHAR_ASCII_P(ch) ((ch) <= 0x7F)
 
 /* The bit fields of character are divided into 3 parts:
    FIELD1(5bits):FIELD2(7bits):FIELD3(7bits) */
diff --git a/src/multibyte.h b/src/multibyte.h
new file mode 100644 (file)
index 0000000..7571649
--- /dev/null
@@ -0,0 +1,203 @@
+/* Header for multibyte buffer/string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Authorship:
+
+   Ben Wing: almost completely rewritten for Mule, 19.12 in buffer.h.
+   MORIOKA Tomohiko: rewritten for UTF-2000.
+
+ */
+
+#ifndef _XEMACS_MULTIBYTE_H
+#define _XEMACS_MULTIBYTE_H
+
+/************************************************************************/
+/*                                                                     */
+/*                working with raw internal-format data                */
+/*                                                                     */
+/************************************************************************/
+
+/*
+   Use the following functions/macros on contiguous strings of data.
+   If the text you're operating on is known to come from a buffer, use
+   the buffer-level functions in buffer.h -- they know about the gap
+   and may be more efficient.
+
+
+  (A) For working with charptr's (pointers to internally-formatted text):
+  -----------------------------------------------------------------------
+
+   VALID_CHARPTR_P (ptr):
+       Given a charptr, does it point to the beginning of a character?
+
+   ASSERT_VALID_CHARPTR (ptr):
+       If error-checking is enabled, assert that the given charptr
+       points to the beginning of a character.  Otherwise, do nothing.
+
+   INC_CHARPTR (ptr):
+       Given a charptr (assumed to point at the beginning of a character),
+       modify that pointer so it points to the beginning of the next
+       character.
+
+   DEC_CHARPTR (ptr):
+       Given a charptr (assumed to point at the beginning of a
+       character or at the very end of the text), modify that pointer
+       so it points to the beginning of the previous character.
+
+   VALIDATE_CHARPTR_BACKWARD (ptr):
+       Make sure that PTR is pointing to the beginning of a character.
+       If not, back up until this is the case.   Note that there are not
+       too many places where it is legitimate to do this sort of thing.
+       It's an error if you're passed an "invalid" char * pointer.
+       NOTE: PTR *must* be pointing to a valid part of the string (i.e.
+       not the very end, unless the string is zero-terminated or
+       something) in order for this function to not cause crashes.
+
+   VALIDATE_CHARPTR_FORWARD (ptr):
+       Make sure that PTR is pointing to the beginning of a character.
+       If not, move forward until this is the case.  Note that there
+       are not too many places where it is legitimate to do this sort
+       of thing.  It's an error if you're passed an "invalid" char *
+       pointer.
+
+
+   (B) For working with the length (in bytes and characters) of a
+       section of internally-formatted text:
+   --------------------------------------------------------------
+
+   bytecount_to_charcount (ptr, nbi):
+       Given a pointer to a text string and a length in bytes,
+       return the equivalent length in characters.
+
+   charcount_to_bytecount (ptr, nch):
+       Given a pointer to a text string and a length in characters,
+       return the equivalent length in bytes.
+
+   charptr_n_addr (ptr, n):
+       Return a pointer to the beginning of the character offset N
+       (in characters) from PTR.
+
+   MAX_EMCHAR_LEN:
+       Maximum number of buffer bytes per Emacs character.
+
+
+   (C) For retrieving or changing the character pointed to by a charptr:
+   ---------------------------------------------------------------------
+
+   charptr_emchar (ptr):
+       Retrieve the character pointed to by PTR as an Emchar.
+
+   charptr_emchar_n (ptr, n):
+       Retrieve the character at offset N (in characters) from PTR,
+       as an Emchar.
+
+   set_charptr_emchar (ptr, ch):
+       Store the character CH (an Emchar) as internally-formatted
+       text starting at PTR.  Return the number of bytes stored.
+
+   charptr_copy_char (ptr, ptr2):
+       Retrieve the character pointed to by PTR and store it as
+       internally-formatted text in PTR2.
+
+*/
+
+#ifdef UTF2000
+# include "mb-utf-8.h"
+#elif defined(MULE)
+# include "mb-lb.h"
+#else
+# include "mb-1byte.h"
+#endif
+
+/* ---------------------------------------------------------------------- */
+/* (A) For working with charptr's (pointers to internally-formatted text) */
+/* ---------------------------------------------------------------------- */
+
+#ifdef ERROR_CHECK_BUFPOS
+# define ASSERT_VALID_CHARPTR(ptr) assert (VALID_CHARPTR_P (ptr))
+#else
+# define ASSERT_VALID_CHARPTR(ptr)
+#endif
+
+/* Note that INC_CHARPTR() and DEC_CHARPTR() have to be written in
+   completely separate ways.  INC_CHARPTR() cannot use the DEC_CHARPTR()
+   trick of looking for a valid first byte because it might run off
+   the end of the string.  DEC_CHARPTR() can't use the INC_CHARPTR()
+   method because it doesn't have easy access to the first byte of
+   the character it's moving over. */
+
+#define REAL_INC_CHARPTR(ptr) \
+  ((void) ((ptr) += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr))))
+
+#define REAL_INC_CHARBYTIND(ptr, pos) \
+  (pos += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr)))
+
+#define REAL_DEC_CHARPTR(ptr) do {     \
+  (ptr)--;                             \
+} while (!VALID_CHARPTR_P (ptr))
+
+#ifdef ERROR_CHECK_BUFPOS
+#define INC_CHARPTR(ptr) do {          \
+  ASSERT_VALID_CHARPTR (ptr);          \
+  REAL_INC_CHARPTR (ptr);              \
+} while (0)
+
+#define INC_CHARBYTIND(ptr, pos) do {          \
+  ASSERT_VALID_CHARPTR (ptr);          \
+  REAL_INC_CHARBYTIND (ptr,pos);               \
+} while (0)
+
+#define DEC_CHARPTR(ptr) do {                  \
+  const Bufbyte *dc_ptr1 = (ptr);              \
+  const Bufbyte *dc_ptr2 = dc_ptr1;            \
+  REAL_DEC_CHARPTR (dc_ptr2);                  \
+  assert (dc_ptr1 - dc_ptr2 ==                 \
+         REP_BYTES_BY_FIRST_BYTE (*dc_ptr2));  \
+  (ptr) = (Bufbyte *) dc_ptr2;                         \
+} while (0)
+
+#else /* ! ERROR_CHECK_BUFPOS */
+#define INC_CHARBYTIND(ptr, pos) REAL_INC_CHARBYTIND (ptr, pos)
+#define INC_CHARPTR(ptr) REAL_INC_CHARPTR (ptr)
+#define DEC_CHARPTR(ptr) REAL_DEC_CHARPTR (ptr)
+#endif /* ! ERROR_CHECK_BUFPOS */
+
+/* -------------------------------------------------------------- */
+/* (B) For working with the length (in bytes and characters) of a */
+/*     section of internally-formatted text                      */
+/* -------------------------------------------------------------- */
+
+INLINE_HEADER const Bufbyte *
+charptr_n_addr (const Bufbyte *ptr, Charcount offset);
+INLINE_HEADER const Bufbyte *
+charptr_n_addr (const Bufbyte *ptr, Charcount offset)
+{
+  return ptr + charcount_to_bytecount (ptr, offset);
+}
+
+/* -------------------------------------------------------------------- */
+/* (C) For retrieving or changing the character pointed to by a charptr */
+/* -------------------------------------------------------------------- */
+
+#define charptr_emchar_n(ptr, offset) \
+  charptr_emchar (charptr_n_addr (ptr, offset))
+
+#endif /* _XEMACS_MULTIBYTE_H */
index 7c5f447..f81285c 100644 (file)
@@ -1318,7 +1318,11 @@ search_buffer (struct buffer *buf, Lisp_Object string, Bufpos bufpos,
            {
              /* Keep track of which character set row
                 contains the characters that need translation.  */
+#ifdef UTF2000
+             int charset_base_code = c >> 6;
+#else
              int charset_base_code = c & ~CHAR_FIELD3_MASK;
+#endif
              if (charset_base == -1)
                charset_base = charset_base_code;
              else if (charset_base != charset_base_code)
@@ -1618,7 +1622,11 @@ boyer_moore (struct buffer *buf, Bufbyte *base_pat, Bytecount len,
              while (!BUFBYTE_FIRST_BYTE_P (*charstart))
                charstart--;
              untranslated = charptr_emchar (charstart);
+#ifdef UTF2000
+             if (charset_base == (untranslated >> 6))
+#else
              if (charset_base == (untranslated & ~CHAR_FIELD3_MASK))
+#endif
                {
                  ch = TRANSLATE (trt, untranslated);
                  if (!BUFBYTE_FIRST_BYTE_P (*ptr))