+2016-11-17 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * chartab.h (USE_CONCORD_OBJECT_SYSTEM): New macro; use it instead
+ of `HAVE_LIBCHISE' to detect to use Concord Object System.
+ (USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE): New macro.
+
+ * text-coding.c: Use `USE_CONCORD_OBJECT_SYSTEM_TO_COMPOSE'
+ instead of `HAVE_LIBCHISE' to detect to use Concord Object System
+ for character composing.
+
+ * mule-charset.c (charset_code_point): Use
+ `USE_CONCORD_OBJECT_SYSTEM' instead of `HAVE_LIBCHISE' to detect
+ to use Concord Object System.
+
+2016-11-16 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * chartab.c: Use `USE_CONCORD_OBJECT_SYSTEM' instead of
+ `HAVE_LIBCHISE' to detect to use Concord Object System.
+
+2016-07-23 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * text-coding.c (Fmake_coding_system): Accept property
+ `charset-g3' for CODESYS_UTF8.
+ (char_encode_utf8): Refer `charset-g3'.
+
+2015-11-25 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * chartab.c (Fchar_feature): When argument ATTRIBUTE is a CCS and
+ whose name is =>FOO, don't try to find =FOO; fix problem when
+ argument ATTRIBUTE is ==>FOO.
+
+2013-05-19 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * text-coding.c (COMPOSE_ADD_CHAR): Use
+ `concord_object_get_attribute' instead of
+ `concord_object_get_feature_value'.
+
+ * chartab.c (char_table_get_db_cos): Use
+ `concord_object_get_attribute' instead of
+ `concord_object_get_feature_value'.
+
+2013-05-02 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * chartab.h (get_char_id_table_ce): Use
+ `load_char_attribute_maybe_cos' instead of
+ `load_char_attribute_maybe'.
+
+ * chartab.c (load_char_attribute_maybe_cos): Return NULL instead
+ of Qunbound as the default value.
+
+2013-05-01 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * chartab.h (load_char_attribute_maybe_cos): New prototype when
+ HAVE_LIBCHISE is defined.
+ (get_char_id_table_ce): New inline function when HAVE_LIBCHISE is
+ defined.
+
+ * mule-charset.c (charset_code_point): Use `get_char_id_table_ce'
+ instead of `get_char_id_table' when HAVE_LIBCHISE is defined.
+ (load_char_decoding_entry_maybe): Don't use
+ `decoding_table_put_char' to avoid GC.
+
+ * text-coding.c (concord_setup_env_maybe): Abolished.
+ (COMPOSE_ADD_CHAR): Use `open_chise_data_source_maybe' instead of
+ `concord_setup_env_maybe'.
+
+2013-05-01 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * chartab.c (open_chise_data_source_maybe): New implementation;
+ don't use `build_string' and `Fexpand_file_name' to avoid GC.
+ (char_table_get_db_cos): New function when HAVE_LIBCHISE is
+ defined.
+ (load_char_attribute_maybe_cos): Likewise.
+
+2013-04-23 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * text-coding.c (struct decoding_stream): Use COS_object instead
+ of Lisp_Object for `combining_table' if HAVE_LIBCHISE is defined.
+ (reset_decoding_stream): Likewise.
+ (COMPOSE_FLUSH_CHARS): Likewise.
+ (concord_setup_env_maybe): New function.
+ (COMPOSE_ADD_CHAR): Use COS API for `str->combining_table' if
+ HAVE_LIBCHISE is defined.
+
+2013-02-16 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * chartab.c (find_char_feature_in_family): New implementation;
+ don't support multiple parents; support non-list mother.
+
+2012-06-11 MORIOKA Tomohiko <tomo.git@chise.org>
+
+ * text-coding.c (Qenable_decomposition): New variable in XEmacs
+ CHISE.
+ (Fmake_coding_system): Add new property `enable-decomposition' in
+ XEmacs CHISE.
+ (char_encode_utf8): Don't decompose character if
+ CODING_SYSTEM_ENABLE_DECOMPOSITION (str->codesys) is false.
+ (syms_of_file_coding): Add new symbol `enable-decomposition' in
+ XEmacs CHISE.
+ (complex_vars_of_file_coding): Define new coding-system-property
+ `enable-decomposition' in XEmacs CHISE.
+
+ * file-coding.h (struct Lisp_Coding_System): Add
+ `enable_decomposition' in XEmacs CHISE.
+ (CODING_SYSTEM_ENABLE_DECOMPOSITION): New macro in XEmacs CHISE.
+ (XCODING_SYSTEM_ENABLE_DECOMPOSITION): New macro in XEmacs CHISE.
+
+2012-02-17 MORIOKA Tomohiko <tomo@zinbun.kyoto-u.ac.jp>
+
+ * text-coding.c (DECODE_ADD_UCS_CHAR): Add `static'.
+
+2012-02-11 MORIOKA Tomohiko <tomo@zinbun.kyoto-u.ac.jp>
+
+ * text-coding.c (DECODE_ADD_UCS_CHAR): Don't use `INLINE_HEADER'.
+
+ * chartab.c (UINT8_DECODE): Don't use `INLINE_HEADER'.
+ (UINT16_DECODE): Ditto.
+
+ * glyphs-eimage.c (png_instantiate):
+ - Use `png_get_image_height (png_ptr, info_ptr)' instead of
+ `info_ptr->height'.
+ - Use `png_get_image_width (png_ptr, info_ptr)' instead of
+ `info_ptr->width'.
+ - Use `png_get_color_type(png_ptr, info_ptr)' instead of
+ `info_ptr->color_type'.
+ - Use `png_get_bit_depth(png_ptr, info_ptr)' instead of
+ `info_ptr->bit_depth'.
+
+2011-07-20 MORIOKA Tomohiko <tomo@zinbun.kyoto-u.ac.jp>
+
+ * mule-charset.c (charset_code_point): If nil is specified as a
+ feature-value, don't find in mother and return -1.
+
+2011-07-22 MORIOKA Tomohiko <tomo@zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Fput_char_attribute): Accept nil as a value of
+ CCS-feature [it means that specified object does not have
+ code-point of the CCS-feature].
+
+2011-06-07 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule-charset.c (complex_vars_of_mule_charset): Use "jisx0208"
+ instead of "jisx0208\\.1990" as the X-registry of `=jis-x0208'.
+
+2011-05-10 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * text-coding.c (char_encode_as_entity_reference): Don't use
+ `DECODE_CHAR' to detect isolated characters.
+
+ * mule-charset.c (charset_code_point): Change the third argument
+ `defined_only' to `accepted_mode'; `accepted_mode' can be
+ CHAR_ISOLATED_ONLY, CHAR_ALL or CHAR_DEFINED_ONLY.
+
+ * char-ucs.h (CHAR_ISOLATED_ONLY): New macro.
+ (CHAR_ALL): New macro.
+ (CHAR_DEFINED_ONLY): New macro.
+
+2011-03-14 MORIOKA Tomohiko <tomo@zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Fchar_feature_base_name_eq): New function when
+ UTF2000 is enabled.
+ (Fput_char_attribute): Use `Fchar_feature_base_name_eq'.
+ (syms_of_chartab): Add new builtin function
+ `char-feature-base-name=' when UTF2000 is enabled.
+
+2011-02-17 MORIOKA Tomohiko <tomo@zinbun.kyoto-u.ac.jp>
+
+ * text-coding.c (Vdecomposition_feature_list): New variable when
+ UTF2000 is defined.
+ (char_encode_utf8): Refer variable `decomposition-feature-list'
+ instead of `=decomposition' feature.
+ (vars_of_file_coding): Add new variable
+ `decomposition-feature-list' when UTF2000 is defined.
+
+2011-02-16 MORIOKA Tomohiko <tomo@zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Fput_char_attribute): Support `=decomposition@FOO' as
+ `=decomposition' feature.
+
+2011-02-12 MORIOKA Tomohiko <tomo@zinbun.kyoto-u.ac.jp>
+
+ * mule-charset.c (Fmake_charset): Fix problem for 94^n or 96^n
+ coded-charsets with builtin characters.
+
+2011-02-09 MORIOKA Tomohiko <tomo@zinbun.kyoto-u.ac.jp>
+
+ * text-coding.c (Qrep_decomposition): New extern.
+ (char_encode_utf8): Try to encode as combing sequence (or IVS).
+
+2011-01-04 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Fconcord_genre_ds): Add "#ifdef HAVE_LIBCHISE" ...
+ "#endif" for code to refer Vchise_system_db_directory.
+
+2010-12-07 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Fconcord_object_put): Use `member' instead of `memq'.
+ (Fconcord_object_adjoin): New function.
+ (Fconcord_object_adjoinX): New function.
+ (syms_of_concord): Defsubred `Fconcord_object_adjoin' and
+ `Fconcord_object_adjoinX'.
+
+2010-12-07 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c:
+ - Include "elconcord.h".
+ - Move EXFUNs for `Fconcord_decode_object', `Fconcord_object_put'
+ and `Fconcord_object_get' to elconcord.h.
+ (Lisp_CONCORD_DS): Moved to elconcord.h.
+ (struct Lisp_CONCORD_DS): Ditto.
+ (XCONCORD_DS): Ditto.
+ (XSET_CONCORD_DS): Ditto.
+ (CONCORD_DS_P): Ditto.
+ (CHECK_CONCORD_DS): Ditto.
+ (CONCHECK_CONCORD_DS): Ditto.
+ (Lisp_CONCORD_Object): Ditto.
+ (struct Lisp_CONCORD_Object): Ditto.
+ (XCONCORD_OBJECT): Ditto.
+ (XSET_CONCORD_OBJECT): Ditto.
+ (CONCORD_OBJECT_P): Ditto.
+ (CHECK_CONCORD_OBJECT): Ditto.
+ (CONCHECK_CONCORD_OBJECT): Ditto.
+ (CONCORD_OBJECT_GENRE): Ditto.
+ (CONCORD_OBJECT_ID): Ditto.
+ (XCONCORD_OBJECT_ID): Ditto.
+ (XCONCORD_OBJECT_GENRE): Ditto.
+ (concord_object_equal): New function.
+ (LRECORD_IMPLEMENTATION of "concord_object"): Use
+ `concord_object_equal'.
+
+ * elconcord.h: New file.
+
+2010-12-07 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (print_concord_object): Use readable form even if
+ `print-readably' is nil.
+
+2010-11-19 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (print_concord_object): Don't display location of
+ data-source when `print-readably' is nil.
+
+2010-11-15 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Fconcord_genre_ds): Use Vchise_system_db_directory as
+ the default location of data-source.
+ (complex_vars_of_concord): Use Vchise_system_db_directory to
+ assign genre `character' and `feature'.
+
+ * chartab.h (Vchise_system_db_directory): New extern when
+ HAVE_CONCORD is defined.
+
+2010-09-15 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c: Include <chise.h> if HAVE_LIBCHISE is defined.
+ (Qcharacter): New variable when HAVE_LIBCHISE is defined.
+ (Qfeature): Ditto.
+ (Fconcord_object_genre): New function.
+ (syms_of_concord):
+ - Add new builtin symbols `character' and `feature' when
+ HAVE_LIBCHISE is defined.
+ - Add Add new builtin function `concord-object-genre'.
+ (complex_vars_of_concord): New function; assign genres `character'
+ and `feature' when HAVE_LIBCHISE is defined.
+
+2010-09-14 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * emacs.c (main_1): Call `complex_vars_of_concord' when
+ HAVE_CONCORD is defined.
+
+ * symsinit.h (complex_vars_of_concord): New prototype.
+
+2010-07-01 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (allocate_character): Add `static'.
+
+2010-07-01 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (allocate_character): New function.
+ (Fdefine_char): Use allocate_character().
+
+2010-06-10 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule.c (vars_of_mule): Update `xemacs-chise-version' to 0.25
+ (Ōkawara).
+
+2010-03-29 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (save_uint8_byte_table): Fixed problem when a property
+ is unloaded.
+ (save_uint16_byte_table): Likewise.
+
+2010-02-21 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Fchar_feature_property): New function when LIBCHISE
+ is enabled.
+ (Fput_char_feature_property): Likewise.
+ (syms_of_chartab): Add new builtin functions
+ `char-feature-property' and `put-char-feature-property' when
+ LIBCHISE is enabled.
+
+2009-04-04 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule-charset.c (Fmake_charset): Add DOC-string of 'iso-ir and
+ '=>iso-ir.
+ (Fcharset_property): Regard '=>iso-ir as same as `iso_ir.
+
+2009-04-03 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule-charset.c (Qto_iso_ir): New variable for XEmacs CHISE.
+ (make_charset): Add new argument `iso_ir'.
+ (Fmake_charset): Add new property `=>iso-ir' in XEmacs CHISE.
+ (Fmake_reverse_direction_charset): Copy CHARSET_ISO_IR(cs) in
+ XEmacs CHISE.
+ (Fcharset_property): Support `iso-ir' in XEmacs CHISE.
+ (syms_of_mule_charset): Add new builtin symbol `=>iso-ir' in
+ XEmacs CHISE.
+ (complex_vars_of_mule_charset): Specify argument `iso_ir' of
+ function `make_charset'.
+
+ * char-ucs.h (LEADING_BYTE_*): Enclose negative value with ( ).
+ (struct Lisp_Charset): Add new member `iso_ir'.
+ (CHARSET_ISO_IR): New macro.
+
+2009-03-07 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule-charset.c (Fdecode_char): Fix problem when decoding GR
+ code-point by GL charset.
+
+2008-10-08 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (concord_id_validate): New function.
+ (structure_type_create_concord): Use `concord_id_validate' instead
+ of `concord_name_validate' to accept integer and character as =id.
+
+2008-09-27 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (func_for_each_object): Fix bug about GC-protection.
+
+2008-09-03 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Fconcord_object_put): Check argument FEATURE is a
+ symbol.
+
+2008-09-18 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * text-coding.c (struct decoding_stream): Add new member
+ `bom_flag' in XEmacs CHISE.
+ (reset_decoding_stream): Ignore U+FEFF in the beginning of stream
+ in XEmacs CHISE.
+
+2008-09-14 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule-charset.c: Move definition of `=jis-x0208@1978' to
+ lisp/mule/mule-conf.el.
+
+2008-09-03 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule-charset.c (Qpartial): New variable in XEmacs CHISE.
+ (make_charset): Add new argument `partial'.
+ (Fmake_charset): Add new property 'partial in XEmacs CHISE.
+ (Fmake_reverse_direction_charset): Modify for `make_charset'.
+ (syms_of_mule_charset): Add new builtin symbol `partial' in XEmacs
+ CHISE.
+ (complex_vars_of_mule_charset): Modify for `make_charset'; specify
+ `=jis-x0208' as a partial coded-charset.
+
+2008-08-06 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * text-coding.c (decode_add_er_char): Fix problem when a character
+ represented by an entity-reference is not defined.
+
+2008-06-04 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * char-ucs.h, chartab.c, fns.c, mule-charset.c: Rename Qmap_* to
+ Qrep_*.
+
+2007-09-05 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule.c (vars_of_mule): Update `xemacs-chise-version' to 0.24
+ (Kasagi).
+
+2006-06-29 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Fconcord_object_put): Add reversed links when FEATURE
+ is a relation feature.
+
+2006-06-28 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (syms_of_chartab): Define
+ `{<-|->}{subsumptive|denotational}' when HAVE_CONCORD is defined.
+
+ * chartab.h (Q_denotational): New extern when UTF2000 or
+ HAVE_CONCORD is defined.
+ (Q_denotational_from): Likewise.
+ (Q_subsumptive): Likewise.
+ (Q_subsumptive_from): Likewise.
+
+2006-06-27 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (concord_object_put): New function.
+ (Fconcord_object_put): Use `concord_object_put'.
+
+2006-06-01 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Fconcord_define_object): New function.
+ (syms_of_concord): Add new builtin function
+ `concord-define-object'.
+
+2006-05-09 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * mule.c (vars_of_mule): Update `xemacs-chise-version' to 0.23
+ (Kamo).
+
+2006-04-25 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c: Add EXFUN for Fconcord_object_get.
+ (Vconcord_genre_object_hash_table): New variable.
+ (concord_genre_cache_get_object): New function.
+ (concord_genre_cache_put_object): New function.
+ (Fconcord_make_object): Use object cache; put object-ID into `=id'
+ feature.
+ (Fconcord_object_put): Call `concord_index_sync' after
+ `concord_index_strid_put_obj'.
+ (vars_of_concord): Setup Vconcord_genre_object_hash_table.
+
+2006-04-24 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Fconcord_decode_object): Do GCPRO for
+ Fconcord_make_object.
+ (func_for_each_object): Likewise; do GCPRO for
+ for_each_object_closure->function.
+ (Fconcord_foreach_object_in_feature): Use GCPRO4 for
+ for_each_object_closure->function, for_each_object_closure->genre,
+ for_each_object_closure->ds and for_each_object_closure->ret.
+ (concord_object_validate): Do GCPRO for Fconcord_make_object.
+
+2006-04-24 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c: Add EXFUNs for Fconcord_decode_object and
+ Fconcord_object_put.
+ (Fconcord_make_object): Change order of arguments.
+ (Fconcord_decode_object): Modify for Fconcord_make_object.
+ (func_for_each_object): Likewise.
+ (concord_object_validate): Likewise.
+ (concord_object_instantiate): Use GCPRO2 for `data' and `retval'.
+
+2006-04-24 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Fconcord_object_put): Setup index for `=FOO' feature.
+
+2006-04-16 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Fconcord_decode_object): Try to use readable print
+ form as a key of Concord-index.
+ (Fconcord_object_get): Try to use readable print form as an ID of
+ Concord-object.
+ (Fconcord_object_put): Try to use readable print form as an ID of
+ Concord-object and a feature value.
+ (Fconcord_object_spec): Try to use readable print form as an ID of
+ Concord-object.
+
+2006-04-16 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (print_concord_object): Support readable form.
+
+2006-04-14 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * emacs.c (main_1): Call `structure_type_create_concord' when
+ HAVE_CONCORD is defined.
+
+ * symsinit.h (structure_type_create_concord): New prototype.
+
+ * concord.c (Qconcord_object): New variable.
+ (Qgenre): Likewise.
+ (Q_id): Likewise.
+ (Fconcord_ds_directory): Use <char*> instead of <unsigned char*>
+ for directory.
+ (add_feature_to_list_mapper): Use <char*> instead of <unsigned
+ char*> for genre-name.
+ (Fconcord_feature_list): Likewise.
+ (Fconcord_make_object): Likewise.
+ (Fconcord_decode_object): Likewise; use <char*> instead of
+ <unsigned char*> for feature_name and strid.
+ (Fconcord_object_get): Use <char*> instead of <unsigned char*> for
+ c_obj and feature_name.
+ (Fconcord_object_put): Likewise; use <char*> instead of <unsigned
+ char*> for c_value.
+ (struct closure_for_object_spec): Use <char*> instead of <unsigned
+ char*> for member `object_id'.
+ (add_feature_to_spec_mapper): Use <char*> instead of <unsigned
+ char*> for feature-name.
+ (Fconcord_object_spec): Use <char*> instead of <unsigned char*>
+ for c_obj.
+ (func_for_each_object): Cast to avoid warnings.
+ (Fconcord_foreach_object_in_feature): Use <char*> instead of
+ <unsigned char*> for genre_name and feature_name.
+ (concord_name_validate): New function.
+ (concord_object_validate): Likewise.
+ (concord_object_instantiate): Likewise.
+ (syms_of_concord): Add new builtin symbols `concord-object',
+ `genre' and `=id'.
+ (structure_type_create_concord): New function.
+
+2006-04-10 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (Vconcord_ds_hash_table): New variable.
+ (Vconcord_genre_hash_table): New variable.
+ (Fconcord_open_ds): Use Vconcord_ds_hash_table.
+ (Fconcord_ds_directory): New function.
+ (Fconcord_assign_genre): New function.
+ (Fconcord_genre_directory): New function.
+ (Fconcord_genre_ds): New function.
+ (Fconcord_feature_list): Allow to omit `ds'.
+ (Fconcord_make_object): Likewise.
+ (Fconcord_decode_object): Likewise.
+ (Fconcord_foreach_object_in_feature): Likewise.
+ (syms_of_concord): Add new builtin function Fconcord_ds_directory,
+ Fconcord_assign_genre, Fconcord_genre_directory and
+ Fconcord_genre_ds.
+ (vars_of_concord): Setup Vconcord_ds_hash_table and
+ Vconcord_genre_hash_table.
+
+2006-02-05 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c (struct closure_for_each_object): Add new member
+ `ret'.
+ (func_for_each_object): Setup the return value to
+ `for_each_object_closure->ret'.
+ (Fconcord_foreach_object_in_feature): If FUNCTION returns non-nil,
+ returns the value instead of Qt.
+
+2005-12-27 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * concord.c: New file.
+
+2005-12-02 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * lrecord.h (enum lrecord_type): Add `lrecord_type_concord_ds' and
+ `lrecord_type_concord_object'.
+
+2005-09-21 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * symsinit.h (syms_of_concord): New prototype.
+ (vars_of_concord): New prototype.
+
+ * emacs.c (main_1): Setup symbols and variable about concord if
+ HAVE_CONCORD is defined.
+
+ * config.h.in (HAVE_CONCORD): New macro.
+
+2005-09-08 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Fput_char_attribute): For each character relation
+ feature `{<-|->}FOO', set up the reversed link `{->|<-}FOO'.
+
+2005-08-10 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Fput_char_attribute): Use
+ `Fchar_refs_simplify_char_specs' for `=>decomposition' before
+ calling `put_char_composition'.
+
+2005-08-08 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Q_halfwidth_of): New variable.
+ (put_char_composition): Return `<-halfwidth' instead of
+ `=decomposition' for compatibility mapping to single character
+ tagged `narrow'.
+ (Fput_char_attribute): Convert char-specs in value of
+ `{<-|->}halfwidth[^*]*' to characters and put reverse links.
+ (Fsave_char_attribute_table): Use `Fchar_refs_simplify_char_specs'
+ for `<-halfwidth'.
+ (syms_of_chartab): Add new symbol `<-halfwidth'.
+
+2005-08-05 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (put_char_composition): Return
+ `<-formed@{isolated|initial|medial|final}' for compatibility
+ mapping to single character tagged
+ `{isolated|initial|medial|final}'.
+
+2005-08-04 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Q_compat_of): Deleted.
+ (put_char_composition): Return `<-FOO' for compatibility mapping
+ to single character tagged `FOO'; use `Fsymbol_name (...)' instead
+ of `symbol_name (XSYMBOL(...))'.
+ (Fput_char_attribute): Convert char-specs in value of
+ `{<-|->}font[^*]*' to characters and put reverse links.
+ (Fsave_char_attribute_table): Don't refer Q_compat_of.
+ (syms_of_chartab): Delete builtin symbol `<-compat'.
+
+2005-08-03 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Q_circled_of): New variable.
+ (put_char_composition): Return `<-circled' instead of
+ `=decomposition' for compatibility mapping to single character
+ tagged `circle'.
+ (Fput_char_attribute): Convert char-specs in value of
+ `{<-|->}circled[^*]*' to characters and put reverse links.
+ (Fsave_char_attribute_table): Use `Fchar_refs_simplify_char_specs'
+ for `<-circled'.
+ (syms_of_chartab): Add new symbol `<-circled'.
+
+2005-08-02 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Qto_decomposition_at_circled): New variable.
+ (put_char_composition): Return `=>decomposition@circled' instead
+ of `=decomposition' for compatibility decomposition mapping tagged
+ `circle'.
+ (syms_of_chartab): Add new symbol `=>decomposition@circled'.
+
+2005-08-02 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Q_subscript_of): New variable.
+ (put_char_composition): Return `<-subscript' instead of
+ `=decomposition' for compatibility mapping to single character
+ tagged `sub'.
+ (Fput_char_attribute): Convert char-specs in value of
+ `{<-|->}subscript[^*]*' to characters and put reverse links.
+ (Fsave_char_attribute_table): Use `Fchar_refs_simplify_char_specs'
+ for `<-subscript'.
+ (syms_of_chartab): Add new symbol `<-subscript'.
+
+2005-08-01 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Q_superscript_of): New variable.
+ (put_char_composition): Return `<-superscript' instead of
+ `=decomposition' for compatibility mapping to single character
+ tagged `super'.
+ (Fput_char_attribute): Convert char-specs in value of
+ `{<-|->}superscript[^*]*' to characters and put reverse links.
+ (Fsave_char_attribute_table): Use `Fchar_refs_simplify_char_specs'
+ for `<-superscript'.
+ (syms_of_chartab): Add new symbol `<-superscript'.
+
+2005-08-01 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Qto_decomposition_at_compat): Deleted.
+ (Qto_decomposition_at_superscript): New variable.
+ (put_char_composition): Use `=>decomposition@superscript' instead
+ of `=decomposition' for compatibility decomposition mapping tagged
+ `super'.
+ (Fput_char_attribute): Fix condition about `put_char_composition'.
+ (syms_of_chartab): Delete builtin symbol `=>decomposition@compat';
+ add news symbol `=>decomposition@superscript'.
+
+2005-07-31 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (put_char_composition): Return `=>decomposition@FOO'
+ for compatibility decomposition mapping tagged FOO.
+ (Fput_char_attribute): Modify for `put_char_composition'.
+
+2005-07-27 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Qto_decomposition_at_compat): New variable.
+ (Q_compat_of): Renamed from `Q_compatibility_of'.
+ (put_char_composition): Rename `Q_compatibility_of' to
+ `Q_compat_of'; return `=>decomposition@compat' for compatibility
+ decomposition mapping.
+ (Fsave_char_attribute_table): Rename `Q_compatibility_of' to
+ `Q_compat_of'.
+ (syms_of_chartab): Add new symbol `=>decomposition@compat'; rename
+ `<-compatibility' to `<-compat'.
+
+2005-07-26 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Q_compatibility_of): New variable.
+ (put_char_composition): Use XCAR/XCDR instead of Fcar/Fcdr if an
+ object is proved to be a cons cell; return `<-compatibility' if
+ the first element of argument `value' is `compat'.
+ (Fput_char_attribute): Eliminate the first value if
+ `put_char_composition' returns `<-compatibility'.
+ (Fsave_char_attribute_table): Use `Fchar_refs_simplify_char_specs'
+ for `<-compatibility'.
+ (syms_of_chartab): Add new symbol `<-compatibility'.
+
+2005-07-26 MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+ * chartab.c (Q_canonical): New variable.
+ (put_char_composition): Return a feature name: return
+ `->canonical' if argument `value' specifies single character.
+ (Fput_char_attribute): Use `put_char_composition' to determine
+ feature name for `=decomposition' or `->denotational'.
+ (Fsave_char_attribute_table): Use `Fchar_refs_simplify_char_specs'
+ for `->canonical'.
+ (syms_of_chartab): Add new symbol `->canonical'.
+