#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)
#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 { \
/* 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. */
#define BYTE8_STRING(b, p) \
((p)[0] = (0xC0 | (((b) >> 6) & 0x01)), \
- (p)[1] = (0x80 | ((c) & 0x3F)), \
+ (p)[1] = (0x80 | ((b) & 0x3F)), \
2)
: 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) \
} \
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) \
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) \
} 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)) \
do { (sym) = intern ((name)); staticpro (&(sym)); } while (0)
#endif /* EMACS_CHARACTER_H */
+
+/* arch-tag: 4ef86004-2eff-4073-8cea-cfcbcf7188ac
+ (do not change this comment) */