update.
[chise/xemacs-chise.git.1] / src / chartab.h
index c44541e..a0c5bd6 100644 (file)
@@ -1,7 +1,8 @@
 /* Declarations having to do with Mule char tables.
    Copyright (C) 1992 Free Software Foundation, Inc.
    Copyright (C) 1995 Sun Microsystems, Inc.
-   Copyright (C) 1999,2000,2001,2002,2003,2004 MORIOKA Tomohiko
+   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2010, 2013, 2016
+     MORIOKA Tomohiko
 
 This file is part of XEmacs.
 
@@ -37,6 +38,8 @@ Boston, MA 02111-1307, USA.  */
 #  else /* HAVE_LIBCHISE */
 #    include "database.h"
 #  endif /* not HAVE_LIBCHISE */
+#  define USE_CONCORD_OBJECT_SYSTEM 1
+#  define USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE 1
 #endif
 
 EXFUN (Fmake_char, 3);
@@ -44,6 +47,8 @@ EXFUN (Fdecode_char, 4);
 
 EXFUN (Fput_char_attribute, 3);
 
+EXFUN (Fdefine_char, 1);
+
 EXFUN (Ffind_char, 1);
 
 extern Lisp_Object Qdowncase, Qflippedcase, Q_lowercase, Q_uppercase;
@@ -54,6 +59,17 @@ extern CHISE_DS *default_chise_data_source;
 int open_chise_data_source_maybe (void);
 #endif
 
+#if defined(UTF2000) || defined(HAVE_CONCORD)
+extern Lisp_Object Q_denotational;
+extern Lisp_Object Q_denotational_from;
+extern Lisp_Object Q_subsumptive;
+extern Lisp_Object Q_subsumptive_from;
+#endif
+
+#ifdef HAVE_CONCORD
+extern Lisp_Object Vchise_system_db_directory;
+#endif
+
 /************************************************************************/
 /*                         Char-ID Tables                              */
 /************************************************************************/
@@ -363,6 +379,10 @@ put_char_id_table_0 (Lisp_Char_Table* cit, Emchar code, Lisp_Object value)
 #ifdef HAVE_CHISE
 Lisp_Object load_char_attribute_maybe (Lisp_Char_Table* cit, Emchar ch);
 
+#ifdef USE_CONCORD_OBJECT_SYSTEM
+COS_object load_char_attribute_maybe_cos (Lisp_Char_Table* cit, Emchar ch);
+#endif
+
 #ifndef HAVE_LIBCHISE
 extern Lisp_Object Qsystem_char_id;
 
@@ -407,6 +427,35 @@ get_char_id_table (Lisp_Char_Table* cit, Emchar ch)
     return val;
 }
 
+#ifdef USE_CONCORD_OBJECT_SYSTEM
+INLINE_HEADER Lisp_Object
+get_char_id_table_ce (Lisp_Char_Table* cit, Emchar ch);
+INLINE_HEADER Lisp_Object
+get_char_id_table_ce (Lisp_Char_Table* cit, Emchar ch)
+{
+  Lisp_Object val = get_char_id_table_0 (cit, ch);
+
+  if (EQ (val, Qunloaded))
+    {
+#if 0
+      val = load_char_attribute_maybe (cit, ch);
+#else
+      COS_object ret = load_char_attribute_maybe_cos (cit, ch);
+      if ( ret == NULL )
+       return cit->default_value;
+      else
+       return ret;
+#endif
+    }
+  if (UNBOUNDP (val))
+    return cit->default_value;
+  else
+    return val;
+}
+#else
+#define get_char_id_table_ce(cit, ch) get_char_id_table(cit, ch)
+#endif
+
 void
 decode_char_table_range (Lisp_Object range, struct chartab_range *outrange);