]> code.delx.au - gnu-emacs/blobdiff - src/character.h
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-86
[gnu-emacs] / src / character.h
index 9448d8bbfa9d491071dede9bdc9aa98d4937109f..255afb2a0b13f9b1b9653166626f2441cae11d2f 100644 (file)
@@ -52,10 +52,6 @@ Boston, MA 02111-1307, USA.  */
 #define MAX_4_BYTE_CHAR 0x1FFFFF
 #define MAX_5_BYTE_CHAR 0x3FFF7F
 
-/* Leading code range of Latin-1 chars.  */
-#define LEADING_CODE_LATIN_1_MIN 0xC2
-#define LEADING_CODE_LATIN_1_MAX 0xC3
-
 /* Nonzero iff C is a character that corresponds to a raw 8-bit
    byte.  */
 #define CHAR_BYTE8_P(c) ((c) > MAX_5_BYTE_CHAR)
@@ -81,6 +77,12 @@ extern int unibyte_to_multibyte_table[256];
 #define unibyte_char_to_multibyte(c)   \
   ((c) < 256 ? unibyte_to_multibyte_table[(c)] : (c))
 
+/* Nth element is 1 iff unibyte char N can be mapped to a multibyte
+   char.  */
+extern char unibyte_has_multibyte_table[256];
+
+#define UNIBYTE_CHAR_HAS_MULTIBYTE_P(c) (unibyte_has_multibyte_table[(c)])
+
 /* If C is not ASCII, make it unibyte. */
 #define MAKE_CHAR_UNIBYTE(c)   \
   do {                         \
@@ -95,7 +97,8 @@ extern int unibyte_to_multibyte_table[256];
 /* This is the maximum byte length of multibyte form.  */
 #define MAX_MULTIBYTE_LENGTH 5
 
-/* Return a Lisp character whose character code is C. */
+/* Return a Lisp character whose character code is C.  It assumes C is
+   a valid character code.  */
 #define make_char(c) make_number (c)
 
 /* Nonzero iff C is an ASCII byte.  */
@@ -184,7 +187,7 @@ extern int unibyte_to_multibyte_table[256];
 
 #define BYTE8_STRING(b, p)                     \
   ((p)[0] = (0xC0 | (((b) >> 6) & 0x01)),      \
-   (p)[1] = (0x80 | ((c) & 0x3F)),             \
+   (p)[1] = (0x80 | ((b) & 0x3F)),             \
    2)
 
 
@@ -348,7 +351,7 @@ extern int unibyte_to_multibyte_table[256];
    : string_char ((p), NULL, &actual_len))
 
 
-/* Like STRING_CHAR but advacen P to the end of multibyte form.  */
+/* Like STRING_CHAR but advance P to the end of multibyte form.  */
 
 #define STRING_CHAR_ADVANCE(p)                                 \
   (!((p)[0] & 0x80)                                            \
@@ -390,7 +393,8 @@ extern int unibyte_to_multibyte_table[256];
     }                                                                  \
   else
 
-/* Like FETCH_STRING_CHAR_ADVANCE */
+/* Like FETCH_STRING_CHAR_ADVANCE but return a multibyte character eve
+   if STRING is unibyte.  */
 
 #define FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE(OUTPUT, STRING, CHARIDX, BYTEIDX) \
   if (1)                                                                     \
@@ -452,7 +456,7 @@ extern int unibyte_to_multibyte_table[256];
   else
 
 
-/* Like FETCH_CHAR_ADVANCE but assumes STRING is multibyte.  */
+/* Like FETCH_CHAR_ADVANCE but assumes the current buffer is multibyte.  */
 
 #define FETCH_CHAR_ADVANCE_NO_CHECK(OUTPUT, CHARIDX, BYTEIDX)  \
   if (1)                                                       \
@@ -555,6 +559,9 @@ extern int unibyte_to_multibyte_table[256];
   } while (0)
 
 
+/* If C is a character to be unified with a Unicode character, return
+   the unified Unicode character.  */
+
 #define MAYBE_UNIFY_CHAR(c)                                    \
   if (c > MAX_UNICODE_CHAR                                     \
       && CHAR_TABLE_P (Vchar_unify_table))                     \
@@ -651,3 +658,6 @@ extern Lisp_Object Vchar_script_table;
   do { (sym) = intern ((name)); staticpro (&(sym)); } while (0)
 
 #endif /* EMACS_CHARACTER_H */
+
+/* arch-tag: 4ef86004-2eff-4073-8cea-cfcbcf7188ac
+   (do not change this comment) */