+2002-03-11 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * Makefile.in.in (COPYDIR): Add ${srcdir}/lib-src/char-db if
+ HAVE_CHISE_CLIENT is defined.
+ (COPYDESTS): Add ${archlibdir}/char-db if HAVE_CHISE_CLIENT is
+ defined.
+
+ * configure.in: Define HAVE_CHISE_CLIENT when HAVE_DATABASE and
+ UTF2000 are defined.
+
2001-12-09 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
* configure.in: Don't define `HAVE_GGC' in XEmacs UTF-2000.
## When installing the info files, we need to do special things to
## avoid nuking an existing dir file, so we don't do that here;
## instead, we have written out explicit code in the `install' targets.
+#ifdef HAVE_CHISE_CLIENT
+COPYDIR = ${srcdir}/etc ${srcdir}/lisp ${srcdir}/lib-src/char-db
+COPYDESTS = ${etcdir} ${lispdir} ${archlibdir}/char-db
+#else
COPYDIR = ${srcdir}/etc ${srcdir}/lisp
COPYDESTS = ${etcdir} ${lispdir}
+#endif
GENERATED_HEADERS = src/paths.h src/Emacs.ad.h src/config.h lwlib/config.h src/sheap-adjust.h
GENERATED_LISP = lisp/finder-inf.el
extra_objs="$extra_objs database.o" && if test "$extra_verbose" = "yes"; then
echo " xemacs will be linked with \"database.o\""
fi
+ if test "$with_utf_2000" = "yes"; then
+ { test "$extra_verbose" = "yes" && cat << \EOF
+ Defining HAVE_CHISE_CLIENT
+EOF
+cat >> confdefs.h <<\EOF
+#define HAVE_CHISE_CLIENT 1
+EOF
+}
+
+ fi
fi
if test "$with_socks" = "yes"; then
echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:13537: checking for SOCKSinit in -lsocks" >&5
+echo "configure:13547: checking for SOCKSinit in -lsocks" >&5
ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'`
xe_check_libs=" -lsocks "
cat > conftest.$ac_ext <<EOF
-#line 13542 "configure"
+#line 13552 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
SOCKSinit()
; return 0; }
EOF
-if { (eval echo configure:13553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
if test "$with_modules" != "no"; then
echo "checking for module support" 1>&6
-echo "configure:13608: checking for module support" >&5
+echo "configure:13618: checking for module support" >&5
if test "$with_msw" = "yes"; then
have_dl=yes;
else
ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:13615: checking for dlfcn.h" >&5
+echo "configure:13625: checking for dlfcn.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 13618 "configure"
+#line 13628 "configure"
#include "confdefs.h"
#include <dlfcn.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13633: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:13640: checking for dlopen in -lc" >&5
+echo "configure:13650: checking for dlopen in -lc" >&5
cat > conftest.$ac_ext <<EOF
-#line 13642 "configure"
+#line 13652 "configure"
#include "confdefs.h"
#include <dlfcn.h>
int main() {
dlopen ("", 0);
; return 0; }
EOF
-if { (eval echo configure:13649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
have_dl=yes
else
rm -rf conftest*
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:13658: checking for dlopen in -ldl" >&5
+echo "configure:13668: checking for dlopen in -ldl" >&5
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 13662 "configure"
+#line 13672 "configure"
#include "confdefs.h"
#include <dlfcn.h>
int main() {
dlopen ("", 0);
; return 0; }
EOF
-if { (eval echo configure:13669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
have_dl=yes
else
else
echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:13698: checking for shl_load in -ldld" >&5
+echo "configure:13708: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
xe_check_libs=" -ldld "
cat > conftest.$ac_ext <<EOF
-#line 13703 "configure"
+#line 13713 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
shl_load()
; return 0; }
EOF
-if { (eval echo configure:13714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:13741: checking for dld_init in -ldld" >&5
+echo "configure:13751: checking for dld_init in -ldld" >&5
ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'`
xe_check_libs=" -ldld "
cat > conftest.$ac_ext <<EOF
-#line 13746 "configure"
+#line 13756 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dld_init()
; return 0; }
EOF
-if { (eval echo configure:13757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
xealias=$internal_configuration
echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:13802: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:13812: checking how to build dynamic libraries for ${xehost}" >&5
# Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
case "$xehost" in
*-*-linux-gnu*) ;;
XEGCC=yes
else
echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:13830: checking checking whether we are using GNU C" >&5
+echo "configure:13840: checking checking whether we are using GNU C" >&5
cat > conftest.$ac_ext <<EOF
-#line 13832 "configure"
+#line 13842 "configure"
#include "confdefs.h"
#ifdef __GNUC__
fi
echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:13854: checking how to produce PIC code" >&5
+echo "configure:13864: checking how to produce PIC code" >&5
wl=
can_build_shared=yes
# Check to make sure the dll_cflags actually works.
echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" 1>&6
-echo "configure:13950: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:13960: checking if PIC flag ${dll_cflags} really works" >&5
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $dll_cflags -DPIC"
cat > conftest.$ac_ext <<EOF
-#line 13954 "configure"
+#line 13964 "configure"
#include "confdefs.h"
int main() {
int x=0;
; return 0; }
EOF
-if { (eval echo configure:13961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13971: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also
xldf=
xcldf=
echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:13992: checking if C compiler can produce shared libraries" >&5
+echo "configure:14002: checking if C compiler can produce shared libraries" >&5
if test "$XEGCC" = yes; then
xcldf="-shared"
xldf="-shared"
xe_libs=
ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
cat > conftest.$ac_ext <<EOF
-#line 14043 "configure"
+#line 14053 "configure"
#include "confdefs.h"
int main() {
int x=0;
; return 0; }
EOF
-if { (eval echo configure:14050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cc_produces_so=yes
else
if test "$XEGCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:14075: checking for ld used by GCC" >&5
+echo "configure:14085: checking for ld used by GCC" >&5
ac_prog=`($CC -print-prog-name=ld) 2>&5`
case "$ac_prog" in
# Accept absolute paths.
esac
else
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:14100: checking for GNU ld" >&5
+echo "configure:14110: checking for GNU ld" >&5
fi
if test -z "$LTLD"; then
# Check to see if it really is or isn't GNU ld.
echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6
-echo "configure:14138: checking if the linker is GNU ld" >&5
+echo "configure:14148: checking if the linker is GNU ld" >&5
# I'd rather use --version here, but apparently some GNU ld's only accept -v.
if $LTLD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
xe_gnu_ld=yes
# OK - only NOW do we futz about with ld.
# See if the linker supports building shared libraries.
echo $ac_n "checking whether the linker supports shared libraries""... $ac_c" 1>&6
-echo "configure:14166: checking whether the linker supports shared libraries" >&5
+echo "configure:14176: checking whether the linker supports shared libraries" >&5
dll_ld=$CC
dll_ldflags=$LDFLAGS
ld_shlibs=yes
for ac_func in dlerror _dlerror
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14381: checking for $ac_func" >&5
+echo "configure:14391: checking for $ac_func" >&5
cat > conftest.$ac_ext <<EOF
-#line 14384 "configure"
+#line 14394 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:14407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
fi
cat > conftest.$ac_ext <<EOF
-#line 14446 "configure"
+#line 14456 "configure"
#include "confdefs.h"
int main(int c,char *v[]){return 0;}
EOF
-if { (eval echo configure:14450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:14460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
:
else
!= "no no no"; then
AC_DEFINE(HAVE_DATABASE)
XE_ADD_OBJS(database.o)
+ if test "$with_utf_2000" = "yes"; then
+ AC_DEFINE(HAVE_CHISE_CLIENT)
+ fi
fi
dnl Socks support
+2002-02-26 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * dumped-lisp.el (preloaded-file-list): Rename
+ utf-2000/make-cdbs.el -> utf-2000/update-cdb.el.
+
+2002-02-14 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * update-elc.el: Load lisp/utf-2000/dumped-chars.el in UTF-2000;
+ append `system-char-db-source-file-list' into
+ `preloaded-file-list' in UTF-2000.
+
+2002-02-12 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * dumped-lisp.el (preloaded-file-list): Delete
+ character-definition files.
+
+2002-02-04 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * dumped-lisp.el (preloaded-file-list): Add `make-cdbs' in
+ UTF-2000.
+
2001-12-31 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
* mule/mule-charset.el (default-coded-charset-priority-list):
;;;;;;;;;;;;;;;;;; MULE support
(when-feature mule "mule-conf")
(when-feature mule "arabic")
- (when-feature utf-2000 "isolated-char")
- (when-feature utf-2000 "u00000-C0")
- (when-feature utf-2000 "u00020-Basic-Latin")
- (when-feature utf-2000 "u00080-C1")
- (when-feature utf-2000 "u000A0-Latin-1-Supplement")
- (when-feature utf-2000 "u00100-Latin-Extended-A")
- (when-feature utf-2000 "u00180-Latin-Extended-B")
- (when-feature utf-2000 "u00250-IPA-Extensions")
- (when-feature utf-2000 "u002B0-Spacing-Modifier-Letters")
- (when-feature utf-2000 "u00300-Combining-Diacritical-Marks")
- (when-feature utf-2000 "u00370-Greek")
- (when-feature utf-2000 "u00400-Cyrillic")
- (when-feature utf-2000 "u00530-Armenian")
- (when-feature utf-2000 "u00590-Hebrew")
- (when-feature utf-2000 "u00600-Arabic")
- (when-feature utf-2000 "u00700-Syriac")
- (when-feature utf-2000 "u00780-Thaana")
- (when-feature utf-2000 "u00900-Devanagari")
- (when-feature utf-2000 "u00980-Bengali")
- (when-feature utf-2000 "u00A00-Gurmukhi")
- (when-feature utf-2000 "u00A80-Gujarati")
- (when-feature utf-2000 "u00B00-Oriya")
- (when-feature utf-2000 "u00B80-Tamil")
- (when-feature utf-2000 "u00C00-Telugu")
- (when-feature utf-2000 "u00C80-Kannada")
- (when-feature utf-2000 "u00D00-Malayalam")
- (when-feature utf-2000 "u00D80-Sinhala")
- (when-feature utf-2000 "u00E00-Thai")
- (when-feature utf-2000 "u00E80-Lao")
- (when-feature utf-2000 "u00F00-Tibetan")
- (when-feature utf-2000 "u01000-Myanmar")
- (when-feature utf-2000 "u010A0-Georgian")
- (when-feature utf-2000 "u01100-Hangul-Jamo")
- (when-feature utf-2000 "u01200-Ethiopic")
- (when-feature utf-2000 "u013A0-Cherokee")
- (when-feature utf-2000 "u01400-Canadian")
- (when-feature utf-2000 "u01680-Ogham")
- (when-feature utf-2000 "u016A0-Runic")
- (when-feature utf-2000 "u01780-Khmer")
- (when-feature utf-2000 "u01800-Mongolian")
- (when-feature utf-2000 "u01E00-Latin-Extended-Additional")
- (when-feature utf-2000 "u01F00-Greek-Extended")
- (when-feature utf-2000 "u02000-General-Punctuation")
- (when-feature utf-2000 "u02070-Superscripts")
- (when-feature utf-2000 "u02080-Subscripts")
- (when-feature utf-2000 "u020A0-Currency-Symbols")
- (when-feature utf-2000
- "u020D0-Combining-Diacritical-Marks-for-Symbols")
- (when-feature utf-2000 "u02100-Letterlike-Symbols")
- (when-feature utf-2000 "u02150-Number-Forms")
- (when-feature utf-2000 "u02190-Arrows")
- (when-feature utf-2000 "u02200-Mathematical-Operators")
- (when-feature utf-2000 "u02300-Miscellaneous-Technical")
- (when-feature utf-2000 "u02400-Control-Pictures")
- (when-feature utf-2000 "u02440-OCR")
- (when-feature utf-2000 "u02460-Enclosed-Alphanumerics")
- (when-feature utf-2000 "u02500-Box-Drawing")
- (when-feature utf-2000 "u02580-Block-Elements")
- (when-feature utf-2000 "u025A0-Geometric-Shapes")
- (when-feature utf-2000 "u02600-Miscellaneous-Symbols")
- (when-feature utf-2000 "u02700-Dingbats")
- (when-feature utf-2000 "u02800-Braille-Patterns")
- (when-feature utf-2000 "u02E00-CJK-Radical-Supplement")
- (when-feature utf-2000 "u02F00-Kangxi-Radicals")
- (when-feature utf-2000 "u02FF0-Ideographic-Description-Characters")
- (when-feature utf-2000 "u03000-CJK-Symbols-and-Punctuation")
- (when-feature utf-2000 "u03040-Hiragana")
- (when-feature utf-2000 "u030A0-Katakana")
- (when-feature utf-2000 "u03100-Bopomofo")
- (when-feature utf-2000 "u03130-Hangul-Compatibility-Jamo")
- (when-feature utf-2000 "u03190-Kanbun")
- (when-feature utf-2000 "u031A0-Bopomofo-Extended")
- (when-feature utf-2000 "u03200-Enclosed-CJK-Letters-and-Months")
- (when-feature utf-2000 "u03300-CJK-Compatibility")
- (when-feature utf-2000 "Ideograph-R001-One")
- (when-feature utf-2000 "Ideograph-R002-Line")
- (when-feature utf-2000 "Ideograph-R003-Dot")
- (when-feature utf-2000 "Ideograph-R004-Slash")
- (when-feature utf-2000 "Ideograph-R005-Second")
- (when-feature utf-2000 "Ideograph-R006-Hook")
- (when-feature utf-2000 "Ideograph-R007-Two")
- (when-feature utf-2000 "Ideograph-R008-Lid")
- (when-feature utf-2000 "Ideograph-R009-Man")
- (when-feature utf-2000 "Ideograph-R010-Legs")
- (when-feature utf-2000 "Ideograph-R011-Enter")
- (when-feature utf-2000 "Ideograph-R012-Eight")
- (when-feature utf-2000 "Ideograph-R013-Down-Box")
- (when-feature utf-2000 "Ideograph-R014-Cover")
- (when-feature utf-2000 "Ideograph-R015-Ice")
- (when-feature utf-2000 "Ideograph-R016-Table")
- (when-feature utf-2000 "Ideograph-R017-Open-Box")
- (when-feature utf-2000 "Ideograph-R018-Knife")
- (when-feature utf-2000 "Ideograph-R019-Power")
- (when-feature utf-2000 "Ideograph-R020-Wrap")
- (when-feature utf-2000 "Ideograph-R021-Spoon")
- (when-feature utf-2000 "Ideograph-R022-Right-Open-Box")
- (when-feature utf-2000 "Ideograph-R023-Hiding-Enclosure")
- (when-feature utf-2000 "Ideograph-R024-Ten")
- (when-feature utf-2000 "Ideograph-R025-Divination")
- (when-feature utf-2000 "Ideograph-R026-Seal")
- (when-feature utf-2000 "Ideograph-R027-Cliff")
- (when-feature utf-2000 "Ideograph-R028-Private")
- (when-feature utf-2000 "Ideograph-R029-Again")
- (when-feature utf-2000 "Ideograph-R030-Mouth")
- (when-feature utf-2000 "Ideograph-R031-Enclosure")
- (when-feature utf-2000 "Ideograph-R032-Earth")
- (when-feature utf-2000 "Ideograph-R033-Scholar")
- (when-feature utf-2000 "Ideograph-R034-Go")
- (when-feature utf-2000 "Ideograph-R035-Go-Slowly")
- (when-feature utf-2000 "Ideograph-R036-Evening")
- (when-feature utf-2000 "Ideograph-R037-Big")
- (when-feature utf-2000 "Ideograph-R038-Woman")
- (when-feature utf-2000 "Ideograph-R039-Child")
- (when-feature utf-2000 "Ideograph-R040-Roof")
- (when-feature utf-2000 "Ideograph-R041-Inch")
- (when-feature utf-2000 "Ideograph-R042-Small")
- (when-feature utf-2000 "Ideograph-R043-Lame")
- (when-feature utf-2000 "Ideograph-R044-Corpse")
- (when-feature utf-2000 "Ideograph-R045-Sprout")
- (when-feature utf-2000 "Ideograph-R046-Mountain")
- (when-feature utf-2000 "Ideograph-R047-River")
- (when-feature utf-2000 "Ideograph-R048-Work")
- (when-feature utf-2000 "Ideograph-R049-Oneself")
- (when-feature utf-2000 "Ideograph-R050-Turban")
- (when-feature utf-2000 "Ideograph-R051-Dry")
- (when-feature utf-2000 "Ideograph-R052-Short-Thread")
- (when-feature utf-2000 "Ideograph-R053-Dotted-Cliff")
- (when-feature utf-2000 "Ideograph-R054-Long-Stride")
- (when-feature utf-2000 "Ideograph-R055-Two-Hands")
- (when-feature utf-2000 "Ideograph-R056-Shoot")
- (when-feature utf-2000 "Ideograph-R057-Bow")
- (when-feature utf-2000 "Ideograph-R058-Snout")
- (when-feature utf-2000 "Ideograph-R059-Bristle")
- (when-feature utf-2000 "Ideograph-R060-Step")
- (when-feature utf-2000 "Ideograph-R061-Heart")
- (when-feature utf-2000 "Ideograph-R062-Halberd")
- (when-feature utf-2000 "Ideograph-R063-Door")
- (when-feature utf-2000 "Ideograph-R064-Hand")
- (when-feature utf-2000 "Ideograph-R065-Branch")
- (when-feature utf-2000 "Ideograph-R066-Rap")
- (when-feature utf-2000 "Ideograph-R067-Script")
- (when-feature utf-2000 "Ideograph-R068-Dipper")
- (when-feature utf-2000 "Ideograph-R069-Axe")
- (when-feature utf-2000 "Ideograph-R070-Square")
- (when-feature utf-2000 "Ideograph-R071-Not")
- (when-feature utf-2000 "Ideograph-R072-Sun")
- (when-feature utf-2000 "Ideograph-R073-Say")
- (when-feature utf-2000 "Ideograph-R074-Moon")
- (when-feature utf-2000 "Ideograph-R075-Tree")
- (when-feature utf-2000 "Ideograph-R076-Lack")
- (when-feature utf-2000 "Ideograph-R077-Stop")
- (when-feature utf-2000 "Ideograph-R078-Death")
- (when-feature utf-2000 "Ideograph-R079-Weapon")
- (when-feature utf-2000 "Ideograph-R080-Do-Not")
- (when-feature utf-2000 "Ideograph-R081-Compare")
- (when-feature utf-2000 "Ideograph-R082-Fur")
- (when-feature utf-2000 "Ideograph-R083-Clan")
- (when-feature utf-2000 "Ideograph-R084-Steam")
- (when-feature utf-2000 "Ideograph-R085-Water")
- (when-feature utf-2000 "Ideograph-R086-Fire")
- (when-feature utf-2000 "Ideograph-R087-Claw")
- (when-feature utf-2000 "Ideograph-R088-Father")
- (when-feature utf-2000 "Ideograph-R089-Double-X")
- (when-feature utf-2000 "Ideograph-R090-Half-Tree-Trunk")
- (when-feature utf-2000 "Ideograph-R091-Slice")
- (when-feature utf-2000 "Ideograph-R092-Fang")
- (when-feature utf-2000 "Ideograph-R093-Cow")
- (when-feature utf-2000 "Ideograph-R094-Dog")
- (when-feature utf-2000 "Ideograph-R095-Profound")
- (when-feature utf-2000 "Ideograph-R096-Jade")
- (when-feature utf-2000 "Ideograph-R097-Melon")
- (when-feature utf-2000 "Ideograph-R098-Tile")
- (when-feature utf-2000 "Ideograph-R099-Sweet")
- (when-feature utf-2000 "Ideograph-R100-Life")
- (when-feature utf-2000 "Ideograph-R101-Use")
- (when-feature utf-2000 "Ideograph-R102-Field")
- (when-feature utf-2000 "Ideograph-R103-Bolt-Of-Cloth")
- (when-feature utf-2000 "Ideograph-R104-Sickness")
- (when-feature utf-2000 "Ideograph-R105-Dotted-Tent")
- (when-feature utf-2000 "Ideograph-R106-White")
- (when-feature utf-2000 "Ideograph-R107-Skin")
- (when-feature utf-2000 "Ideograph-R108-Dish")
- (when-feature utf-2000 "Ideograph-R109-Eye")
- (when-feature utf-2000 "Ideograph-R110-Spear")
- (when-feature utf-2000 "Ideograph-R111-Arrow")
- (when-feature utf-2000 "Ideograph-R112-Stone")
- (when-feature utf-2000 "Ideograph-R113-Spirit")
- (when-feature utf-2000 "Ideograph-R114-Track")
- (when-feature utf-2000 "Ideograph-R115-Grain")
- (when-feature utf-2000 "Ideograph-R116-Cave")
- (when-feature utf-2000 "Ideograph-R117-Stand")
- (when-feature utf-2000 "Ideograph-R118-Bamboo")
- (when-feature utf-2000 "Ideograph-R119-Rice")
- (when-feature utf-2000 "Ideograph-R120-Silk")
- (when-feature utf-2000 "Ideograph-R121-Jar")
- (when-feature utf-2000 "Ideograph-R122-Net")
- (when-feature utf-2000 "Ideograph-R123-Sheep")
- (when-feature utf-2000 "Ideograph-R124-Feather")
- (when-feature utf-2000 "Ideograph-R125-Old")
- (when-feature utf-2000 "Ideograph-R126-And")
- (when-feature utf-2000 "Ideograph-R127-Plow")
- (when-feature utf-2000 "Ideograph-R128-Ear")
- (when-feature utf-2000 "Ideograph-R129-Brush")
- (when-feature utf-2000 "Ideograph-R130-Meat")
- (when-feature utf-2000 "Ideograph-R131-Minister")
- (when-feature utf-2000 "Ideograph-R132-Self")
- (when-feature utf-2000 "Ideograph-R133-Arrive")
- (when-feature utf-2000 "Ideograph-R134-Mortar")
- (when-feature utf-2000 "Ideograph-R135-Tongue")
- (when-feature utf-2000 "Ideograph-R136-Oppose")
- (when-feature utf-2000 "Ideograph-R137-Boat")
- (when-feature utf-2000 "Ideograph-R138-Stopping")
- (when-feature utf-2000 "Ideograph-R139-Color")
- (when-feature utf-2000 "Ideograph-R140-Grass")
- (when-feature utf-2000 "Ideograph-R141-Tiger")
- (when-feature utf-2000 "Ideograph-R142-Insect")
- (when-feature utf-2000 "Ideograph-R143-Blood")
- (when-feature utf-2000 "Ideograph-R144-Walk-Enclosure")
- (when-feature utf-2000 "Ideograph-R145-Clothes")
- (when-feature utf-2000 "Ideograph-R146-West")
- (when-feature utf-2000 "Ideograph-R147-See")
- (when-feature utf-2000 "Ideograph-R148-Horn")
- (when-feature utf-2000 "Ideograph-R149-Speech")
- (when-feature utf-2000 "Ideograph-R150-Valley")
- (when-feature utf-2000 "Ideograph-R151-Bean")
- (when-feature utf-2000 "Ideograph-R152-Pig")
- (when-feature utf-2000 "Ideograph-R153-Badger")
- (when-feature utf-2000 "Ideograph-R154-Shell")
- (when-feature utf-2000 "Ideograph-R155-Red")
- (when-feature utf-2000 "Ideograph-R156-Run")
- (when-feature utf-2000 "Ideograph-R157-Foot")
- (when-feature utf-2000 "Ideograph-R158-Body")
- (when-feature utf-2000 "Ideograph-R159-Cart")
- (when-feature utf-2000 "Ideograph-R160-Bitter")
- (when-feature utf-2000 "Ideograph-R161-Morning")
- (when-feature utf-2000 "Ideograph-R162-Walk")
- (when-feature utf-2000 "Ideograph-R163-City")
- (when-feature utf-2000 "Ideograph-R164-Wine")
- (when-feature utf-2000 "Ideograph-R165-Distinguish")
- (when-feature utf-2000 "Ideograph-R166-Village")
- (when-feature utf-2000 "Ideograph-R167-Gold")
- (when-feature utf-2000 "Ideograph-R168-Long")
- (when-feature utf-2000 "Ideograph-R169-Gate")
- (when-feature utf-2000 "Ideograph-R170-Mound")
- (when-feature utf-2000 "Ideograph-R171-Slave")
- (when-feature utf-2000 "Ideograph-R172-Short-Tailed-Bird")
- (when-feature utf-2000 "Ideograph-R173-Rain")
- (when-feature utf-2000 "Ideograph-R174-Blue")
- (when-feature utf-2000 "Ideograph-R175-Wrong")
- (when-feature utf-2000 "Ideograph-R176-Face")
- (when-feature utf-2000 "Ideograph-R177-Leather")
- (when-feature utf-2000 "Ideograph-R178-Tanned-Leather")
- (when-feature utf-2000 "Ideograph-R179-Leek")
- (when-feature utf-2000 "Ideograph-R180-Sound")
- (when-feature utf-2000 "Ideograph-R181-Leaf")
- (when-feature utf-2000 "Ideograph-R182-Wind")
- (when-feature utf-2000 "Ideograph-R183-Fly")
- (when-feature utf-2000 "Ideograph-R184-Eat")
- (when-feature utf-2000 "Ideograph-R185-Head")
- (when-feature utf-2000 "Ideograph-R186-Fragrant")
- (when-feature utf-2000 "Ideograph-R187-Horse")
- (when-feature utf-2000 "Ideograph-R188-Bone")
- (when-feature utf-2000 "Ideograph-R189-Tall")
- (when-feature utf-2000 "Ideograph-R190-Hair")
- (when-feature utf-2000 "Ideograph-R191-Fight")
- (when-feature utf-2000 "Ideograph-R192-Sacrificial-Wine")
- (when-feature utf-2000 "Ideograph-R193-Cauldron")
- (when-feature utf-2000 "Ideograph-R194-Ghost")
- (when-feature utf-2000 "Ideograph-R195-Fish")
- (when-feature utf-2000 "Ideograph-R196-Bird")
- (when-feature utf-2000 "Ideograph-R197-Salt")
- (when-feature utf-2000 "Ideograph-R198-Deer")
- (when-feature utf-2000 "Ideograph-R199-Wheat")
- (when-feature utf-2000 "Ideograph-R200-Hemp")
- (when-feature utf-2000 "Ideograph-R201-Yellow")
- (when-feature utf-2000 "Ideograph-R202-Millet")
- (when-feature utf-2000 "Ideograph-R203-Black")
- (when-feature utf-2000 "Ideograph-R204-Embroidery")
- (when-feature utf-2000 "Ideograph-R205-Frog")
- (when-feature utf-2000 "Ideograph-R206-Tripod")
- (when-feature utf-2000 "Ideograph-R207-Drum")
- (when-feature utf-2000 "Ideograph-R208-Rat")
- (when-feature utf-2000 "Ideograph-R209-Nose")
- (when-feature utf-2000 "Ideograph-R210-Even")
- (when-feature utf-2000 "Ideograph-R211-Tooth")
- (when-feature utf-2000 "Ideograph-R212-Dragon")
- (when-feature utf-2000 "Ideograph-R213-Turtle")
- (when-feature utf-2000 "Ideograph-R214-Flute")
- (when-feature utf-2000 "u0A000-Yi-Syllables")
- (when-feature utf-2000 "u0AC00-Hangul-Syllables")
- (when-feature utf-2000 "u0E000-Private-Use")
- (when-feature utf-2000 "u0FB00-Alphabetic-Presentation-Forms")
- (when-feature utf-2000 "u0FB50-Arabic-Presentation-Forms-A")
- (when-feature utf-2000 "u0FE20-Combining-Half-Marks")
- (when-feature utf-2000 "u0FE30-CJK-Compatibility-Forms")
- (when-feature utf-2000 "u0FE50-Small-Form-Variants")
- (when-feature utf-2000 "u0FE70-Arabic-Presentation-Forms-B")
- (when-feature utf-2000 "u0FF00-Halfwidth-and-Fullwidth-Forms")
- (when-feature utf-2000 "u0FFF0-Specials")
- ;; (when-feature utf-2000 "mojikyo")
- (when-feature utf-2000 "ad-hoc-cdp")
- (when-feature utf-2000 "ccs-tcvn5712.el")
+ (when-feature utf-2000 "update-cdb")
(when-feature mule "mule-charset")
(when-feature mule "mule-coding")
;; All files after this can have extended characters in them.
;; (when-feature sparcworks "sun-eos-debugger")
;; (when-feature sparcworks "sun-eos-debugger-extra")
;; (when-feature sparcworks "sun-eos-menubar")
+ ;; (when-feature utf-2000 "make-cdbs")
"loadhist" ; Must be dumped before loaddefs is loaded
"loaddefs" ; <=== autoloads get loaded here
))
(let (preloaded-file-list site-load-packages need-to-dump dumped-exe)
(load (expand-file-name "../lisp/dumped-lisp.el"))
+ (when (featurep 'utf-2000)
+ (load (expand-file-name "../lisp/utf-2000/dumped-chars.el")))
+
(setq dumped-exe
(cond ((file-exists-p "../src/xemacs.exe") "../src/xemacs.exe")
((file-exists-p "../src/xemacs") "../src/xemacs")
(setq preloaded-file-list
(append packages-hardcoded-lisp
preloaded-file-list
+ (if (featurep 'utf-2000)
+ system-char-db-source-file-list)
packages-useful-lisp
site-load-packages))
(while preloaded-file-list
+2002-03-12 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * update-cdb.el: When feature `chise' is not provided, just load
+ up files defined in `system-char-db-source-file-list'.
+ (system-char-database-directory): Don't define it when feature
+ `chise' is not provided.
+ (file-name-char-attribute-name): Likewise. Don't call
+ `reset-char-attribute-table' for files in
+ `system-char-database-directory' when feature `chise' is not
+ provided.
+
+2002-03-03 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * update-cdb.el: Delete system-char-database-directory before
+ loading system-char-db-source-file-list when updating database
+ files.
+
+2002-03-01 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * Ideograph-R007-Two.el (U+4E92): Use char-spec instead of
+ char-ref in the `ideographic-structure'.
+
+2002-02-25 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * update-cdb.el: Renamed from make-cdbs.el.
+
+2002-02-25 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * make-cdbs.el: (file-name-char-attribute-name) New function.
+ - Use `file-name-char-attribute-name' to get character attribute
+ names.
+
+2002-02-22 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * Ideograph-R135-Tongue.el (C1-485F): Fix :char of
+ `<-original-ideograph'.
+
+2002-02-19 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * make-cdbs.el (delete-file-with-children): New function; use it
+ instead of "rm".
+
+2002-02-14 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * make-cdbs.el: Load dumped-chars.el and refer
+ `system-char-db-source-file-list'.
+
+ * dumped-chars.el: New file.
+
+2002-02-12 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * char-db-util.el (insert-char-attributes): Ignore
+ `->ucs-variants' if optional argument `readable' is not specified;
+ regard ->FOO and <-FOO as list of char-refs.
+
+2002-02-12 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * make-cdbs.el (system-char-database-directory): New variable.
+ - Load character-definition files if
+ `system-char-database-directory' is not found or
+ `load-ignore-elc-files' is non-nil.
+ - Call `reset-char-attribute-table' for each character-attribute
+ corresponding with each file in
+ `system-char-database-directory'/system-char-id.
+
+2002-02-08 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * make-cdbs.el: Use `save-charset-mapping-table' for all
+ coded-charsets.
+
+2002-02-01 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * make-cdbs.el: New file.
+
2002-02-22 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
* Ideograph-R170-Mound.el (U+9689): Separate JSP-6664.
value line-breaking))
(setq attributes (delq 'hanyu-dazidian-char attributes))
)
+ (when (and (not readable)
+ (memq '->ucs-variants attributes))
+ (setq attributes (delq '->ucs-variants attributes))
+ )
(setq rest ccs-attributes)
(while (and rest
(progn
(insert (format "(%-18s . #x%04X)%s"
name value
line-breaking)))
- ((memq name '(->lowercase
- ->uppercase ->titlecase
- ->fullwidth <-fullwidth
- ->identical
- ->vulgar-ideograph <-vulgar-ideograph
- ->ancient-ideograph <-ancient-ideograph
- ->original-ideograph <-original-ideograph
- ->simplified-ideograph <-simplified-ideograph
- ->wrong-ideograph <-wrong-ideograph
- ->same-ideograph
- ->ideographic-variants
- ->synonyms
- ->radical <-radical
- ->bopomofo <-bopomofo
- ->ideographic <-ideographic
- ideographic-structure))
+ ((or (eq name 'ideographic-structure)
+ (string-match "^\\(->\\|<-\\)" (symbol-name name)))
+ ;; (memq name '(->lowercase
+ ;; ->uppercase ->titlecase
+ ;; ->fullwidth <-fullwidth
+ ;; ->identical
+ ;; ->vulgar-ideograph <-vulgar-ideograph
+ ;; ->ancient-ideograph <-ancient-ideograph
+ ;; ->original-ideograph <-original-ideograph
+ ;; ->simplified-ideograph <-simplified-ideograph
+ ;; ->wrong-ideograph <-wrong-ideograph
+ ;; ->same-ideograph
+ ;; ->ideographic-variants
+ ;; ->synonyms
+ ;; ->radical <-radical
+ ;; ->bopomofo <-bopomofo
+ ;; ->ideographic <-ideographic
+ ;; ideographic-structure))
(insert (format "(%-18s%s " name line-breaking))
(setq lbs (concat "\n" (make-string (current-column) ?\ ))
separator nil)
(cond ((characterp cell)
(if separator
(insert lbs))
- (char-db-insert-char-spec cell readable)
+ (if readable
+ (insert (format "%S" cell))
+ (char-db-insert-char-spec cell readable))
(setq separator lbs))
((consp cell)
(if separator
(setq value (cdr value)))
(insert ")")
(insert line-breaking))
- ((string-match "^->" (symbol-name name))
- (insert
- (format "(%-18s %s)%s"
- name
- (mapconcat (lambda (code)
- (cond ((symbolp code)
- (symbol-name code))
- ((integerp code)
- (format "#x%04X" code))
- (t
- (format "%s%S"
- line-breaking code))))
- value " ")
- line-breaking)))
+ ;; ((string-match "^->" (symbol-name name))
+ ;; (insert
+ ;; (format "(%-18s %s)%s"
+ ;; name
+ ;; (mapconcat (lambda (code)
+ ;; (cond ((symbolp code)
+ ;; (symbol-name code))
+ ;; ((integerp code)
+ ;; (format "#x%04X" code))
+ ;; (t
+ ;; (format "%s%S"
+ ;; line-breaking code))))
+ ;; value " ")
+ ;; line-breaking)))
((consp value)
(insert (format "(%-18s " name))
(setq lbs (concat "\n" (make-string (current-column) ?\ ))
--- /dev/null
+(setq system-char-db-source-file-list
+ '("isolated-char"
+ "u00000-C0"
+ "u00020-Basic-Latin"
+ "u00080-C1"
+ "u000A0-Latin-1-Supplement"
+ "u00100-Latin-Extended-A"
+ "u00180-Latin-Extended-B"
+ "u00250-IPA-Extensions"
+ "u002B0-Spacing-Modifier-Letters"
+ "u00300-Combining-Diacritical-Marks"
+ "u00370-Greek"
+ "u00400-Cyrillic"
+ "u00530-Armenian"
+ "u00590-Hebrew"
+ "u00600-Arabic"
+ "u00700-Syriac"
+ "u00780-Thaana"
+ "u00900-Devanagari"
+ "u00980-Bengali"
+ "u00A00-Gurmukhi"
+ "u00A80-Gujarati"
+ "u00B00-Oriya"
+ "u00B80-Tamil"
+ "u00C00-Telugu"
+ "u00C80-Kannada"
+ "u00D00-Malayalam"
+ "u00D80-Sinhala"
+ "u00E00-Thai"
+ "u00E80-Lao"
+ "u00F00-Tibetan"
+ "u01000-Myanmar"
+ "u010A0-Georgian"
+ "u01100-Hangul-Jamo"
+ "u01200-Ethiopic"
+ "u013A0-Cherokee"
+ "u01400-Canadian"
+ "u01680-Ogham"
+ "u016A0-Runic"
+ "u01780-Khmer"
+ "u01800-Mongolian"
+ "u01E00-Latin-Extended-Additional"
+ "u01F00-Greek-Extended"
+ "u02000-General-Punctuation"
+ "u02070-Superscripts"
+ "u02080-Subscripts"
+ "u020A0-Currency-Symbols"
+ "u020D0-Combining-Diacritical-Marks-for-Symbols"
+ "u02100-Letterlike-Symbols"
+ "u02150-Number-Forms"
+ "u02190-Arrows"
+ "u02200-Mathematical-Operators"
+ "u02300-Miscellaneous-Technical"
+ "u02400-Control-Pictures"
+ "u02440-OCR"
+ "u02460-Enclosed-Alphanumerics"
+ "u02500-Box-Drawing"
+ "u02580-Block-Elements"
+ "u025A0-Geometric-Shapes"
+ "u02600-Miscellaneous-Symbols"
+ "u02700-Dingbats"
+ "u02800-Braille-Patterns"
+ "u02E00-CJK-Radical-Supplement"
+ "u02F00-Kangxi-Radicals"
+ "u02FF0-Ideographic-Description-Characters"
+ "u03000-CJK-Symbols-and-Punctuation"
+ "u03040-Hiragana"
+ "u030A0-Katakana"
+ "u03100-Bopomofo"
+ "u03130-Hangul-Compatibility-Jamo"
+ "u03190-Kanbun"
+ "u031A0-Bopomofo-Extended"
+ "u03200-Enclosed-CJK-Letters-and-Months"
+ "u03300-CJK-Compatibility"
+ "Ideograph-R001-One"
+ "Ideograph-R002-Line"
+ "Ideograph-R003-Dot"
+ "Ideograph-R004-Slash"
+ "Ideograph-R005-Second"
+ "Ideograph-R006-Hook"
+ "Ideograph-R007-Two"
+ "Ideograph-R008-Lid"
+ "Ideograph-R009-Man"
+ "Ideograph-R010-Legs"
+ "Ideograph-R011-Enter"
+ "Ideograph-R012-Eight"
+ "Ideograph-R013-Down-Box"
+ "Ideograph-R014-Cover"
+ "Ideograph-R015-Ice"
+ "Ideograph-R016-Table"
+ "Ideograph-R017-Open-Box"
+ "Ideograph-R018-Knife"
+ "Ideograph-R019-Power"
+ "Ideograph-R020-Wrap"
+ "Ideograph-R021-Spoon"
+ "Ideograph-R022-Right-Open-Box"
+ "Ideograph-R023-Hiding-Enclosure"
+ "Ideograph-R024-Ten"
+ "Ideograph-R025-Divination"
+ "Ideograph-R026-Seal"
+ "Ideograph-R027-Cliff"
+ "Ideograph-R028-Private"
+ "Ideograph-R029-Again"
+ "Ideograph-R030-Mouth"
+ "Ideograph-R031-Enclosure"
+ "Ideograph-R032-Earth"
+ "Ideograph-R033-Scholar"
+ "Ideograph-R034-Go"
+ "Ideograph-R035-Go-Slowly"
+ "Ideograph-R036-Evening"
+ "Ideograph-R037-Big"
+ "Ideograph-R038-Woman"
+ "Ideograph-R039-Child"
+ "Ideograph-R040-Roof"
+ "Ideograph-R041-Inch"
+ "Ideograph-R042-Small"
+ "Ideograph-R043-Lame"
+ "Ideograph-R044-Corpse"
+ "Ideograph-R045-Sprout"
+ "Ideograph-R046-Mountain"
+ "Ideograph-R047-River"
+ "Ideograph-R048-Work"
+ "Ideograph-R049-Oneself"
+ "Ideograph-R050-Turban"
+ "Ideograph-R051-Dry"
+ "Ideograph-R052-Short-Thread"
+ "Ideograph-R053-Dotted-Cliff"
+ "Ideograph-R054-Long-Stride"
+ "Ideograph-R055-Two-Hands"
+ "Ideograph-R056-Shoot"
+ "Ideograph-R057-Bow"
+ "Ideograph-R058-Snout"
+ "Ideograph-R059-Bristle"
+ "Ideograph-R060-Step"
+ "Ideograph-R061-Heart"
+ "Ideograph-R062-Halberd"
+ "Ideograph-R063-Door"
+ "Ideograph-R064-Hand"
+ "Ideograph-R065-Branch"
+ "Ideograph-R066-Rap"
+ "Ideograph-R067-Script"
+ "Ideograph-R068-Dipper"
+ "Ideograph-R069-Axe"
+ "Ideograph-R070-Square"
+ "Ideograph-R071-Not"
+ "Ideograph-R072-Sun"
+ "Ideograph-R073-Say"
+ "Ideograph-R074-Moon"
+ "Ideograph-R075-Tree"
+ "Ideograph-R076-Lack"
+ "Ideograph-R077-Stop"
+ "Ideograph-R078-Death"
+ "Ideograph-R079-Weapon"
+ "Ideograph-R080-Do-Not"
+ "Ideograph-R081-Compare"
+ "Ideograph-R082-Fur"
+ "Ideograph-R083-Clan"
+ "Ideograph-R084-Steam"
+ "Ideograph-R085-Water"
+ "Ideograph-R086-Fire"
+ "Ideograph-R087-Claw"
+ "Ideograph-R088-Father"
+ "Ideograph-R089-Double-X"
+ "Ideograph-R090-Half-Tree-Trunk"
+ "Ideograph-R091-Slice"
+ "Ideograph-R092-Fang"
+ "Ideograph-R093-Cow"
+ "Ideograph-R094-Dog"
+ "Ideograph-R095-Profound"
+ "Ideograph-R096-Jade"
+ "Ideograph-R097-Melon"
+ "Ideograph-R098-Tile"
+ "Ideograph-R099-Sweet"
+ "Ideograph-R100-Life"
+ "Ideograph-R101-Use"
+ "Ideograph-R102-Field"
+ "Ideograph-R103-Bolt-Of-Cloth"
+ "Ideograph-R104-Sickness"
+ "Ideograph-R105-Dotted-Tent"
+ "Ideograph-R106-White"
+ "Ideograph-R107-Skin"
+ "Ideograph-R108-Dish"
+ "Ideograph-R109-Eye"
+ "Ideograph-R110-Spear"
+ "Ideograph-R111-Arrow"
+ "Ideograph-R112-Stone"
+ "Ideograph-R113-Spirit"
+ "Ideograph-R114-Track"
+ "Ideograph-R115-Grain"
+ "Ideograph-R116-Cave"
+ "Ideograph-R117-Stand"
+ "Ideograph-R118-Bamboo"
+ "Ideograph-R119-Rice"
+ "Ideograph-R120-Silk"
+ "Ideograph-R121-Jar"
+ "Ideograph-R122-Net"
+ "Ideograph-R123-Sheep"
+ "Ideograph-R124-Feather"
+ "Ideograph-R125-Old"
+ "Ideograph-R126-And"
+ "Ideograph-R127-Plow"
+ "Ideograph-R128-Ear"
+ "Ideograph-R129-Brush"
+ "Ideograph-R130-Meat"
+ "Ideograph-R131-Minister"
+ "Ideograph-R132-Self"
+ "Ideograph-R133-Arrive"
+ "Ideograph-R134-Mortar"
+ "Ideograph-R135-Tongue"
+ "Ideograph-R136-Oppose"
+ "Ideograph-R137-Boat"
+ "Ideograph-R138-Stopping"
+ "Ideograph-R139-Color"
+ "Ideograph-R140-Grass"
+ "Ideograph-R141-Tiger"
+ "Ideograph-R142-Insect"
+ "Ideograph-R143-Blood"
+ "Ideograph-R144-Walk-Enclosure"
+ "Ideograph-R145-Clothes"
+ "Ideograph-R146-West"
+ "Ideograph-R147-See"
+ "Ideograph-R148-Horn"
+ "Ideograph-R149-Speech"
+ "Ideograph-R150-Valley"
+ "Ideograph-R151-Bean"
+ "Ideograph-R152-Pig"
+ "Ideograph-R153-Badger"
+ "Ideograph-R154-Shell"
+ "Ideograph-R155-Red"
+ "Ideograph-R156-Run"
+ "Ideograph-R157-Foot"
+ "Ideograph-R158-Body"
+ "Ideograph-R159-Cart"
+ "Ideograph-R160-Bitter"
+ "Ideograph-R161-Morning"
+ "Ideograph-R162-Walk"
+ "Ideograph-R163-City"
+ "Ideograph-R164-Wine"
+ "Ideograph-R165-Distinguish"
+ "Ideograph-R166-Village"
+ "Ideograph-R167-Gold"
+ "Ideograph-R168-Long"
+ "Ideograph-R169-Gate"
+ "Ideograph-R170-Mound"
+ "Ideograph-R171-Slave"
+ "Ideograph-R172-Short-Tailed-Bird"
+ "Ideograph-R173-Rain"
+ "Ideograph-R174-Blue"
+ "Ideograph-R175-Wrong"
+ "Ideograph-R176-Face"
+ "Ideograph-R177-Leather"
+ "Ideograph-R178-Tanned-Leather"
+ "Ideograph-R179-Leek"
+ "Ideograph-R180-Sound"
+ "Ideograph-R181-Leaf"
+ "Ideograph-R182-Wind"
+ "Ideograph-R183-Fly"
+ "Ideograph-R184-Eat"
+ "Ideograph-R185-Head"
+ "Ideograph-R186-Fragrant"
+ "Ideograph-R187-Horse"
+ "Ideograph-R188-Bone"
+ "Ideograph-R189-Tall"
+ "Ideograph-R190-Hair"
+ "Ideograph-R191-Fight"
+ "Ideograph-R192-Sacrificial-Wine"
+ "Ideograph-R193-Cauldron"
+ "Ideograph-R194-Ghost"
+ "Ideograph-R195-Fish"
+ "Ideograph-R196-Bird"
+ "Ideograph-R197-Salt"
+ "Ideograph-R198-Deer"
+ "Ideograph-R199-Wheat"
+ "Ideograph-R200-Hemp"
+ "Ideograph-R201-Yellow"
+ "Ideograph-R202-Millet"
+ "Ideograph-R203-Black"
+ "Ideograph-R204-Embroidery"
+ "Ideograph-R205-Frog"
+ "Ideograph-R206-Tripod"
+ "Ideograph-R207-Drum"
+ "Ideograph-R208-Rat"
+ "Ideograph-R209-Nose"
+ "Ideograph-R210-Even"
+ "Ideograph-R211-Tooth"
+ "Ideograph-R212-Dragon"
+ "Ideograph-R213-Turtle"
+ "Ideograph-R214-Flute"
+ "u0A000-Yi-Syllables"
+ "u0AC00-Hangul-Syllables"
+ "u0E000-Private-Use"
+ "u0FB00-Alphabetic-Presentation-Forms"
+ "u0FB50-Arabic-Presentation-Forms-A"
+ "u0FE20-Combining-Half-Marks"
+ "u0FE30-CJK-Compatibility-Forms"
+ "u0FE50-Small-Form-Variants"
+ "u0FE70-Arabic-Presentation-Forms-B"
+ "u0FF00-Halfwidth-and-Fullwidth-Forms"
+ "u0FFF0-Specials"
+ "ad-hoc-cdp"
+ "ccs-tcvn5712.el"))
--- /dev/null
+;;; update-cdb.el --- Update and/or setup character attribute database
+
+;; Copyright (C) 2002 MORIOKA Tomohiko.
+
+;; Author: MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+;; Keywords: Character, Database, UTF-2000, Unicode, UCS-4, MULE.
+
+;; This file is part of XEmacs UTF-2000.
+
+;; XEmacs UTF-2000 is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2, or (at
+;; your option) any later version.
+
+;; XEmacs UTF-2000 is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs UTF-2000; see the file COPYING. If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(defun delete-file-with-children (filename)
+ (if (file-directory-p filename)
+ (let ((files
+ (directory-files filename 'full "^[^.]" 'so-sort)))
+ (if files
+ (dolist (file files)
+ (delete-file-with-children file)))
+ (remove-directory filename))
+ (delete-file filename)))
+
+(cond
+ ((featurep 'chise)
+ (defvar system-char-database-directory
+ (expand-file-name "char-db"
+ (or exec-directory
+ "../lib-src/")))
+
+ (defun file-name-char-attribute-name (filename)
+ (let ((i 0)
+ (base 0)
+ (len (length filename))
+ chr dest)
+ (while (< i len)
+ (if (eq (setq chr (aref filename i)) ?%)
+ (setq dest (concat dest
+ (substring filename base i)
+ (char-to-string
+ (int-char
+ (string-to-int
+ (substring filename (1+ i) (+ i 3)) 16))))
+ i (+ i 3)
+ base i)
+ (setq i (1+ i))))
+ (concat dest (substring filename base len))))
+
+ (when (or load-ignore-elc-files
+ (not (file-exists-p system-char-database-directory)))
+ (if (file-exists-p system-char-database-directory)
+ (delete-file-with-children system-char-database-directory))
+
+ (load "dumped-chars.el")
+ (dolist (file system-char-db-source-file-list)
+ (pureload file))
+
+ (dolist (attribute (char-attribute-list))
+ (save-char-attribute-table attribute))
+
+ (dolist (ccs (charset-list))
+ (save-charset-mapping-table ccs)))
+
+ (mapcar (lambda (file)
+ (reset-char-attribute-table
+ (intern (file-name-char-attribute-name file))))
+ (directory-files
+ (expand-file-name "system-char-id"
+ system-char-database-directory)
+ nil nil t t))
+ )
+ (t
+ (load "dumped-chars.el")
+ (dolist (file system-char-db-source-file-list)
+ (pureload file))
+ ))
+
+(garbage-collect)
+
+;;; update-cdb.el ends here
+2002-03-11 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * mule-charset.c (load_char_decoding_entry_maybe): Don't define it
+ when HAVE_CHISE_CLIENT is not defined.
+
+ * mule.c (vars_of_mule): Provide feature `chise' when
+ HAVE_CHISE_CLIENT is defined.
+
+2002-03-11 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * config.h.in (UTF2000): Add comment.
+ (HAVE_CHISE_CLIENT): New macro.
+
+2002-02-25 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * chartab.c (Fchar_variants): Check Vcharacter_variant_table is
+ CONSP.
+ (Fput_char_attribute): Likewise.
+ (char_attribute_system_db_file): Encode file-name of attribute.
+ (vars_of_chartab): Set Qunbound into Vcharacter_variant_table as
+ the initial value.
+
+2002-02-13 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * mule-charset.c (put_char_ccs_code_point): Delete unused codes.
+ (Fsave_charset_mapping_table): Use
+ `char_attribute_system_db_file'.
+ (load_char_decoding_entry_maybe): Likewise.
+
+ * chartab.h (Qsystem_char_id): New external variable.
+ (char_attribute_system_db_file): New prototype.
+
+ * chartab.c (Qsystem_char_id): New variable in UTF-2000.
+ (char_attribute_system_db_file): New function.
+ (Fsave_char_attribute_table): Use `char_attribute_system_db_file'.
+ (Freset_char_attribute_table): Likewise.
+ (load_char_attribute_maybe): Likewise.
+ (Fload_char_attribute_table): Likewise.
+ (syms_of_chartab): Add new symbol `system-char-id'.
+
+2002-02-12 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * char-ucs.h (DECODE_DEFINED_CHAR): Don't check
+ `XCHARSET_GRAPHIC(ccs)'.
+
+2002-02-12 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule-charset.c (Fsave_charset_mapping_table): Fixed.
+
+2002-02-11 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * chartab.c (Q_ucs_variants): New variable.
+ (syms_of_chartab): Add new symbol `->ucs-variants'.
+ (complex_vars_of_chartab): Set `Vcharacter_variant_table' on
+ `Vchar_attribute_hash_table' as the value of `->ucs-variants'; set
+ `->ucs-variants' on `XCHAR_TABLE_NAME (Vcharacter_variant_table)'.
+
+ * mule-charset.c (load_char_decoding_entry_maybe): New function.
+
+ * char-ucs.h (load_char_decoding_entry_maybe): New prototype when
+ `HAVE_DATABASE' is defined.
+ (DECODE_DEFINED_CHAR): Use `load_char_decoding_entry_maybe' when
+ `HAVE_DATABASE' is defined.
+
+2002-02-11 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * chartab.c (Fsave_char_attribute_table): Don't clear internal
+ attribute-table.
+ (Freset_char_attribute_table): New function.
+ (syms_of_chartab): Add new builtin function
+ `reset-char-attribute-table'.
+
+2002-02-11 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * chartab.c (load_char_attribute_maybe): Don't make directories.
+
+2002-02-11 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * char-ucs.h: Add EXFUN for `Fmake_directory_internal'.
+
+ * mule-charset.c (put_char_ccs_code_point): Don't prepare a vector
+ for decoding-table.
+
+2002-02-11 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * mule-charset.c (Fsave_charset_mapping_table): Use
+ `XCHARSET_BYTE_SIZE' instead of `XCHARSET_CHARS'.
+
+ * char-ucs.h (put_ccs_octet_table): Use `XCHARSET_BYTE_SIZE'
+ instead of `XCHARSET_CHARS'.
+
+2002-02-10 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * mule-charset.c (CHARSET_BYTE_SIZE): Moved to char-ucs.h.
+ (XCHARSET_BYTE_SIZE): Likewise.
+
+ * char-ucs.h (CHARSET_BYTE_SIZE): New inline function [moved from
+ mule-charset.c].
+ (XCHARSET_BYTE_SIZE): Likewise.
+
+2002-02-10 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * chartab.c (Fput_char_attribute): Use exec-directory instead of
+ data-directory to store database.
+ (Fsave_char_attribute_table): Likewise.
+ (load_char_attribute_maybe): Likewise.
+ (Fload_char_attribute_table): Likewise.
+
+2002-02-08 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * mule-charset.c (Fsave_charset_mapping_table): New function.
+ (syms_of_mule_charset): Add new builtin function
+ `save-charset-mapping-table'.
+
+2002-02-07 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * char-ucs.h (decoding_table_check_elements): Delete prototype.
+ (get_ccs_octet_table): New inline function.
+ (put_ccs_octet_table): Likewise.
+ (decoding_table_put_char): Use `get_ccs_octet_table' and
+ `put_ccs_octet_table'.
+ (decoding_table_remove_char): Use `decoding_table_put_char'.
+ (DECODE_DEFINED_CHAR): Use `get_ccs_octet_table'.
+
+ * mule-charset.c (remove_char_ccs): Store Qunbound instead of Qnil
+ into encoding_table.
+ (make_charset): Use Qunbound instead Qnil as initial value of
+ decoding_table.
+
+2002-02-04 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * chartab.c (map_over_uint8_byte_table): Set Qunbound if an
+ element is Qunloaded.
+ (map_over_uint16_byte_table): Likewise.
+ (map_over_byte_table): Likewise.
+ (map_char_table): Likewise for CHARTAB_RANGE_ALL in UTF-2000; when
+ CHARTAB_RANGE_CHARSET is specified in UTF-2000 with external
+ database support, load encoding-table of the specified
+ coded-charset if it is not loaded yet.
+ (save_uint8_byte_table): New function of UTF-2000 with external
+ database support.
+ (save_uint16_byte_table): Likewise.
+ (save_byte_table): Likewise.
+ (Fput_char_attribute): Don't store value into external database
+ even if the external database feature is supported in UTF-2000;
+ set `attribute' as name of char-table if the external database
+ feature is supported.
+ (Fsave_char_attribute_table): New function in UTF-2000.
+ (syms_of_chartab): Add new builtin function
+ `save-char-attribute-table' in UTF-2000.
+
+2002-02-03 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * chartab.c (char_attribute_table_to_put): New variable in
+ UTF-2000.
+ (Qput_char_table_map_function): Likewise.
+ (value_to_put): Likewise.
+ (Fput_char_table_map_function): New function in UTF-2000.
+ (put_char_table): Use `Fmap_char_attribute' for
+ CHARTAB_RANGE_CHARSET in UTF-2000.
+ (Fput_char_attribute): Store symbol instead of string in
+ `XCHAR_TABLE_NAME (table)'.
+ (load_char_attribute_maybe): Likewise.
+ (syms_of_chartab): Add new symbol/function
+ `put-char-table-map-function'.
+
+2002-01-30 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * database.h: Add new EXFUN for `Fmap_database'.
+
+ * database.c (Fmap_database): Renamed from `Fmapdatabase'.
+ (syms_of_database): Likewise.
+
+ * chartab.h (struct Lisp_Char_Table): Add new member `unloaded' in
+ UTF-2000.
+ (CHAR_TABLE_UNLOADED): New macro of UTF-2000.
+ (XCHAR_TABLE_UNLOADED): Likewise.
+
+ * chartab.c (fill_char_table): Initialize `ct->unloaded'.
+ (Fput_char_attribute): Set XCHAR_TABLE_UNLOADED(table) if
+ HAVE_DATABASE is defined.
+ (char_attribute_table_to_load): New variable of UTF-2000 with
+ external database support.
+ (Qload_char_attribute_table_map_function): Likewise.
+ (Fload_char_attribute_table_map_function): New function of
+ UTF-2000 with external database support.
+ (Fload_char_attribute_table): New function of UTF-2000.
+ (Fmap_char_attribute): Call Fload_char_attribute_table if
+ CHAR_TABLE_UNLOADED(ct) is set when HAVE_DATABASE is defined.
+ (syms_of_chartab): Add new symbol and function
+ `load-char-attribute-table-map-function' in UTF-2000 with external
+ database support; add new function `load-char-attribute-table' in
+ UTF-2000.
+
+2002-01-29 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.h (load_char_attribute_maybe): New prototype for
+ UTF-2000 with DATABASE support.
+ (get_char_id_table): Use `load_char_attribute_maybe' if
+ HAVE_DATABASE is defined.
+
+ * chartab.c (load_char_attribute_maybe): New function in UTF-2000
+ with DATABASE support.
+
+2002-01-29 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Fput_char_attribute): Use S-expression as key of
+ external database.
+
+ * chartab.h (get_char_id_table): Use S-expression as key of
+ external database.
+
+2002-01-24 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (map_over_uint8_byte_table): Add new argument `root';
+ if an element is not loaded, load the corresponding attributes
+ from an external database.
+ (map_over_uint16_byte_table): Likewise.
+ (map_over_byte_table): Likewise.
+ (map_char_table): Modify for `map_over_uint8_byte_table',
+ `map_over_uint16_byte_table' and `map_over_byte_table'; if an
+ element is not loaded, load the corresponding attributes from an
+ external database.
+ (Fput_char_attribute): Change initial values to Qunloaded.
+
+ * chartab.h (get_char_id_table): If a character attribute is not
+ loaded and the attribute value is not found in an external
+ database, store Qunbound as the attribute value.
+
+2002-01-22 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * chartab.c (BT_UINT8_unloaded): New macro.
+ (UINT8_VALUE_P): Accept Qunloaded.
+ (UINT8_ENCODE): Likewise.
+ (UINT8_DECODE): Likewise.
+ (BT_UINT16_unloaded): New macro.
+ (UINT16_VALUE_P): Accept Qunloaded.
+ (UINT16_ENCODE): Likewise.
+ (UINT16_DECODE): Likewise.
+ (UINT8_TO_UINT16): Convert BT_UINT8_unloaded into
+ BT_UINT16_unloaded.
+ (mark_char_table): Mark `ct->name' in UTF-2000.
+ (char_table_description): Add `name' in UTF-2000.
+ (Fmake_char_table): Initialize `ct->name'.
+ (Fcopy_char_table): Copy `ct->name'.
+ (Fput_char_attribute): Store value into an external database if
+ HAVE_DATABASE is defined.
+
+ * chartab.h (struct Lisp_Char_Table): Add new member `name' in
+ UTF-2000.
+ (CHAR_TABLE_NAME): New macro in UTF-2000.
+ (XCHAR_TABLE_NAME): New macro in UTF-2000.
+ (get_char_id_table): Try to read an external database if Qunloaded
+ is stored in a table.
+
+ * symbols.c (init_symbols_once_early): Assign '#<unloaded> into
+ Qunloaded.
+
+2002-01-21 MORIOKA Tomohiko <tomo@mousai.as.wakwak.ne.jp>
+
+ * database.h: Add EXFUN definitions for Fopen_database,
+ Fput_database, Fget_database and Fclose_database.
+
+ * data.c (Qunloaded): New variable in UTF-2000.
+
+ * lisp.h (Qunloaded): New variable in UTF-2000.
+
2002-01-10 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
* mule-charset.c (put_char_ccs_code_point): Modify for
/* Header for UCS-4 character representation.
- Copyright (C) 1999,2000,2001 MORIOKA Tomohiko
+ Copyright (C) 1999,2000,2001,2002 MORIOKA Tomohiko
This file is part of XEmacs.
#include "chartab.h"
#include "elhash.h"
+EXFUN (Fmake_directory_internal, 1);
+
extern Lisp_Object Vchar_attribute_hash_table;
#define valid_char_p(ch) 1
#define CHARSET_MOTHER(cs) ((cs)->mother)
#define CHARSET_CONVERSION(cs) ((cs)->conversion)
+INLINE_HEADER int CHARSET_BYTE_SIZE (Lisp_Charset* cs);
+INLINE_HEADER int
+CHARSET_BYTE_SIZE (Lisp_Charset* cs)
+{
+ /* ad-hoc method for `ascii' */
+ if ((CHARSET_CHARS (cs) == 94) &&
+ (CHARSET_BYTE_OFFSET (cs) != 33))
+ return 128 - CHARSET_BYTE_OFFSET (cs);
+ else
+ return CHARSET_CHARS (cs);
+}
+
INLINE_HEADER Lisp_Object CHARSET_ENCODING_TABLE (Lisp_Charset* cs);
INLINE_HEADER Lisp_Object
CHARSET_ENCODING_TABLE (Lisp_Charset* cs)
#define XCHARSET_CCL_PROGRAM(cs) CHARSET_CCL_PROGRAM (XCHARSET (cs))
#define XCHARSET_DIMENSION(cs) CHARSET_DIMENSION (XCHARSET (cs))
#define XCHARSET_CHARS(cs) CHARSET_CHARS (XCHARSET (cs))
+#define XCHARSET_BYTE_SIZE(cs) CHARSET_BYTE_SIZE (XCHARSET (cs))
#define XCHARSET_REVERSE_DIRECTION_CHARSET(cs) \
CHARSET_REVERSE_DIRECTION_CHARSET (XCHARSET (cs))
#define XCHARSET_DECODING_TABLE(cs) CHARSET_DECODING_TABLE(XCHARSET(cs))
extern Lisp_Object Vcharset_chinese_big5_1;
extern Lisp_Object Vcharset_chinese_big5_2;
-int decoding_table_check_elements (Lisp_Object v, int dim, int ccs_len);
-
-INLINE_HEADER void
-decoding_table_remove_char (Lisp_Object ccs, int code_point);
-INLINE_HEADER void
-decoding_table_remove_char (Lisp_Object ccs, int code_point)
+INLINE_HEADER Lisp_Object
+get_ccs_octet_table (Lisp_Object table, Lisp_Object ccs, int code);
+INLINE_HEADER Lisp_Object
+get_ccs_octet_table (Lisp_Object table, Lisp_Object ccs, int code)
{
- Lisp_Object v = XCHARSET_DECODING_TABLE (ccs);
- int dim = XCHARSET_DIMENSION (ccs);
int byte_offset = XCHARSET_BYTE_OFFSET (ccs);
- int i = -1;
- while (dim > 0)
+ if (VECTORP (table))
{
- Lisp_Object nv;
+ int idx = code - byte_offset;
- dim--;
- i = ((code_point >> (8 * dim)) & 255) - byte_offset;
- nv = XVECTOR_DATA(v)[i];
- if (!VECTORP (nv))
- break;
- v = nv;
+ if (idx < XVECTOR_LENGTH(table))
+ return XVECTOR_DATA(table)[idx];
+ else
+ return Qunbound;
+ }
+ else
+ return table;
+}
+
+INLINE_HEADER Lisp_Object
+put_ccs_octet_table (Lisp_Object table, Lisp_Object ccs, int code,
+ Lisp_Object value);
+INLINE_HEADER Lisp_Object
+put_ccs_octet_table (Lisp_Object table, Lisp_Object ccs, int code,
+ Lisp_Object value)
+{
+ int byte_offset = XCHARSET_BYTE_OFFSET (ccs);
+ int ccs_len = XCHARSET_BYTE_SIZE (ccs);
+
+ if (VECTORP (table))
+ {
+ XVECTOR_DATA(table)[code - byte_offset] = value;
+ return table;
+ }
+ else if (EQ (table, value))
+ return table;
+ else
+ {
+ table = make_vector (ccs_len, table);
+ XVECTOR_DATA(table)[code - byte_offset] = value;
+ return table;
}
- if (i >= 0)
- XVECTOR_DATA(v)[i] = Qnil;
}
INLINE_HEADER void
decoding_table_put_char (Lisp_Object ccs,
int code_point, Lisp_Object character)
{
+#if 1
+ Lisp_Object table1 = XCHARSET_DECODING_TABLE (ccs);
+ int dim = XCHARSET_DIMENSION (ccs);
+
+ if (dim == 1)
+ XCHARSET_DECODING_TABLE (ccs)
+ = put_ccs_octet_table (table1, ccs, code_point, character);
+ else if (dim == 2)
+ {
+ Lisp_Object table2
+ = get_ccs_octet_table (table1, ccs, (unsigned char)(code_point >> 8));
+
+ table2 = put_ccs_octet_table (table2, ccs,
+ (unsigned char)code_point, character);
+ XCHARSET_DECODING_TABLE (ccs)
+ = put_ccs_octet_table (table1, ccs,
+ (unsigned char)(code_point >> 8), table2);
+ }
+ else if (dim == 3)
+ {
+ Lisp_Object table2
+ = get_ccs_octet_table (table1, ccs, (unsigned char)(code_point >> 16));
+ Lisp_Object table3
+ = get_ccs_octet_table (table2, ccs, (unsigned char)(code_point >> 8));
+
+ table3 = put_ccs_octet_table (table3, ccs,
+ (unsigned char)code_point, character);
+ table2 = put_ccs_octet_table (table2, ccs,
+ (unsigned char)(code_point >> 8), table3);
+ XCHARSET_DECODING_TABLE (ccs)
+ = put_ccs_octet_table (table1, ccs,
+ (unsigned char)(code_point >> 16), table2);
+ }
+ else /* if (dim == 4) */
+ {
+ Lisp_Object table2
+ = get_ccs_octet_table (table1, ccs, (unsigned char)(code_point >> 24));
+ Lisp_Object table3
+ = get_ccs_octet_table (table2, ccs, (unsigned char)(code_point >> 16));
+ Lisp_Object table4
+ = get_ccs_octet_table (table3, ccs, (unsigned char)(code_point >> 8));
+
+ table4 = put_ccs_octet_table (table4, ccs,
+ (unsigned char)code_point, character);
+ table3 = put_ccs_octet_table (table3, ccs,
+ (unsigned char)(code_point >> 8), table4);
+ table2 = put_ccs_octet_table (table2, ccs,
+ (unsigned char)(code_point >> 16), table3);
+ XCHARSET_DECODING_TABLE (ccs)
+ = put_ccs_octet_table (table1, ccs,
+ (unsigned char)(code_point >> 24), table2);
+ }
+#else
Lisp_Object v = XCHARSET_DECODING_TABLE (ccs);
int dim = XCHARSET_DIMENSION (ccs);
int byte_offset = XCHARSET_BYTE_OFFSET (ccs);
if (dim > 0)
{
if (!VECTORP (nv))
- nv = (XVECTOR_DATA(v)[i] = make_vector (ccs_len, Qnil));
+ {
+ if (EQ (nv, character))
+ return;
+ else
+ nv = (XVECTOR_DATA(v)[i] = make_vector (ccs_len, Qnil));
+ }
v = nv;
}
else
break;
}
XVECTOR_DATA(v)[i] = character;
+#endif
}
+INLINE_HEADER void
+decoding_table_remove_char (Lisp_Object ccs, int code_point);
+INLINE_HEADER void
+decoding_table_remove_char (Lisp_Object ccs, int code_point)
+{
+ decoding_table_put_char (ccs, code_point, Qunbound);
+}
+
+#ifdef HAVE_DATABASE
+Emchar load_char_decoding_entry_maybe (Lisp_Object ccs, int code_point);
+#endif
+
INLINE_HEADER Emchar
DECODE_DEFINED_CHAR (Lisp_Object charset, int code_point);
INLINE_HEADER Emchar
-DECODE_DEFINED_CHAR (Lisp_Object charset, int code_point)
+DECODE_DEFINED_CHAR (Lisp_Object ccs, int code_point)
{
- int dim = XCHARSET_DIMENSION (charset);
- Lisp_Object decoding_table = XCHARSET_DECODING_TABLE (charset);
- int idx;
- Lisp_Object ch;
+ int dim = XCHARSET_DIMENSION (ccs);
+ Lisp_Object decoding_table = XCHARSET_DECODING_TABLE (ccs);
while (dim > 0)
{
dim--;
- if ( VECTORP (decoding_table)
- && ( 0 <= (idx = ((code_point >> (dim * 8))
- & 255) - XCHARSET_BYTE_OFFSET (charset)) )
- && ( idx < XVECTOR_LENGTH (decoding_table) )
- && !NILP (ch = XVECTOR_DATA(decoding_table)[idx]) )
- {
- if (CHARP (ch))
- return XCHAR (ch);
- else
- decoding_table = ch;
- }
- else
- break;
+ decoding_table
+ = get_ccs_octet_table (decoding_table, ccs,
+ (code_point >> (dim * 8)) & 255);
}
- return -1;
+ if (CHARP (decoding_table))
+ return XCHAR (decoding_table);
+#ifdef HAVE_DATABASE
+ if (EQ (decoding_table, Qunloaded) ||
+ EQ (decoding_table, Qunbound) ||
+ NILP (decoding_table) )
+ {
+ return load_char_decoding_entry_maybe (ccs, code_point);
+ }
+#endif
+ else
+ return -1;
}
INLINE_HEADER Emchar DECODE_CHAR (Lisp_Object charset, int code_point);
Copyright (C) 1995, 1996 Ben Wing.
Copyright (C) 1995, 1997, 1999 Electrotechnical Laboratory, JAPAN.
Licensed to the Free Software Foundation.
- Copyright (C) 1999,2000,2001 MORIOKA Tomohiko
+ Copyright (C) 1999,2000,2001,2002 MORIOKA Tomohiko
This file is part of XEmacs.
#ifdef UTF2000
#define BT_UINT8_MIN 0
-#define BT_UINT8_MAX (UCHAR_MAX - 3)
-#define BT_UINT8_t (UCHAR_MAX - 2)
-#define BT_UINT8_nil (UCHAR_MAX - 1)
-#define BT_UINT8_unbound UCHAR_MAX
+#define BT_UINT8_MAX (UCHAR_MAX - 4)
+#define BT_UINT8_t (UCHAR_MAX - 3)
+#define BT_UINT8_nil (UCHAR_MAX - 2)
+#define BT_UINT8_unbound (UCHAR_MAX - 1)
+#define BT_UINT8_unloaded UCHAR_MAX
INLINE_HEADER int INT_UINT8_P (Lisp_Object obj);
INLINE_HEADER int UINT8_VALUE_P (Lisp_Object obj);
INLINE_HEADER int
UINT8_VALUE_P (Lisp_Object obj)
{
- return EQ (obj, Qunbound)
+ return EQ (obj, Qunloaded) || EQ (obj, Qunbound)
|| EQ (obj, Qnil) || EQ (obj, Qt) || INT_UINT8_P (obj);
}
INLINE_HEADER unsigned char
UINT8_ENCODE (Lisp_Object obj)
{
- if (EQ (obj, Qunbound))
+ if (EQ (obj, Qunloaded))
+ return BT_UINT8_unloaded;
+ else if (EQ (obj, Qunbound))
return BT_UINT8_unbound;
else if (EQ (obj, Qnil))
return BT_UINT8_nil;
INLINE_HEADER Lisp_Object
UINT8_DECODE (unsigned char n)
{
- if (n == BT_UINT8_unbound)
+ if (n == BT_UINT8_unloaded)
+ return Qunloaded;
+ else if (n == BT_UINT8_unbound)
return Qunbound;
else if (n == BT_UINT8_nil)
return Qnil;
}
static int
-map_over_uint8_byte_table (Lisp_Uint8_Byte_Table *ct, Emchar ofs, int place,
+map_over_uint8_byte_table (Lisp_Uint8_Byte_Table *ct, Lisp_Char_Table* root,
+ Emchar ofs, int place,
int (*fn) (struct chartab_range *range,
Lisp_Object val, void *arg),
void *arg)
for (i = 0, retval = 0; i < 256 && retval == 0; i++)
{
- if (ct->property[i] != BT_UINT8_unbound)
+ if (ct->property[i] == BT_UINT8_unloaded)
+ {
+#if 0
+ c1 = c + unit;
+ for (; c < c1 && retval == 0; c++)
+ {
+ Lisp_Object ret = get_char_id_table (root, c);
+
+ if (!UNBOUNDP (ret))
+ {
+ rainj.ch = c;
+ retval = (fn) (&rainj, ret, arg);
+ }
+ }
+#else
+ ct->property[i] = BT_UINT8_unbound;
+ c += unit;
+#endif
+ }
+ else if (ct->property[i] != BT_UINT8_unbound)
{
c1 = c + unit;
for (; c < c1 && retval == 0; c++)
return retval;
}
+#ifdef HAVE_DATABASE
+static void
+save_uint8_byte_table (Lisp_Uint8_Byte_Table *ct, Lisp_Char_Table* root,
+ Lisp_Object db,
+ Emchar ofs, int place)
+{
+ struct chartab_range rainj;
+ int i, retval;
+ int unit = 1 << (8 * place);
+ Emchar c = ofs;
+ Emchar c1;
+
+ rainj.type = CHARTAB_RANGE_CHAR;
+
+ for (i = 0, retval = 0; i < 256 && retval == 0; i++)
+ {
+ if (ct->property[i] == BT_UINT8_unloaded)
+ {
+ c1 = c + unit;
+ }
+ else if (ct->property[i] != BT_UINT8_unbound)
+ {
+ c1 = c + unit;
+ for (; c < c1 && retval == 0; c++)
+ {
+ Fput_database (Fprin1_to_string (make_char (c), Qnil),
+ Fprin1_to_string (UINT8_DECODE (ct->property[i]),
+ Qnil),
+ db, Qt);
+ put_char_id_table (root, make_char (c), Qunloaded);
+ }
+ }
+ else
+ c += unit;
+ }
+}
+#endif
+
#define BT_UINT16_MIN 0
-#define BT_UINT16_MAX (USHRT_MAX - 3)
-#define BT_UINT16_t (USHRT_MAX - 2)
-#define BT_UINT16_nil (USHRT_MAX - 1)
-#define BT_UINT16_unbound USHRT_MAX
+#define BT_UINT16_MAX (USHRT_MAX - 4)
+#define BT_UINT16_t (USHRT_MAX - 3)
+#define BT_UINT16_nil (USHRT_MAX - 2)
+#define BT_UINT16_unbound (USHRT_MAX - 1)
+#define BT_UINT16_unloaded USHRT_MAX
INLINE_HEADER int INT_UINT16_P (Lisp_Object obj);
INLINE_HEADER int UINT16_VALUE_P (Lisp_Object obj);
INLINE_HEADER int
UINT16_VALUE_P (Lisp_Object obj)
{
- return EQ (obj, Qunbound)
+ return EQ (obj, Qunloaded) || EQ (obj, Qunbound)
|| EQ (obj, Qnil) || EQ (obj, Qt) || INT_UINT16_P (obj);
}
INLINE_HEADER unsigned short
UINT16_ENCODE (Lisp_Object obj)
{
- if (EQ (obj, Qunbound))
+ if (EQ (obj, Qunloaded))
+ return BT_UINT16_unloaded;
+ else if (EQ (obj, Qunbound))
return BT_UINT16_unbound;
else if (EQ (obj, Qnil))
return BT_UINT16_nil;
INLINE_HEADER Lisp_Object
UINT16_DECODE (unsigned short n)
{
- if (n == BT_UINT16_unbound)
+ if (n == BT_UINT16_unloaded)
+ return Qunloaded;
+ else if (n == BT_UINT16_unbound)
return Qunbound;
else if (n == BT_UINT16_nil)
return Qnil;
INLINE_HEADER unsigned short
UINT8_TO_UINT16 (unsigned char n)
{
- if (n == BT_UINT8_unbound)
+ if (n == BT_UINT8_unloaded)
+ return BT_UINT16_unloaded;
+ else if (n == BT_UINT8_unbound)
return BT_UINT16_unbound;
else if (n == BT_UINT8_nil)
return BT_UINT16_nil;
}
static int
-map_over_uint16_byte_table (Lisp_Uint16_Byte_Table *ct, Emchar ofs, int place,
+map_over_uint16_byte_table (Lisp_Uint16_Byte_Table *ct, Lisp_Char_Table* root,
+ Emchar ofs, int place,
int (*fn) (struct chartab_range *range,
Lisp_Object val, void *arg),
void *arg)
for (i = 0, retval = 0; i < 256 && retval == 0; i++)
{
- if (ct->property[i] != BT_UINT16_unbound)
+ if (ct->property[i] == BT_UINT16_unloaded)
+ {
+#if 0
+ c1 = c + unit;
+ for (; c < c1 && retval == 0; c++)
+ {
+ Lisp_Object ret = get_char_id_table (root, c);
+
+ if (!UNBOUNDP (ret))
+ {
+ rainj.ch = c;
+ retval = (fn) (&rainj, ret, arg);
+ }
+ }
+#else
+ ct->property[i] = BT_UINT16_unbound;
+ c += unit;
+#endif
+ }
+ else if (ct->property[i] != BT_UINT16_unbound)
{
c1 = c + unit;
for (; c < c1 && retval == 0; c++)
return retval;
}
+#ifdef HAVE_DATABASE
+static void
+save_uint16_byte_table (Lisp_Uint16_Byte_Table *ct, Lisp_Char_Table* root,
+ Lisp_Object db,
+ Emchar ofs, int place)
+{
+ struct chartab_range rainj;
+ int i, retval;
+ int unit = 1 << (8 * place);
+ Emchar c = ofs;
+ Emchar c1;
+
+ rainj.type = CHARTAB_RANGE_CHAR;
+
+ for (i = 0, retval = 0; i < 256 && retval == 0; i++)
+ {
+ if (ct->property[i] == BT_UINT16_unloaded)
+ {
+ c1 = c + unit;
+ }
+ else if (ct->property[i] != BT_UINT16_unbound)
+ {
+ c1 = c + unit;
+ for (; c < c1 && retval == 0; c++)
+ {
+ Fput_database (Fprin1_to_string (make_char (c), Qnil),
+ Fprin1_to_string (UINT16_DECODE (ct->property[i]),
+ Qnil),
+ db, Qt);
+ put_char_id_table (root, make_char (c), Qunloaded);
+ }
+ }
+ else
+ c += unit;
+ }
+}
+#endif
+
static Lisp_Object
mark_byte_table (Lisp_Object obj)
}
static int
-map_over_byte_table (Lisp_Byte_Table *ct, Emchar ofs, int place,
+map_over_byte_table (Lisp_Byte_Table *ct, Lisp_Char_Table* root,
+ Emchar ofs, int place,
int (*fn) (struct chartab_range *range,
Lisp_Object val, void *arg),
void *arg)
if (UINT8_BYTE_TABLE_P (v))
{
retval
- = map_over_uint8_byte_table (XUINT8_BYTE_TABLE(v),
+ = map_over_uint8_byte_table (XUINT8_BYTE_TABLE(v), root,
c, place - 1, fn, arg);
c += unit;
}
else if (UINT16_BYTE_TABLE_P (v))
{
retval
- = map_over_uint16_byte_table (XUINT16_BYTE_TABLE(v),
+ = map_over_uint16_byte_table (XUINT16_BYTE_TABLE(v), root,
c, place - 1, fn, arg);
c += unit;
}
else if (BYTE_TABLE_P (v))
{
- retval = map_over_byte_table (XBYTE_TABLE(v),
+ retval = map_over_byte_table (XBYTE_TABLE(v), root,
c, place - 1, fn, arg);
c += unit;
}
+ else if (EQ (v, Qunloaded))
+ {
+#if 0
+ struct chartab_range rainj;
+ Emchar c1 = c + unit;
+
+ rainj.type = CHARTAB_RANGE_CHAR;
+
+ for (; c < c1 && retval == 0; c++)
+ {
+ Lisp_Object ret = get_char_id_table (root, c);
+
+ if (!UNBOUNDP (ret))
+ {
+ rainj.ch = c;
+ retval = (fn) (&rainj, ret, arg);
+ }
+ }
+#else
+ ct->property[i] = Qunbound;
+ c += unit;
+#endif
+ }
else if (!UNBOUNDP (v))
{
struct chartab_range rainj;
return retval;
}
+#ifdef HAVE_DATABASE
+static void
+save_byte_table (Lisp_Byte_Table *ct, Lisp_Char_Table* root,
+ Lisp_Object db,
+ Emchar ofs, int place)
+{
+ int i, retval;
+ Lisp_Object v;
+ int unit = 1 << (8 * place);
+ Emchar c = ofs;
+
+ for (i = 0, retval = 0; i < 256 && retval == 0; i++)
+ {
+ v = ct->property[i];
+ if (UINT8_BYTE_TABLE_P (v))
+ {
+ save_uint8_byte_table (XUINT8_BYTE_TABLE(v), root, db,
+ c, place - 1);
+ c += unit;
+ }
+ else if (UINT16_BYTE_TABLE_P (v))
+ {
+ save_uint16_byte_table (XUINT16_BYTE_TABLE(v), root, db,
+ c, place - 1);
+ c += unit;
+ }
+ else if (BYTE_TABLE_P (v))
+ {
+ save_byte_table (XBYTE_TABLE(v), root, db,
+ c, place - 1);
+ c += unit;
+ }
+ else if (EQ (v, Qunloaded))
+ {
+ c += unit;
+ }
+ else if (!UNBOUNDP (v))
+ {
+ struct chartab_range rainj;
+ Emchar c1 = c + unit;
+
+ rainj.type = CHARTAB_RANGE_CHAR;
+
+ for (; c < c1 && retval == 0; c++)
+ {
+ Fput_database (Fprin1_to_string (make_char (c), Qnil),
+ Fprin1_to_string (v, Qnil),
+ db, Qt);
+ put_char_id_table (root, make_char (c), Qunloaded);
+ }
+ }
+ else
+ c += unit;
+ }
+}
+#endif
Lisp_Object
get_byte_table (Lisp_Object table, unsigned char idx)
Lisp_Object Vcharacter_variant_table;
+Lisp_Object Qsystem_char_id;
+
Lisp_Object Q_decomposition;
Lisp_Object Qto_ucs;
Lisp_Object Q_ucs;
+Lisp_Object Q_ucs_variants;
Lisp_Object Qcompat;
Lisp_Object Qisolated;
Lisp_Object Qinitial;
*/
(character))
{
+ Lisp_Object ret;
+
CHECK_CHAR (character);
- return Fcopy_list (get_char_id_table
- (XCHAR_TABLE(Vcharacter_variant_table),
- XCHAR (character)));
+ ret = get_char_id_table (XCHAR_TABLE(Vcharacter_variant_table),
+ XCHAR(character));
+ if (CONSP (ret))
+ return Fcopy_list (ret);
+ else
+ return Qnil;
}
#endif
#ifdef UTF2000
mark_object (ct->table);
+ mark_object (ct->name);
#else
int i;
#ifdef UTF2000
{ XD_LISP_OBJECT, offsetof(Lisp_Char_Table, table) },
{ XD_LISP_OBJECT, offsetof(Lisp_Char_Table, default_value) },
+ { XD_LISP_OBJECT, offsetof(Lisp_Char_Table, name) },
#else
{ XD_LISP_OBJECT_ARRAY, offsetof (Lisp_Char_Table, ascii), NUM_ASCII_CHARS },
#ifdef MULE
#ifdef UTF2000
ct->table = Qunbound;
ct->default_value = value;
+ ct->unloaded = 0;
#else
int i;
}
else
ct->mirror_table = Qnil;
+#else
+ ct->name = Qnil;
#endif
ct->next_table = Qnil;
XSETCHAR_TABLE (obj, ct);
ctnew->type = ct->type;
#ifdef UTF2000
ctnew->default_value = ct->default_value;
+ /* [tomo:2002-01-21] Perhaps this code seems wrong */
+ ctnew->name = ct->name;
if (UINT8_BYTE_TABLE_P (ct->table))
{
return Qnil;
}
+#ifdef UTF2000
+Lisp_Char_Table* char_attribute_table_to_put;
+Lisp_Object Qput_char_table_map_function;
+Lisp_Object value_to_put;
+
+DEFUN ("put-char-table-map-function",
+ Fput_char_table_map_function, 2, 2, 0, /*
+For internal use. Don't use it.
+*/
+ (c, value))
+{
+ put_char_id_table_0 (char_attribute_table_to_put, c, value_to_put);
+ return Qnil;
+}
+#endif
+
/* Assign VAL to all characters in RANGE in char table CT. */
void
*/
if ( CHAR_TABLEP (encoding_table) )
{
+#if 1
+ char_attribute_table_to_put = ct;
+ value_to_put = val;
+ Fmap_char_attribute (Qput_char_table_map_function,
+ XCHAR_TABLE_NAME (encoding_table),
+ Qnil);
+#else
for (c = 0; c < 1 << 24; c++)
{
if ( INTP (get_char_id_table (XCHAR_TABLE(encoding_table),
c)) )
put_char_id_table_0 (ct, c, val);
}
+#endif
}
else
{
return 0;
}
+
+#if defined(HAVE_DATABASE)
+EXFUN (Fload_char_attribute_table, 1);
+#endif
+
#endif
/* Map FN (with client data ARG) over range RANGE in char table CT.
return retval;
}
if (UINT8_BYTE_TABLE_P (ct->table))
- return map_over_uint8_byte_table (XUINT8_BYTE_TABLE(ct->table),
+ return map_over_uint8_byte_table (XUINT8_BYTE_TABLE(ct->table), ct,
0, 3, fn, arg);
else if (UINT16_BYTE_TABLE_P (ct->table))
- return map_over_uint16_byte_table (XUINT16_BYTE_TABLE(ct->table),
+ return map_over_uint16_byte_table (XUINT16_BYTE_TABLE(ct->table), ct,
0, 3, fn, arg);
else if (BYTE_TABLE_P (ct->table))
- return map_over_byte_table (XBYTE_TABLE(ct->table),
+ return map_over_byte_table (XBYTE_TABLE(ct->table), ct,
0, 3, fn, arg);
- else if (!UNBOUNDP (ct->table))
-#if 0
+ else if (EQ (ct->table, Qunloaded))
{
+#if 0
struct chartab_range rainj;
int unit = 1 << 30;
Emchar c = 0;
for (retval = 0; c < c1 && retval == 0; c++)
{
- rainj.ch = c;
- retval = (fn) (&rainj, ct->table, arg);
+ Lisp_Object ret = get_char_id_table (ct, c);
+
+ if (!UNBOUNDP (ret))
+ {
+ rainj.ch = c;
+ retval = (fn) (&rainj, ct->table, arg);
+ }
}
return retval;
- }
#else
- return (fn) (range, ct->table, arg);
+ ct->table = Qunbound;
#endif
+ }
+ else if (!UNBOUNDP (ct->table))
+ return (fn) (range, ct->table, arg);
return 0;
#else
{
struct chartab_range rainj;
struct map_char_table_for_charset_arg mcarg;
+#ifdef HAVE_DATABASE
+ if (XCHAR_TABLE_UNLOADED(encoding_table))
+ Fload_char_attribute_table (XCHAR_TABLE_NAME (encoding_table));
+#endif
mcarg.fn = fn;
mcarg.ct = ct;
mcarg.arg = arg;
= get_char_id_table (XCHAR_TABLE(Vcharacter_variant_table),
c);
- if (NILP (Fmemq (v, ret)))
+ if (!CONSP (ret))
+ {
+ put_char_id_table (XCHAR_TABLE(Vcharacter_variant_table),
+ make_char (c), Fcons (character, Qnil));
+ }
+ else if (NILP (Fmemq (v, ret)))
{
put_char_id_table (XCHAR_TABLE(Vcharacter_variant_table),
make_char (c), Fcons (character, ret));
c = XINT (value);
ret = get_char_id_table (XCHAR_TABLE(Vcharacter_variant_table), c);
- if (NILP (Fmemq (character, ret)))
+ if (!CONSP (ret))
+ {
+ put_char_id_table (XCHAR_TABLE(Vcharacter_variant_table),
+ make_char (c), Fcons (character, Qnil));
+ }
+ else if (NILP (Fmemq (character, ret)))
{
put_char_id_table (XCHAR_TABLE(Vcharacter_variant_table),
make_char (c), Fcons (character, ret));
{
table = make_char_id_table (Qunbound);
Fputhash (attribute, table, Vchar_attribute_hash_table);
+#ifdef HAVE_DATABASE
+ XCHAR_TABLE_NAME (table) = attribute;
+#endif
}
put_char_id_table (XCHAR_TABLE(table), character, value);
return value;
return Qnil;
}
+Lisp_Object
+char_attribute_system_db_file (Lisp_Object key_type, Lisp_Object attribute,
+ int writing_mode)
+{
+ Lisp_Object db_dir = Vexec_directory;
+
+ if (NILP (db_dir))
+ db_dir = build_string ("../lib-src");
+
+ db_dir = Fexpand_file_name (build_string ("char-db"), db_dir);
+ if (writing_mode && NILP (Ffile_exists_p (db_dir)))
+ Fmake_directory_internal (db_dir);
+
+ db_dir = Fexpand_file_name (Fsymbol_name (key_type), db_dir);
+ if (writing_mode && NILP (Ffile_exists_p (db_dir)))
+ Fmake_directory_internal (db_dir);
+
+ {
+ Lisp_Object attribute_name = Fsymbol_name (attribute);
+ Lisp_Object dest = Qnil, ret;
+ int base = 0;
+ struct gcpro gcpro1, gcpro2;
+ int len = XSTRING_CHAR_LENGTH (attribute_name);
+ int i;
+
+ GCPRO2 (dest, ret);
+ for (i = 0; i < len; i++)
+ {
+ Emchar c = string_char (XSTRING (attribute_name), i);
+
+ if ( (c == '/') || (c == '%') )
+ {
+ char str[4];
+
+ sprintf (str, "%%%02X", c);
+ dest = concat3 (dest,
+ Fsubstring (attribute_name,
+ make_int (base), make_int (i)),
+ build_string (str));
+ base = i + 1;
+ }
+ }
+ ret = Fsubstring (attribute_name, make_int (base), make_int (len));
+ dest = concat2 (dest, ret);
+ UNGCPRO;
+ return Fexpand_file_name (dest, db_dir);
+ }
+#if 0
+ return Fexpand_file_name (Fsymbol_name (attribute), db_dir);
+#endif
+}
+
+DEFUN ("save-char-attribute-table", Fsave_char_attribute_table, 1, 1, 0, /*
+Save values of ATTRIBUTE into database file.
+*/
+ (attribute))
+{
+#ifdef HAVE_DATABASE
+ Lisp_Object table = Fgethash (attribute,
+ Vchar_attribute_hash_table, Qunbound);
+ Lisp_Char_Table *ct;
+ Lisp_Object db;
+ Lisp_Object db_file;
+
+ if (CHAR_TABLEP (table))
+ ct = XCHAR_TABLE (table);
+ else
+ return Qnil;
+
+ db_file = char_attribute_system_db_file (Qsystem_char_id, attribute, 1);
+ db = Fopen_database (db_file, Qnil, Qnil, Qnil, Qnil);
+ if (!NILP (db))
+ {
+ if (UINT8_BYTE_TABLE_P (ct->table))
+ save_uint8_byte_table (XUINT8_BYTE_TABLE(ct->table), ct, db, 0, 3);
+ else if (UINT16_BYTE_TABLE_P (ct->table))
+ save_uint16_byte_table (XUINT16_BYTE_TABLE(ct->table), ct, db, 0, 3);
+ else if (BYTE_TABLE_P (ct->table))
+ save_byte_table (XBYTE_TABLE(ct->table), ct, db, 0, 3);
+ Fclose_database (db);
+ return Qt;
+ }
+ else
+ return Qnil;
+#else
+ return Qnil;
+#endif
+}
+
+DEFUN ("reset-char-attribute-table", Freset_char_attribute_table, 1, 1, 0, /*
+Reset values of ATTRIBUTE with database file.
+*/
+ (attribute))
+{
+#ifdef HAVE_DATABASE
+ Lisp_Object table = Fgethash (attribute,
+ Vchar_attribute_hash_table, Qunbound);
+ Lisp_Char_Table *ct;
+ Lisp_Object db_file
+ = char_attribute_system_db_file (Qsystem_char_id, attribute, 0);
+
+ if (!NILP (Ffile_exists_p (db_file)))
+ {
+ if (UNBOUNDP (table))
+ {
+ table = make_char_id_table (Qunbound);
+ Fputhash (attribute, table, Vchar_attribute_hash_table);
+ XCHAR_TABLE_NAME(table) = attribute;
+ }
+ ct = XCHAR_TABLE (table);
+ ct->table = Qunloaded;
+ XCHAR_TABLE_UNLOADED(table) = 1;
+ return Qt;
+ }
+#endif
+ return Qnil;
+}
+
+#ifdef HAVE_DATABASE
+Lisp_Object
+load_char_attribute_maybe (Emchar ch, Lisp_Object attribute)
+{
+ Lisp_Object db;
+ Lisp_Object db_file
+ = char_attribute_system_db_file (Qsystem_char_id, attribute, 0);
+
+ db = Fopen_database (db_file, Qnil, Qnil, Qnil, Qnil);
+ if (!NILP (db))
+ {
+ Lisp_Object val
+ = Fget_database (Fprin1_to_string (make_char (ch), Qnil),
+ db, Qunbound);
+ if (!UNBOUNDP (val))
+ val = Fread (val);
+ else
+ val = Qunbound;
+ Fclose_database (db);
+ return val;
+ }
+ else
+ return Qunbound;
+}
+
+Lisp_Char_Table* char_attribute_table_to_load;
+
+Lisp_Object Qload_char_attribute_table_map_function;
+
+DEFUN ("load-char-attribute-table-map-function",
+ Fload_char_attribute_table_map_function, 2, 2, 0, /*
+For internal use. Don't use it.
+*/
+ (key, value))
+{
+ Lisp_Object c = Fread (key);
+ Emchar code = XCHAR (c);
+ Lisp_Object ret = get_char_id_table (char_attribute_table_to_load, code);
+
+ if (EQ (ret, Qunloaded))
+ put_char_id_table_0 (char_attribute_table_to_load, code, Fread (value));
+ return Qnil;
+}
+#endif
+
+DEFUN ("load-char-attribute-table", Fload_char_attribute_table, 1, 1, 0, /*
+Load values of ATTRIBUTE into database file.
+*/
+ (attribute))
+{
+#ifdef HAVE_DATABASE
+ Lisp_Object db;
+ Lisp_Object db_file
+ = char_attribute_system_db_file (Qsystem_char_id, attribute, 0);
+
+ db = Fopen_database (db_file, Qnil, Qnil, Qnil, Qnil);
+ if (!NILP (db))
+ {
+ Lisp_Object table = Fgethash (attribute,
+ Vchar_attribute_hash_table,
+ Qunbound);
+ struct gcpro gcpro1, gcpro2;
+
+ if (CHAR_TABLEP (table))
+ char_attribute_table_to_load = XCHAR_TABLE (table);
+ else
+ {
+ Fclose_database (db);
+ return Qnil;
+ }
+ GCPRO2 (db, table);
+ Fmap_database (Qload_char_attribute_table_map_function, db);
+ UNGCPRO;
+ Fclose_database (db);
+ XCHAR_TABLE_UNLOADED(table) = 0;
+ return Qt;
+ }
+ else
+ return Qnil;
+#endif
+}
+
DEFUN ("map-char-attribute", Fmap_char_attribute, 2, 3, 0, /*
Map FUNCTION over entries in ATTRIBUTE, calling it with two args,
each key and value in the table.
if (NILP (range))
range = Qt;
decode_char_table_range (range, &rainj);
+#ifdef HAVE_DATABASE
+ if (CHAR_TABLE_UNLOADED(ct))
+ Fload_char_attribute_table (attribute);
+#endif
slarg.function = function;
slarg.retval = Qnil;
GCPRO2 (slarg.function, slarg.retval);
INIT_LRECORD_IMPLEMENTATION (uint16_byte_table);
INIT_LRECORD_IMPLEMENTATION (byte_table);
+ defsymbol (&Qsystem_char_id, "system-char-id");
+
defsymbol (&Qto_ucs, "=>ucs");
defsymbol (&Q_ucs, "->ucs");
+ defsymbol (&Q_ucs_variants, "->ucs-variants");
defsymbol (&Q_decomposition, "->decomposition");
defsymbol (&Qcompat, "compat");
defsymbol (&Qisolated, "isolated");
DEFSUBR (Fchar_attribute_list);
DEFSUBR (Ffind_char_attribute_table);
+ defsymbol (&Qput_char_table_map_function, "put-char-table-map-function");
+ DEFSUBR (Fput_char_table_map_function);
+ DEFSUBR (Fsave_char_attribute_table);
+ DEFSUBR (Freset_char_attribute_table);
+#ifdef HAVE_DATABASE
+ defsymbol (&Qload_char_attribute_table_map_function,
+ "load-char-attribute-table-map-function");
+ DEFSUBR (Fload_char_attribute_table_map_function);
+#endif
+ DEFSUBR (Fload_char_attribute_table);
DEFSUBR (Fchar_attribute_alist);
DEFSUBR (Fget_char_attribute);
DEFSUBR (Fput_char_attribute);
Vcharacter_composition_table = make_char_id_table (Qnil);
staticpro (&Vcharacter_variant_table);
- Vcharacter_variant_table = make_char_id_table (Qnil);
+ Vcharacter_variant_table = make_char_id_table (Qunbound);
#endif
/* DO NOT staticpro this. It works just like Vweak_hash_tables. */
Vall_syntax_tables = Qnil;
staticpro (&Vchar_attribute_hash_table);
Vchar_attribute_hash_table
= make_lisp_hash_table (16, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ);
+#ifdef HAVE_DATABASE
+ Fputhash (Q_ucs_variants, Vcharacter_variant_table,
+ Vchar_attribute_hash_table);
+ XCHAR_TABLE_NAME (Vcharacter_variant_table) = Q_ucs_variants;
+#endif /* HAVE_DATABASE */
#endif /* UTF2000 */
#ifdef MULE
/* Set this now, so first buffer creation can refer to it. */
/* 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 MORIOKA Tomohiko
+ Copyright (C) 1999,2000,2001,2002 MORIOKA Tomohiko
This file is part of XEmacs.
#ifdef UTF2000
+#ifdef HAVE_DATABASE
+#include "database.h"
+#endif
+
EXFUN (Fmake_char, 3);
EXFUN (Fdecode_char, 3);
#ifdef UTF2000
Lisp_Object table;
Lisp_Object default_value;
+ Lisp_Object name;
+ unsigned char unloaded;
#else
Lisp_Object ascii[NUM_ASCII_CHARS];
#ifdef UTF2000
+#define CHAR_TABLE_NAME(ct) ((ct)->name)
+#define XCHAR_TABLE_NAME(ct) CHAR_TABLE_NAME (XCHAR_TABLE (ct))
+
+#define CHAR_TABLE_UNLOADED(ct) ((ct)->unloaded)
+#define XCHAR_TABLE_UNLOADED(ct) CHAR_TABLE_UNLOADED (XCHAR_TABLE (ct))
+
INLINE_HEADER Lisp_Object
CHAR_TABLE_VALUE_UNSAFE (Lisp_Char_Table *ct, Emchar ch);
INLINE_HEADER Lisp_Object
\f
#ifdef UTF2000
-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);
- if (UNBOUNDP (val))
- return cit->default_value;
- else
- return val;
-}
-
INLINE_HEADER void
put_char_id_table_0 (Lisp_Char_Table* cit, Emchar code, Lisp_Object value);
INLINE_HEADER void
cit->table = put_byte_table (table1, (unsigned char)(code >> 24), table2);
}
+#ifdef HAVE_DATABASE
+extern Lisp_Object Qsystem_char_id;
+
+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);
+#endif
+
+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);
+#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;
+ put_char_id_table_0 (cit, ch, val);
+ }
+#endif
+ if (UNBOUNDP (val))
+ return cit->default_value;
+ else
+ return val;
+}
+
void
decode_char_table_range (Lisp_Object range, struct chartab_range *outrange);
if you're working with ASCII files. */
#undef MULE
+/* Define this if you want UTF-2000 support (character representation
+ based on character object model). */
#undef UTF2000
#undef CHAR_IS_UCS4
+/* Compile in support for external character database. */
+#undef HAVE_CHISE_CLIENT
+
/* Define this if you want file coding support */
#undef FILE_CODING
#endif /* LISP_FLOAT_TYPE */
Lisp_Object Qnil, Qt, Qquote, Qlambda, Qunbound;
+#ifdef UTF2000
+Lisp_Object Qunloaded;
+#endif
Lisp_Object Qerror_conditions, Qerror_message;
Lisp_Object Qerror, Qquit, Qsyntax_error, Qinvalid_read_syntax;
Lisp_Object Qlist_formation_error;
}
}
-DEFUN ("map-database", Fmapdatabase, 2, 2, 0, /*
+DEFUN ("map-database", Fmap_database, 2, 2, 0, /*
Map FUNCTION over entries in DATABASE, calling it with two args,
each key and value in the database.
*/
DEFSUBR (Fopen_database);
DEFSUBR (Fdatabasep);
- DEFSUBR (Fmapdatabase);
+ DEFSUBR (Fmap_database);
DEFSUBR (Fput_database);
DEFSUBR (Fget_database);
DEFSUBR (Fremove_database);
typedef struct Lisp_Database Lisp_Database;
DECLARE_LRECORD (database, Lisp_Database);
+EXFUN (Fopen_database, 5);
+EXFUN (Fput_database, 4);
+EXFUN (Fget_database, 3);
+EXFUN (Fclose_database, 1);
+EXFUN (Fmap_database, 2);
+
#endif /* INCLUDED_database_h_ */
extern Lisp_Object Qtop_level;
extern Lisp_Object Qtrue_list_p;
extern Lisp_Object Qunbound, Qunderflow_error;
+#ifdef UTF2000
+extern Lisp_Object Qunloaded;
+#endif
extern Lisp_Object Qunderline, Quser_files_and_directories;
extern Lisp_Object Qvalues;
extern Lisp_Object Qvariable_documentation, Qvariable_domain;
/* Functions to handle multilingual characters.
Copyright (C) 1992, 1995 Free Software Foundation, Inc.
Copyright (C) 1995 Sun Microsystems, Inc.
- Copyright (C) 1999,2000,2001 MORIOKA Tomohiko
+ Copyright (C) 1999,2000,2001,2002 MORIOKA Tomohiko
This file is part of XEmacs.
#ifdef UTF2000
-INLINE_HEADER int CHARSET_BYTE_SIZE (Lisp_Charset* cs);
-INLINE_HEADER int
-CHARSET_BYTE_SIZE (Lisp_Charset* cs)
-{
- /* ad-hoc method for `ascii' */
- if ((CHARSET_CHARS (cs) == 94) &&
- (CHARSET_BYTE_OFFSET (cs) != 33))
- return 128 - CHARSET_BYTE_OFFSET (cs);
- else
- return CHARSET_CHARS (cs);
-}
-
-#define XCHARSET_BYTE_SIZE(ccs) CHARSET_BYTE_SIZE (XCHARSET (ccs))
-
+int decoding_table_check_elements (Lisp_Object v, int dim, int ccs_len);
int
decoding_table_check_elements (Lisp_Object v, int dim, int ccs_len)
{
|| (XCHAR (character) != XINT (value)))
{
Lisp_Object v = XCHARSET_DECODING_TABLE (ccs);
- int ccs_len = XCHARSET_BYTE_SIZE (ccs);
int code_point;
if (CONSP (value))
decoding_table_remove_char (ccs, XINT (cpos));
}
}
- else
- {
- XCHARSET_DECODING_TABLE (ccs)
- = v = make_vector (ccs_len, Qnil);
- }
-
decoding_table_put_char (ccs, code_point, character);
}
return value;
}
if (CHAR_TABLEP (encoding_table))
{
- put_char_id_table (XCHAR_TABLE(encoding_table), character, Qnil);
+ put_char_id_table (XCHAR_TABLE(encoding_table), character, Qunbound);
}
return Qt;
}
CHARSET_CCL_PROGRAM (cs) = Qnil;
CHARSET_REVERSE_DIRECTION_CHARSET (cs) = Qnil;
#ifdef UTF2000
- CHARSET_DECODING_TABLE(cs) = Qnil;
+ CHARSET_DECODING_TABLE(cs) = Qunbound;
CHARSET_MIN_CODE (cs) = min_code;
CHARSET_MAX_CODE (cs) = max_code;
CHARSET_CODE_OFFSET (cs) = code_offset;
}
return table;
}
+
+DEFUN ("save-charset-mapping-table", Fsave_charset_mapping_table, 1, 1, 0, /*
+Save mapping-table of CHARSET.
+*/
+ (charset))
+{
+#ifdef HAVE_DATABASE
+ struct Lisp_Charset *cs;
+ int byte_min, byte_max;
+ Lisp_Object db;
+ Lisp_Object db_file;
+
+ charset = Fget_charset (charset);
+ cs = XCHARSET (charset);
+
+ db_file = char_attribute_system_db_file (CHARSET_NAME (cs),
+ Qsystem_char_id, 1);
+ db = Fopen_database (db_file, Qnil, Qnil, Qnil, Qnil);
+
+ byte_min = CHARSET_BYTE_OFFSET (cs);
+ byte_max = byte_min + CHARSET_BYTE_SIZE (cs);
+ switch (CHARSET_DIMENSION (cs))
+ {
+ case 1:
+ {
+ Lisp_Object table_c = XCHARSET_DECODING_TABLE (charset);
+ int cell;
+
+ for (cell = byte_min; cell < byte_max; cell++)
+ {
+ Lisp_Object c = get_ccs_octet_table (table_c, charset, cell);
+
+ if (CHARP (c))
+ Fput_database (Fprin1_to_string (make_int (cell), Qnil),
+ Fprin1_to_string (c, Qnil),
+ db, Qt);
+ }
+ }
+ break;
+ case 2:
+ {
+ Lisp_Object table_r = XCHARSET_DECODING_TABLE (charset);
+ int row;
+
+ for (row = byte_min; row < byte_max; row++)
+ {
+ Lisp_Object table_c = get_ccs_octet_table (table_r, charset, row);
+ int cell;
+
+ for (cell = byte_min; cell < byte_max; cell++)
+ {
+ Lisp_Object c = get_ccs_octet_table (table_c, charset, cell);
+
+ if (CHARP (c))
+ Fput_database (Fprin1_to_string (make_int ((row << 8)
+ | cell),
+ Qnil),
+ Fprin1_to_string (c, Qnil),
+ db, Qt);
+ }
+ }
+ }
+ break;
+ case 3:
+ {
+ Lisp_Object table_p = XCHARSET_DECODING_TABLE (charset);
+ int plane;
+
+ for (plane = byte_min; plane < byte_max; plane++)
+ {
+ Lisp_Object table_r
+ = get_ccs_octet_table (table_p, charset, plane);
+ int row;
+
+ for (row = byte_min; row < byte_max; row++)
+ {
+ Lisp_Object table_c
+ = get_ccs_octet_table (table_r, charset, row);
+ int cell;
+
+ for (cell = byte_min; cell < byte_max; cell++)
+ {
+ Lisp_Object c = get_ccs_octet_table (table_c, charset,
+ cell);
+
+ if (CHARP (c))
+ Fput_database (Fprin1_to_string (make_int ((plane << 16)
+ | (row << 8)
+ | cell),
+ Qnil),
+ Fprin1_to_string (c, Qnil),
+ db, Qt);
+ }
+ }
+ }
+ }
+ break;
+ default:
+ {
+ Lisp_Object table_g = XCHARSET_DECODING_TABLE (charset);
+ int group;
+
+ for (group = byte_min; group < byte_max; group++)
+ {
+ Lisp_Object table_p
+ = get_ccs_octet_table (table_g, charset, group);
+ int plane;
+
+ for (plane = byte_min; plane < byte_max; plane++)
+ {
+ Lisp_Object table_r
+ = get_ccs_octet_table (table_p, charset, plane);
+ int row;
+
+ for (row = byte_min; row < byte_max; row++)
+ {
+ Lisp_Object table_c
+ = get_ccs_octet_table (table_r, charset, row);
+ int cell;
+
+ for (cell = byte_min; cell < byte_max; cell++)
+ {
+ Lisp_Object c
+ = get_ccs_octet_table (table_c, charset, cell);
+
+ if (CHARP (c))
+ Fput_database (Fprin1_to_string
+ (make_int (( group << 24)
+ | (plane << 16)
+ | (row << 8)
+ | cell),
+ Qnil),
+ Fprin1_to_string (c, Qnil),
+ db, Qt);
+ }
+ }
+ }
+ }
+ }
+ }
+ return Fclose_database (db);
+#else
+ return Qnil;
#endif
+}
+
+#ifdef HAVE_CHISE_CLIENT
+Emchar
+load_char_decoding_entry_maybe (Lisp_Object ccs, int code_point)
+{
+ Lisp_Object db;
+ Lisp_Object db_file
+ = char_attribute_system_db_file (XCHARSET_NAME(ccs), Qsystem_char_id,
+ 0);
+
+ db = Fopen_database (db_file, Qnil, Qnil, Qnil, Qnil);
+ if (!NILP (db))
+ {
+ Lisp_Object ret
+ = Fget_database (Fprin1_to_string (make_int (code_point), Qnil),
+ db, Qnil);
+ if (!NILP (ret))
+ {
+ ret = Fread (ret);
+ if (CHARP (ret))
+ {
+ decoding_table_put_char (ccs, code_point, ret);
+ Fclose_database (db);
+ return XCHAR (ret);
+ }
+ }
+ Fclose_database (db);
+ }
+ return -1;
+}
+#endif /* HAVE_CHISE_CLIENT */
+#endif /* UTF2000 */
\f
/************************************************************************/
DEFSUBR (Fdecode_char);
DEFSUBR (Fdecode_builtin_char);
DEFSUBR (Fencode_char);
+ DEFSUBR (Fsave_charset_mapping_table);
#endif
DEFSUBR (Fmake_char);
DEFSUBR (Fchar_charset);
Fprovide (intern ("utf-2000"));
#endif
+#ifdef HAVE_CHISE_CLIENT
+ Fprovide (intern ("chise"));
+#endif
+
#ifdef HAVE_EGG
Fprovide (intern ("egg"));
#endif
XSYMBOL (Qnil)->function = Qunbound;
+#ifdef UTF2000
+ /* [tomo:2002-01-22] We should not define Qunloaded as a normal symbol */
+ defsymbol (&Qunloaded, "#<unloaded>");
+#endif
+
defsymbol (&Qt, "t");
XSYMBOL (Qt)->value = Qt; /* Veritas aeterna */
Vquit_flag = Qnil;