This file was written independently of the FSF implementation,
and is not compatible. */
-#ifndef _MULE_CHARTAB_H
-#define _MULE_CHARTAB_H
+#ifndef INCLUDED_chartab_h_
+#define INCLUDED_chartab_h_
/************************************************************************/
/* Char Tables */
#ifdef MULE
-DECLARE_LRECORD (char_table_entry, struct Lisp_Char_Table_Entry);
-#define XCHAR_TABLE_ENTRY(x) \
- XRECORD (x, char_table_entry, struct Lisp_Char_Table_Entry)
-#define XSETCHAR_TABLE_ENTRY(x, p) XSETRECORD (x, p, char_table_entry)
-#define CHAR_TABLE_ENTRYP(x) RECORDP (x, char_table_entry)
-/* #define CHECK_CHAR_TABLE_ENTRY(x) CHECK_RECORD (x, char_table_entry)
- char table entries should never escape to Lisp */
-
struct Lisp_Char_Table_Entry
{
struct lcrecord_header header;
variable-size and add an offset value into this structure. */
Lisp_Object level2[96];
};
+typedef struct Lisp_Char_Table_Entry Lisp_Char_Table_Entry;
-#endif /* MULE */
-
-DECLARE_LRECORD (char_table, struct Lisp_Char_Table);
-#define XCHAR_TABLE(x) \
- XRECORD (x, char_table, struct Lisp_Char_Table)
-#define XSETCHAR_TABLE(x, p) XSETRECORD (x, p, char_table)
-#define CHAR_TABLEP(x) RECORDP (x, char_table)
-#define CHECK_CHAR_TABLE(x) CHECK_RECORD (x, char_table)
-#define CONCHECK_CHAR_TABLE(x) CONCHECK_RECORD (x, char_table)
+DECLARE_LRECORD (char_table_entry, Lisp_Char_Table_Entry);
+#define XCHAR_TABLE_ENTRY(x) \
+ XRECORD (x, char_table_entry, Lisp_Char_Table_Entry)
+#define XSETCHAR_TABLE_ENTRY(x, p) XSETRECORD (x, p, char_table_entry)
+#define CHAR_TABLE_ENTRYP(x) RECORDP (x, char_table_entry)
+/* #define CHECK_CHAR_TABLE_ENTRY(x) CHECK_RECORD (x, char_table_entry)
+ char table entries should never escape to Lisp */
-#define CHAR_TABLE_TYPE(ct) ((ct)->type)
-#define XCHAR_TABLE_TYPE(ct) CHAR_TABLE_TYPE (XCHAR_TABLE (ct))
+#endif /* MULE */
enum char_table_type
{
Lisp_Object mirror_table;
Lisp_Object next_table; /* DO NOT mark through this. */
};
+typedef struct Lisp_Char_Table Lisp_Char_Table;
+
+DECLARE_LRECORD (char_table, Lisp_Char_Table);
+#define XCHAR_TABLE(x) XRECORD (x, char_table, Lisp_Char_Table)
+#define XSETCHAR_TABLE(x, p) XSETRECORD (x, p, char_table)
+#define CHAR_TABLEP(x) RECORDP (x, char_table)
+#define CHECK_CHAR_TABLE(x) CHECK_RECORD (x, char_table)
+#define CONCHECK_CHAR_TABLE(x) CONCHECK_RECORD (x, char_table)
+
+#define CHAR_TABLE_TYPE(ct) ((ct)->type)
+#define XCHAR_TABLE_TYPE(ct) CHAR_TABLE_TYPE (XCHAR_TABLE (ct))
#ifdef MULE
-Lisp_Object get_non_ascii_char_table_value (struct Lisp_Char_Table *ct,
- int leading_byte,
- Emchar c);
+Lisp_Object get_non_ascii_char_table_value (Lisp_Char_Table *ct,
+ Charset_ID leading_byte,
+ Emchar c);
-INLINE Lisp_Object
-CHAR_TABLE_NON_ASCII_VALUE_UNSAFE (struct Lisp_Char_Table *ct, Emchar ch);
-INLINE Lisp_Object
-CHAR_TABLE_NON_ASCII_VALUE_UNSAFE (struct Lisp_Char_Table *ct, Emchar ch)
+INLINE_HEADER Lisp_Object
+CHAR_TABLE_NON_ASCII_VALUE_UNSAFE (Lisp_Char_Table *ct, Emchar ch);
+INLINE_HEADER Lisp_Object
+CHAR_TABLE_NON_ASCII_VALUE_UNSAFE (Lisp_Char_Table *ct, Emchar ch)
{
- unsigned char lb = CHAR_LEADING_BYTE (ch);
+#ifdef UTF2000
+ Charset_ID lb = CHAR_CHARSET_ID (ch);
+#else
+ Charset_ID lb = CHAR_LEADING_BYTE (ch);
+#endif
if (!CHAR_TABLE_ENTRYP ((ct)->level1[lb - MIN_LEADING_BYTE]))
return (ct)->level1[lb - MIN_LEADING_BYTE];
else
#endif /* not MULE */
+#define XCHAR_TABLE_VALUE_UNSAFE(ct, ch) \
+ CHAR_TABLE_VALUE_UNSAFE (XCHAR_TABLE (ct), ch)
+
enum chartab_range_type
{
CHARTAB_RANGE_ALL,
int row;
};
-void fill_char_table (struct Lisp_Char_Table *ct, Lisp_Object value);
-void put_char_table (struct Lisp_Char_Table *ct, struct chartab_range *range,
+void fill_char_table (Lisp_Char_Table *ct, Lisp_Object value);
+void put_char_table (Lisp_Char_Table *ct, struct chartab_range *range,
Lisp_Object val);
-Lisp_Object get_char_table (Emchar, struct Lisp_Char_Table *);
-int map_char_table (struct Lisp_Char_Table *ct,
+Lisp_Object get_char_table (Emchar, Lisp_Char_Table *);
+int map_char_table (Lisp_Char_Table *ct,
struct chartab_range *range,
int (*fn) (struct chartab_range *range,
Lisp_Object val, void *arg),
#endif /* MULE */
-#endif /* _MULE_CHARTAB_H */
+#endif /* INCLUDED_chartab_h_ */