(char_encode_big5): Support entity-reference.
[chise/xemacs-chise.git-] / src / ChangeLog
index dfc1cce..c600e24 100644 (file)
@@ -1,3 +1,645 @@
+2002-08-10  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * text-coding.c (char_encode_as_entity_reference): New function.
+       (char_encode_utf8): Use `char_encode_as_entity_reference'.
+
+2002-08-09  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * text-coding.c (decode_coding_big5): Support entity-reference
+       decoding feature.
+
+2002-08-09  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * text-coding.c (allocate_coding_system): Initialize initial
+       charsets for CODESYS_UTF8.
+       (Fmake_coding_system): Accept charset-g0, charset-g1 and
+       charset-g2 for CODESYS_UTF8.
+       (decode_coding_utf8): Use charset-g0.
+       (char_encode_utf8): Use charset-g0; use charset-g1 and charset-g2
+       to force variants to map to UCS.
+
+2002-07-29  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * text-coding.c (Qutf_8_mcs): New variable.
+       (syms_of_file_coding): Add new symbol `utf-8-mcs' in UTF-2000.
+       (complex_vars_of_file_coding): Define coding-system `utf-8-mcs'
+       instead of `utf-8' in UTF-2000.
+
+2002-07-22  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * mule-charset.c (charset_code_point): If CHARSET_CONVERSION is
+       CONVERSION_IDENTICAL, identical conversion is used even if a CCS
+       is ISO-2022 style; instead of it, CONVERSION_94, CONVERSION_96,
+       CONVERSION_94x94, CONVERSION_96x96, CONVERSION_94x94x94,
+       CONVERSION_96x96x96, CONVERSION_94x94x94x94 and
+       CONVERSION_96x96x96x96 are introduced.
+       (complex_vars_of_mule_charset): Specify CONVERSION_96 instead of
+       CONVERSION_IDENTICAL for thai-tis620; Specify CONVERSION_94x94
+       instead of CONVERSION_IDENTICAL for japanese-jisx0208-1990.
+
+       * char-ucs.h (CONVERSION_94): New macro.
+       (CONVERSION_96): New macro.
+       (CONVERSION_94x94): New macro.
+       (CONVERSION_96x96): New macro.
+       (CONVERSION_94x94x94): New macro.
+       (CONVERSION_96x96x96): New macro.
+       (CONVERSION_94x94x94x60): New macro.
+       (CONVERSION_94x94x94x94): New macro.
+       (CONVERSION_96x96x96x96): New macro.
+
+2002-07-17  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * chartab.c (Vcharacter_variant_table): Deleted.
+       (Fchar_variants): Use character-attribute `->ucs-variants' instead
+       of `Vcharacter_variant_table'.
+       (Fput_char_attribute): Likewise.
+       (vars_of_chartab): Don't setup `Vcharacter_variant_table'.
+       (complex_vars_of_chartab): Likewise.
+
+2002-07-17  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * lisp.h: Add an EXFUN for `Fchar_ref_p'.
+
+       * fns.c (Qideographic_structure): New variable.
+       (Qkeyword_char): New variable.
+       (ids_format_unit): New function.
+       (Fideographic_structure_to_ids): New function.
+       (syms_of_fns): Add new symbols `ideographic-structure' and
+       `:char'; add new builtin function `ideographic-structure-to-ids'.
+
+       * data.c (Fchar_ref_p): New function.
+       (syms_of_data): Add new builtin function `char-ref-p'.
+
+       * chartab.h: Add an EXFUN for `Ffind_char'.
+
+2002-07-16  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * text-coding.c (Vcharacter_composition_table): Deleted.
+       (COMPOSE_ADD_CHAR): Use the implementation for external-DB support
+       in every UTF-2000.
+
+       * chartab.c: Add EXFUN for `Fmap_char_attribute' in every
+       UTF-2000.
+       (Vcharacter_composition_table): Deleted.
+       (Fget_composite_char): Use the implementation for external-DB
+       support in every UTF-2000.
+       (Fput_char_attribute): Likewise.
+       (char_attribute_system_db_file): Don't define if external-DB
+       feature is not available.
+       (Fsave_char_attribute_table): Likewise.
+       (Fmount_char_attribute_table): Likewise.
+       (Fclose_char_attribute_table): Likewise.
+       (Freset_char_attribute_table): Likewise.
+       (Fload_char_attribute_table): Likewise.
+       (syms_of_chartab): Don't define `save-char-attribute-table',
+       `mount-char-attribute-table', `reset-char-attribute-table',
+       `close-char-attribute-table' and `load-char-attribute-table' if
+       external-DB feature is not available.
+       (vars_of_chartab): Don't setup `Vcharacter_composition_table'.
+
+2002-07-15  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * text-coding.c (Qcomposition): Add extern if external-DB feature
+       is supported.
+       (Vcharacter_composition_table): Don't add extern if external-DB
+       feature is supported.
+       (COMPOSE_ADD_CHAR): Modify for new data-representation of
+       character composition rule if external-DB feature is supported.
+
+       * chartab.c (Vcharacter_composition_table): Don't define if
+       external-DB feature is supported.
+       (Qcomposition): New variable.
+       (Fget_composite_char): New implementation for external-DB support.
+       (Fput_char_attribute): Use `composition' property of each
+       character instead of `Vcharacter_composition_table' to store
+       character-composition rules if external-DB feature is supported.
+       (syms_of_chartab): Add new symbol `composition'.
+       (vars_of_chartab): Don't setup `Vcharacter_composition_table' if
+       external-DB feature is supported.
+
+2002-07-14  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * chartab.c (Vchar_db_stingy_mode): New variable.
+       (load_char_attribute_maybe): Close database if
+       Vchar_db_stingy_mode is not NIL.
+       (Fload_char_attribute_table_map_function): Use
+       `get_char_id_table_0' instead of `get_char_id_table'.
+       (vars_of_chartab): Add new variable `char-db-stingy-mode'.
+
+       * chartab.h (get_char_id_table_0): New inline function.
+       (get_char_id_table): Use `get_char_id_table_0'.
+
+2002-07-07  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * text-coding.c (decode_coding_utf8): Use `COMPOSE_FLUSH_CHARS'
+       and `COMPOSE_ADD_CHAR'.
+       (decode_coding_iso2022): Use `decode_flush_er_chars'.
+
+2002-07-07  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * text-coding.c (COMPOSE_FLUSH_CHARS): Use `decode_add_er_char'
+       instead of `DECODE_ADD_UCS_CHAR'.
+       (COMPOSE_ADD_CHAR): Likewise.
+
+2002-07-06  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * text-coding.c (decode_flush_er_chars): New inline function.
+       (decode_add_er_char): New function.
+       (decode_coding_utf8): Use `decode_flush_er_chars' and
+       `decode_add_er_char'.
+
+2002-07-06  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * text-coding.c (decode_coding_utf8): Flush for er_buf must be
+       done before `decode_output_utf8_partial_char'.
+
+       * mule-charset.c (complex_vars_of_mule_charset): Specify
+       `Vcharset_ucs' as the mother of `Vcharset_ucs_cns',
+       `Vcharset_ucs_ks' and `Vcharset_ucs_big5'.
+
+2002-07-05  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mule-charset.c (decode_defined_char): New function; search
+       mother.
+       (decode_builtin_char): Don't search mother if
+       XCHARSET_MAX_CODE(charset) == 0.
+       (charset_code_point): Search mother if XCHARSET_MAX_CODE(charset)
+       == 0 even if code >= XCHARSET_MAX_CODE(charset).
+       (Fdecode_char): Use `decode_defined_char' instead of
+       `DECODE_DEFINED_CHAR'.
+       (complex_vars_of_mule_charset): Specify `Vcharset_ucs' as the
+       mother of `Vcharset_ucs_jis'.
+
+       * text-coding.c (decode_coding_big5): Use `decode_defined_char'
+       instead of `DECODE_DEFINED_CHAR'.
+
+       * char-ucs.h (decode_defined_char): Renamed from
+       `DECODE_DEFINED_CHAR'; changed to normal function.
+       (DECODE_CHAR): Use `decode_defined_char' instead of
+       `DECODE_DEFINED_CHAR'.
+
+       * lisp.h: Add `EXFUN' for `Fstring_to_number'.
+
+2002-07-04  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * char-ucs.h: Add `extern' for `Vcharset_ucs'.
+
+       * text-coding.c (Vcoded_charset_entity_reference_alist): New
+       variable.
+       (Quse_entity_reference): New variable.
+       (Qd): New variable.
+       (Qx): New variable.
+       (QX): New variable.
+       (coding_system_description): Add description for
+       `ccs_priority_list'.
+       (mark_coding_system): Mark `ccs_priority_list' in UTF-2000.
+       (allocate_coding_system): Initialize `ccs_priority_list' in
+       UTF-2000.
+       (Fmake_coding_system): Add description about
+       'use-entity-reference; setup CODING_SYSTEM_USE_ENTITY_REFERENCE
+       (codesys).
+       (Fcoding_system_property): Accept `disable-composition' and
+       `use-entity-reference' in UTF-2000.
+       (struct decoding_stream): Add new member `er_counter' and `er_buf'
+       in UTF-2000.
+       (reset_decoding_stream): Initialize `str->er_counter' in UTF-2000.
+       (decode_coding_utf8): Decode entity-reference if
+       CODING_SYSTEM_USE_ENTITY_REFERENCE (str->codesys).
+       (char_encode_utf8): Encode non-Unicode characters as
+       entity-references if CODING_SYSTEM_USE_ENTITY_REFERENCE
+       (str->codesys).
+       (syms_of_file_coding): Add new symbols `use-entity-reference',
+       `d', `x', `X'.
+       (vars_of_file_coding): Add new variable
+       `coded-charset-entity-reference-alist'.
+       (complex_vars_of_file_coding): Declare `disable-composition' and
+       `use-entity-reference' to be coding-system-properties in UTF-2000.
+
+       * file-coding.h (struct Lisp_Coding_System): Add new member
+       `use_entity_reference' and `ccs_priority_list'.
+       (CODING_SYSTEM_USE_ENTITY_REFERENCE): New macro.
+       (CODING_SYSTEM_CCS_PRIORITY_LIST): New macro.
+       (XCODING_SYSTEM_USE_ENTITY_REFERENCE): New macro.
+
+2002-07-03  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * chartab.c (save_uint8_byte_table): Don't clear the table.
+       (save_uint16_byte_table): Likewise.
+       (save_byte_table): Likewise.
+       (Fmount_char_attribute_table): New function.
+       (syms_of_chartab): Add new builtin function
+       `mount-char-attribute-table'.
+
+2002-07-02  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mule-charset.c (Fsave_charset_mapping_table): Open database as
+       "w+" mode.
+       (load_char_decoding_entry_maybe): Open database as read-only mode.
+
+       * chartab.c (Fsave_char_attribute_table): Don't share `ct->db';
+       open database as "w+" mode.
+       (load_char_attribute_maybe): Open database as read-only mode.
+       (Fload_char_attribute_table): Likewise.
+
+2002-07-02  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * chartab.c (mark_char_table): Don't refer `ct->db_file'.
+       (char_table_description): Delete member `db_file'.
+       (Fmake_char_table): Don't refer `ct->db_file'.
+       (Fcopy_char_table): Likewise.
+       (Fsave_char_attribute_table): Likewise.
+       (Fclose_char_attribute_table): Likewise.
+       (Freset_char_attribute_table): Likewise.
+       (load_char_attribute_maybe): Likewise.
+       (Fload_char_attribute_table): Likewise.
+
+       * chartab.h (struct Lisp_Char_Table): Delete member `db_file'.
+
+2002-07-02  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * chartab.c: Add an EXFUN for `Fmap_char_attribute'.
+       (Fsave_char_attribute_table): Don't check `ct->db_file' if
+       `ct->db' is living.
+       (load_char_attribute_maybe): Likewise.
+       (Fload_char_attribute_table): Likewise.
+
+2002-07-01  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * chartab.c (Fclose_char_attribute_table): Set Qnil on
+       `ct->db_file' unconditionally.
+
+2002-07-01  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * chartab.c (mark_char_table): Mark `ct->db_file' and `ct->db' in
+       UTF-2000.
+       (char_table_description): Add description for `db_file' and `db'
+       in UTF-2000.
+       (Fmake_char_table): Initialize `ct->db_file' and `ct->db' in
+       UTF-2000.
+       (Fcopy_char_table): Copy `ct->db_file' and `ct->db' in UTF-2000.
+       (Fsave_char_attribute_table): Use `ct->db_file' and `ct->db'.
+       (Fclose_char_attribute_table): New function.
+       (Freset_char_attribute_table): Reset `ct->db_file' and `ct->db'.
+       (load_char_attribute_maybe): Change interface; use `cit->db_file'
+       and `cit->db'.
+       (Fload_char_attribute_table): Use `ct->db_file' and `ct->db'.
+       (syms_of_chartab): Add new builtin function
+       `Fclose_char_attribute_table'.
+
+2002-06-28  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * chartab.h (struct Lisp_Char_Table): Add new member `db_file' and
+       `db' in UTF-2000.
+       (load_char_attribute_maybe): Change interface.
+       (get_char_id_table): Modify for `load_char_attribute_maybe'.
+
+2002-06-27  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * database.h: Add an EXFUN for `Fdatabase_live_p'.
+
+2002-04-11  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mule-charset.c (decode_builtin_char): Use `decode_builtin_char'
+       instead of `DECODE_CHAR' for mother; don't use special code for
+       chinese-big5 to use code space of chinese-big5-1 and
+       chinese-big5-2.
+       (complex_vars_of_mule_charset): Use `MIN_CHAR_BIG5_CDP' and
+       `MAX_CHAR_BIG5_CDP' for chinese-big5.
+
+       * char-ucs.h (MIN_CHAR_BIG5_CDP): Revival.
+       (MAX_CHAR_BIG5_CDP): Revival.
+
+2002-04-09  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mule-charset.c (complex_vars_of_mule_charset): Use "big5-0" as
+       the XLFD registry-encoding name of `chinese-big5'.
+
+2002-04-08  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * mule-charset.c (Vcharset_chinese_big5_cdp): Deleted.
+       (Qchinese_big5_cdp): Deleted.
+       (syms_of_mule_charset): Delete symbol `chinese-big5-cdp'.
+       (complex_vars_of_mule_charset): Delete coded-charset
+       `chinese-big5-cdp'.
+
+       * char-ucs.h (CHARSET_ID_OFFSET): Deleted.
+       (LEADING_BYTE_*): Use `MIN_LEADING_BYTE + n' instead of
+       `CHARSET_ID_OFFSET - n' for private CCS.
+       (LEADING_BYTE_CHINESE_BIG5_CDP): Deleted.
+       (MIN_LEADING_BYTE_PRIVATE): Use `(MIN_LEADING_BYTE + 97)' instead
+       of `MIN_LEADING_BYTE'.
+       (MAX_LEADING_BYTE_PRIVATE): Use `-1' instead of
+       `(CHARSET_ID_OFFSET - 97)'.
+       (MIN_CHAR_BIG5_CDP): Deleted.
+       (MAX_CHAR_BIG5_CDP): Deleted.
+
+2002-03-15  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mule.c (vars_of_mule): Update `utf-2000-version' to 0.19.
+
+2002-03-15  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mule.c (Vutf_2000_version): New variable [moved from chartab.c].
+       (vars_of_mule): Add new variable `utf-2000-version' [moved from
+       chartab.c].
+
+       * chartab.c (Vutf_2000_version): Moved to mule.c.
+       (vars_of_chartab): Move code about `utf-2000-version' into mule.c.
+
+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
+       `decoding_table_remove_char' and `decoding_table_put_char'.
+       (remove_char_ccs): Modify for `decoding_table_remove_char'.
+
+       * char-ucs.h (decoding_table_remove_char): Change arguments to
+       hide decoding_table vector.
+       (decoding_table_put_char): Likewise.
+
+2002-01-10  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mule-charset.c (decoding_table_remove_char): Moved to
+       char-ucs.h.
+       (decoding_table_put_char): Likewise.
+
+       * char-ucs.h (decoding_table_check_elements): New prototype [moved
+       from mule-charset.c].
+       (decoding_table_remove_char): New inline function [moved from
+       mule-charset.c].
+       (decoding_table_put_char): Likewise.
+
+2002-01-03  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
+
+       * mule-charset.c (Fmake_charset): Modify DOC-string for UTF-2000
+       extension.
+
 2001-12-31  MORIOKA Tomohiko  <tomo@mousai.as.wakwak.ne.jp>
 
        * mule-charset.c (decode_builtin_char): Support mother charsets.