- return char_code_table_hash (cte->table, depth + 1);
-}
-
-static const struct lrecord_description char_code_table_description[] = {
- { XD_LISP_OBJECT, offsetof(struct Lisp_Char_Code_Table, table), 1 },
- { XD_END }
-};
-
-DEFINE_LRECORD_IMPLEMENTATION ("char-code-table", char_code_table,
- mark_char_code_table,
- internal_object_printer,
- 0, char_code_table_equal,
- char_code_table_hash,
- char_code_table_description,
- struct Lisp_Char_Code_Table);
-
-static Lisp_Object
-make_char_code_table (Lisp_Object initval)
-{
- Lisp_Object obj;
- struct Lisp_Char_Code_Table *cte =
- alloc_lcrecord_type (struct Lisp_Char_Code_Table,
- &lrecord_char_code_table);
-
- cte->table = make_char_byte_table (initval);
-
- XSETCHAR_CODE_TABLE (obj, cte);
- return obj;
-}
-
-static Lisp_Object
-copy_char_code_table (Lisp_Object entry)
-{
- struct Lisp_Char_Code_Table *cte = XCHAR_CODE_TABLE (entry);
- Lisp_Object obj;
- struct Lisp_Char_Code_Table *ctenew =
- alloc_lcrecord_type (struct Lisp_Char_Code_Table,
- &lrecord_char_code_table);
-
- ctenew->table = copy_char_byte_table (cte->table);
- XSETCHAR_CODE_TABLE (obj, ctenew);
- return obj;
-}
-
-
-Lisp_Object
-get_char_code_table (Emchar ch, Lisp_Object table)
-{
- unsigned int code = ch;
- struct Lisp_Char_Byte_Table* cpt
- = XCHAR_BYTE_TABLE (XCHAR_CODE_TABLE (table)->table);
- Lisp_Object ret = cpt->property [(unsigned char)(code >> 24)];
-
- if (CHAR_BYTE_TABLE_P (ret))
- cpt = XCHAR_BYTE_TABLE (ret);
- else
- return ret;
-
- ret = cpt->property [(unsigned char) (code >> 16)];
- if (CHAR_BYTE_TABLE_P (ret))
- cpt = XCHAR_BYTE_TABLE (ret);
- else
- return ret;
-
- ret = cpt->property [(unsigned char) (code >> 8)];
- if (CHAR_BYTE_TABLE_P (ret))
- cpt = XCHAR_BYTE_TABLE (ret);
- else
- return ret;
-
- return cpt->property [(unsigned char) code];
-}
-
-void
-put_char_code_table (Emchar ch, Lisp_Object value, Lisp_Object table)
-{
- unsigned int code = ch;
- struct Lisp_Char_Byte_Table* cpt1
- = XCHAR_BYTE_TABLE (XCHAR_CODE_TABLE (table)->table);
- Lisp_Object ret = cpt1->property[(unsigned char)(code >> 24)];
-
- if (CHAR_BYTE_TABLE_P (ret))
- {
- struct Lisp_Char_Byte_Table* cpt2 = XCHAR_BYTE_TABLE (ret);
-
- ret = cpt2->property[(unsigned char)(code >> 16)];
- if (CHAR_BYTE_TABLE_P (ret))