2004-08-02  Motonobu Ichimura <famao@openi18n.org>

        * EIMIL.c
        * PCE.c 
        * EIMILFile.c
        * EIMILint.h
        * EIMILTextUtil.c
        * EIMILJournal.c: code cleanup.

        * EIMIL.c (EIMIL_finalize): new function

2004-07-21  Akira TAGOH  <tagoh@redhat.com>

	* EIMIL.c (EIMIL_register_engine): removed a duplicated increment of
	  num_engines.

2004-05-04  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* autogen.sh: Added initially.
	* aclocal.m4, Makefile.in, configure, config.h.in, test/Makefile.in: removed.

2004-03-23  Hidetoshi Tajima  <tajima@sjc.SFBay.Sun.COM>

	* EIMILTextUtil.c: properly handle UTF16 characters in non-BMP
	code range. (#5005383)

2003-06-10  MIYASHITA Hisashi  <himi@li18nux.org>

	* Makefile.am (libEIMIL_la_CFLAGS, libEIMIL_la_SOURCES) 
	(noinst_LTLIBRARIES): Built libEIMIL as a libtool
	library.

2003-04-26  MIYASHITA Hisashi  <himi@li18nux.org>

	* EIMIL.c (EIMIL_initialize): To avoid initializing
	more than once,	check the static variable "inited".

2003-03-26  MIYASHITA Hisashi  <himi@li18nux.org>

	* test/Makefile.am (EIMILLIB): Don't immediately specify libEIMIL, use
	-L and -l options instead.

	* Makefile.am: For the time being, we create a static library
	for EIMIL.
	(libEIMIL_a_SOURCES): Add EIMILint.h as well.

	* Makefile.am (libdir): commented out.
	(noinst_LTLIBRARIES): For the time being, don't install libEIMIL.la.

2003-02-07  MIYASHITA Hisashi  <himi@li18nux.org>

	* EIMILTextUtil.c (EIMIL_destruct_mtext): Free property
	by itself because EIMIL_detach_prop_from_mtext() will change
	the internal structure of pmt.

	* EIMIL.c (EIMIL_destruct_value): free pv->v.prop.pvals
	if it is not NULL.

2003-02-01  MIYASHITA Hisashi  <himi@li18nux.org>

	* EIMILTextUtil.c (EIMIL_UTF32_string_len, EIMIL_UTF32_strcmp)
	(EIMIL_convert_UTF32_to_UTF8, EIMIL_convert_UTF8_to_UTF32char)
	(EIMIL_convert_UTF8_to_UTF32, EIMIL_adjust_UTF16_pos_to_UTF32)
	(EIMIL_adjust_UTF32_pos_to_UTF16, EIMIL_convert_UTF32_to_UTF16)
	(EIMIL_convert_UTF16_to_UTF32, EIMIL_construct_mtext_from_UTF8)
	(EIMIL_construct_mtext_from_UTF16, EIMIL_construct_mtext_from_UTF32):
	Add const qualifiery to the type of input string.

2003-01-29  MIYASHITA Hisashi  <himi@li18nux.org>

	* EIMILTextUtil.c (EIMIL_mtext_concat): Bug fix.  Correct
	the index of pmp->pprops in the loop of "k".
	(EIMIL_mtext_substr): Bug fix.  When num_props get to 0,
	explicitly free pmp2->pprops and set pmp2->pprops to NULL.

	* EIMILTextUtil.c (EIMIL_convert_UTF32_to_UTF16): Bug fix.
	u16len must not include the length of 0 termination.
	(EIMIL_convert_UTF16_to_UTF32): Bug fix.  Correct the
	buffer size.
	(EIMIL_get_prop_from_mtext): Properly set n.

2003-01-28  MIYASHITA Hisashi  <himi@li18nux.org>

	* EIMILTextUtil.c (EIMIL_convert_UTF32_to_UTF16): Bug fix.
	Set rlen correctly, and	put 0 at the end of UTF16 string.
	(EIMIL_prepare_mtext_props_slot): Bug fix.  It must
	return pmp.
	(EIMIL_move_prop): Bug fix.  Move the duplicated EIMIL_value
	not the original one.

	* config.h.in: Updated.
	* configure: Ditto.

2003-01-21  MIYASHITA Hisashi  <himi@li18nux.org>

	* EIMILint.h (pEIMIL_nil_sym, pEIMIL_t_sym)
	(pEIMIL_feedback_sym, pEIMIL_candidates_sym):
	Move them to EIMIL.h

2002-12-29  MIYASHITA Hisashi  <himi@li18nux.org>

	* EIMIL.c (EIMIL_construct_events_from_IMInputEvent): New function.
	(EIMIL_convert_event_to_IMInputEvent): Ditto.

2002-12-16  MIYASHITA Hisashi  <himi@li18nux.org>

	* PCE.c (DEFINE_PARSER_METHOD<set>): Add EIMIL_TYPE_NIL to
	required_type[0].
	(PCE_execute): When the next event exists, set it to the
	current event.

2002-12-16  MIYASHITA Hisashi  <himi@li18nux.org>

	* PCE.c (PCE_parse_context): Add pc_head mainly for `select'.
	(PCE_CONTEXT_MODE): Add PCE_IN_SELECT and PCE_SELECT_HAS_DEFAULT.
	(PCE_select_template): Recreate it for "case" and "default".
	(PCE_insert_head_code): New function.
	(PCE_parser_jmp_end): Make it use PCE_insert_head_code.
	(PCE_parser_select_case_end): New function.
	(PCE_parser_select_default_end): New function.
	(PCE_parser_select_end): New function.
	(DEFINE_PARSER_METHOD<if>): Fix the required_type.
	(DEFINE_PARSER_METHOD<case>): New parser method.
	(DEFINE_PARSER_METHOD<default>): New parser method.
	(DEFINE_PARSER_METHOD<select>): New parser method.
	(DEFINE_PARSER_METHOD<set>): When psym is not found, set error and
	return immediately.
	(PCE_dump_code_internal): Add messages for instructions.

2002-12-15  MIYASHITA Hisashi  <himi@li18nux.org>

	* PCE.c: Don't include PCE.h.

	* Makefile.am (libEIMIL_a_SOURCES): Add PCE.c

	* EIMILTextUtil.c: Normalize coding style.
	(EIMIL_UTF32_string_len): New function.
	(EIMIL_UTF32_strcmp): New function.
	(EIMIL_convert_UTF32char_to_UTF8): New function.
	(EIMIL_convert_UTF32_to_UTF8): New function.
	(EIMIL_convert_UTF8_to_UTF32char): New function.
	(EIMIL_convert_UTF8_to_UTF32): New function.
	(EIMIL_adjust_UTF32_pos_to_UTF16): Renamed from
	adjust_utf32_pos_to_utf16.
	(EIMIL_adjust_UTF16_pos_to_UTF32): Renamed from
	adjust_utf16_pos_to_utf32.
	(EIMIL_convert_UTF32_to_UTF16): Renamed from
	convert_utf32_to_utf16.
	(EIMIL_convert_UTF16_to_UTF32):
	convert_utf16_to_utf32.
	(EIMIL_construct_mtext_from_UTF8): Revised version of
	EIMIL_construct_mtext_from_ASCIZ.
	(EIMIL_construct_mtext_from_UTF32): Add 0 at the tail as
	a string terminator.
	(EIMIL_construct_mtext_from_UTF32_char): Likewise.
	(EIMIL_mtext_concat, EIMIL_mtext_substr): Now they takes
	EIMIL_value* instead of EIMIL_mtext*.

	* EIMILint.h: Normalize coding style of declarations.
	(EIMIL_DICTIONARY_SIZE, EIMIL_DICTIONARY_SUBSLOT_UNIT):
	Removed.
	(EIMIL_XMLNS): New type.
	(EIMIL_engine_table, EIMIL_engine): New types.
	(EIMIL_TAG_TYPE): New enum.
	(EIMIL_parser_function): Add type and pchars.  Introduce
	`pprivate' (that can be modified by parser handlers) instead
	of `private' (that cannot be modified).
	(EIMIL_element_template_option): Add EIMIL_PCDATA_TOKEN,
	EIMIL_PCDATA_TOKEN, EIMIL_PCDATA_QUOTED_TOKEN, 
	and EIMIL_element_lock_template.
	(EIMIL_element_template): Make name and option constant variables.
	And add a new member `private'.
	(EIMIL_SET_CURRENT_SUBELEMENT_TEMPLATE): New macro.
	(EIMIL_parser_state): Add new members, xmlns_alloced, xmlns_entries,
	and pxmlns.
	(EIMIL_ENGINE_STATUS): New enum.
	(EIMIL_engine_execute_handler): New handler.
	(EIMIL_ENGINE_COMMAND): New enum.
	(EIMIL_engine_handler): New handler.
	(EIMIL_cdata): Add user handlers, evproc, uiproc, and opproc.
	Add num_engines, and pengine to store engine prototypes.
	(EIMIL_EVENT_QUEUESIZE): New macro.
	(EIMIL_data): Add new members, pcur_ev, pqueue_ev, queueslots,
	pengine_context.  Introduce pdic(context-dependent dictionary)
	instead of dic.

	* EIMILFile.c: Call EIMIL_handle_data() with NULL(it means
	no common data).
	(EIMILFile_init): Return 1.

	* PCE.c: Import the virtually first alpha version.
	Introduce PCE compiler and PCE VM.

	* EIMIL.c (EIMIL_t_val): New variable.
	(EIMIL_xmlns_uri): New variable.
	(EIMIL_isPImark, EIMIL_isEXmark, EIMIL_ispresep): New macros.
	(UTF32_to_char): Removed.
	(EIMIL_resolve_reference): Now this function returns UTF8*.
	(EIMIL_resolve_reference_ASCII): Removed.
	(EIMIL_compute_line): New function.
	(EIMIL_set_point): New function.
	(EIMIL_set_error_pt): New function.
	(EIMIL_set_EOF_error): New function.
	(EIMIL_get_UTF8_token): Revised version of EIMIL_get_char_token.
	Now it returns a token encoded in UTF8.
	(EIMIL_skip_S): New macro.
	(EIMIL_match): New function.
	(EIMIL_skip_to): New function.
	(no_default_namespace_uri): New variable.
	(EIMIL_XMLNS_INITIALI_SLOTS): New macro.
	(EIMIL_expand_namespace_slot): New function.
	(EIMIL_get_prefix_namespace): New function.
	(EIMIL_set_prefix_namespace): New function.
	(EIMIL_namespace_newbind): New function.
	(EIMIL_namespace_unbind): New function.
	(EIMIL_get_name): New function.
	(EIMIL_check_attrs): Make it static.  And remove `num' argument.
	Use EMIL_set_error_pt() instead of EIMIL_set_error().
	(EIMIL_parse_attrs): Use pps->current where the parser start.
	Recognize attributes for XML namespace, set namespaces for the
	default and prefixed names.
	(EIMIL_remove_attr): Make it extern.
	(EIMIL_get_UTF8data_token): New function.
	(EIMIL_find_start_tag): Removed.  Use EIMIL_next_token instead.
	(EIMIL_next_token): New function.
	(EIMIL_find_end_tag): Removed.
	(EIMIL_next_tag): New function.
	(EIMIL_parse_tag): New function.
	(EIMIL_goto_tag_tail): Removed.
	(EIMIL_parse_element): Almost totally rewritten.  Now it recognize
	all tags, and applies appropriate document templates by inspecting
	XML namespace.
	(EIMIL_construct_event): Now EIMIL_event has EIMIL_value* as its
	members, doesn't have bare value data.  Thus, change how to
	construct such members.
	(EIMIL_construct_prop): Totally revised.  Now it takes a property
	symbol.
	(EIMIL_construct_prop2): Old version.  It will be removed in the
	future.
	(EIMIL_destruct_value): Change how to destruct an EIMIL_event value.
	(EIMIL_copy_value): When the type is EIMIL_TYPE_BOOL, return
	&EIMIL_t_val as it is because it is a constant object.
	(EIMIL_generate_symbolid): Return fixed values if type is EIMIL_TYPE_NIL
	or EIMIL_TYPE_T.  And assigne a new type ID for EIMIL_TYPE_ANY.
	(intern_internal): Removed.
	(EIMIL_register_symbol): Renamed from intern_if_nonexist_internal.
	(EIMIL_intern_soft): Renamed from intern_soft_internal.
	(EIMIL_lookup_symbol_internal): Renamed from lookup_symbol.
	(EIMIL_destruct_symbol): Renamed from destruct_symbol.
	(destruct_dictionary): Removed.
	(rebuild_operation_symbol): Bug fix.  Allocate pdeps_d only if
	pop->numdepends > 0.
	(EIMIL_duplicate_dictionary): New function.

2002-11-07  MIYASHITA Hisashi  <himi@li18nux.org>

	* EIMIL.c: Coding style is normalized to "iiimp-project"(DOE) style.
	* EIMILFile.c: Likewise.
	* EIMILJournal.c: Likewise.
	* EIMILTextUtil.c: Likewise.
	* EIMILint.h: Likewise.

	* EIMILint.h (struct EIMIL_cdata): New structure.
	(struct EIMIL_data): Redesigned.  Moved the part shared by
	duplicated handles into EIMIL_cdata.  Moved errstr into EIMIL_data
	from EIMIL_parser_state.
	* EIMIL.c: Deal with the above change.  Symply changed how to access
	members.
	* EIMILFile.c: Ditto.

	* EIMIL.c (EIMIL_initialize): New function.
	* EIMILFile.c (EIMILFile_init): New function.
