(char_encode_big5): Support entity-reference.
[chise/xemacs-chise.git-] / src / chartab.h
index faae39f..e6d637b 100644 (file)
@@ -40,6 +40,8 @@ EXFUN (Fdecode_char, 3);
 
 EXFUN (Fput_char_attribute, 3);
 
+EXFUN (Ffind_char, 1);
+
 
 /************************************************************************/
 /*                         Char-ID Tables                              */
@@ -166,6 +168,7 @@ struct Lisp_Char_Table
   Lisp_Object table;
   Lisp_Object default_value;
   Lisp_Object name;
+  Lisp_Object db;
   unsigned char unloaded;
 #else
   Lisp_Object ascii[NUM_ASCII_CHARS];
@@ -351,30 +354,35 @@ Lisp_Object
 char_attribute_system_db_file (Lisp_Object key_type, Lisp_Object attribute,
                               int writing_mode);
 
-Lisp_Object load_char_attribute_maybe (Emchar ch, Lisp_Object attribute);
+Lisp_Object load_char_attribute_maybe (Lisp_Char_Table* cit, Emchar ch);
 #endif
 
-INLINE_HEADER Lisp_Object get_char_id_table (Lisp_Char_Table* cit, Emchar ch);
+INLINE_HEADER Lisp_Object
+get_char_id_table_0 (Lisp_Char_Table* cit, Emchar ch);
+INLINE_HEADER Lisp_Object
+get_char_id_table_0 (Lisp_Char_Table* cit, Emchar ch)
+{
+  return get_byte_table (get_byte_table
+                        (get_byte_table
+                         (get_byte_table
+                          (cit->table,
+                           (unsigned char)(ch >> 24)),
+                          (unsigned char) (ch >> 16)),
+                         (unsigned char)  (ch >> 8)),
+                        (unsigned char)    ch);
+}
+
+INLINE_HEADER Lisp_Object
+get_char_id_table (Lisp_Char_Table* cit, Emchar ch);
 INLINE_HEADER Lisp_Object
 get_char_id_table (Lisp_Char_Table* cit, Emchar ch)
 {
-  Lisp_Object val = get_byte_table (get_byte_table
-                                   (get_byte_table
-                                    (get_byte_table
-                                     (cit->table,
-                                      (unsigned char)(ch >> 24)),
-                                     (unsigned char) (ch >> 16)),
-                                    (unsigned char)  (ch >> 8)),
-                                   (unsigned char)    ch);
+  Lisp_Object val = get_char_id_table_0 (cit, ch);
+
 #ifdef HAVE_DATABASE
   if (EQ (val, Qunloaded))
     {
-      Lisp_Object attribute = CHAR_TABLE_NAME (cit);
-
-      if (!NILP (attribute))
-       val = load_char_attribute_maybe (ch, attribute);
-      else
-       val = Qunbound;
+      val = load_char_attribute_maybe (cit, ch);
       put_char_id_table_0 (cit, ch, val);
     }
 #endif