2004-10-13  Akira TAGOH  <tagoh@redhat.com>

	* Makefile.am (libiiimcf_la_CFLAGS): added -DSOCKETDIR.

	* clientenv.c (iiimcf_create_client_env): stop using the hardcoded
	path.

	* configure.ac (SOCKETDIR): define to determine the place of
	the socket directory.

2004-10-12  Sriram Swaminathan  <sriram.swaminathan@sun.com>
	* Makefile.am
	* ns.c
	* iiimcfint.h
	* message.c

        Added support for new protocol IM_READ_NS and IM_READ_NS_REPLY

2004-10-04  Akira TAGOH  <tagoh@redhat.com>

	* clientenv.c (iiimcf_create_client_env): look at /var/run/iiim for
	the unix domain socket directory.

2004-09-29  Sriram Swaminathan  <sriram.swaminathan@sun.com>
        * message.c 
          Sending HOTKEY_STATE_NOTIRY_REPLY message to IIIMSF causes
          status lots of issues (status draw not called during conversion
          -off and also when switching languages using language selection
          window)

2004-09-29  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* clientenv.c (iiimcf_client_auth_password): don't create mysterious
	$(HOME)/.iiim/auth/passwd file.

2004-09-14  Motonobu Ichimura  <famao@openi18n.org>

        * trigger.c (iiimcf_process_hotkey_keyevent):
        BugFix. (some older version of IIIMSF sends protocol version 3,
        but not supported hotkey protocol. so caused SIGSEGV in such case.)

        * context.c (create_icattribute):
        when client doesn't specify IIIMCF_ATTR_INPUT_LANGUAGE, and has
        setlocale function, try to detect most prefferable language by
        current locale.
 
2004-09-07  Motonobu Ichimura <famao@openi18n.org>

        * iiimcf.c (iiimcf_destroy_handle): fix memory leak.

        * message.c (iiimcf_process_message): call
        iiimcf_receive_trigger_notify in the case of IM_HOTKEY_STATE_NOTIFY.
        reply HOTKEY_STATE_NOTIRY_REPLY message to IIMSF.

2004-08-23  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * iiimcf.c
  * trigger.c
  * iiimcfint.h
  * event.c
  * message.c

  Implemented IM_SELECT_HOTKEY_PROFILE protocol. 

2004-08-19  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * aux.c
  * component.c
  * context.c
  * event.c
  * iiimcfint.h
  * test
  * text.c
  * trigger.c
  * test/check/sendkey2.c
  * test/check/common.c

  - more updates on the client side related to HOTKEY protocol
    notification and event forwarding to server.
  - Fixed some compilation warnings

2004-08-11  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * iiimcf.c
  * trigger.c
  * event.c
  * message.c
  * iiimcfint.h

  code cleanup. 

2004-08-09  Sriram Swaminathan  <sriram.swaminathan@sun.com>
  * trigger.c
  * event.c
  * context.c

  - Added iiimcf_seticvalues() so that IIIM Client Framework's can use 
    it to switch languages instead of destroying and creating new
    Input Context per language.

  - Moved Language switching to server side and so removed the 
    switching functionality related code from the IIIMCF.

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

	* iiimcf.c: stop printing "hoge" to stdout:-).

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

        * clientenv.c:
        * iiimcf.c: code cleanup

        * message.c:
        (iiimcf_process_message)
        (iiimcf_request_message) : always delete event regardless of
        handling event is succeed or not.

        * event.c
        (iiimcf_forward_event): ditto

        * input-method.c
        (iiimcf_unregister_input_method_list): fix memory leak.

2004-07-29  Makoto Fujiyoshi  <makoto_fujiyoshi@justsystem.co.jp>

        * iiimcf.c:
        (iiimcf_get_im_id): added.

        * libiiimcf.sym:
        iiimcf_get_im_id, iiimcf_get_ic_id added.

        * context.c:
        (iiimcf_get_ic_id): added.

2004-07-22  Makoto Fujiyoshi  <makoto_fujiyoshi@justsystem.co.jp>

        * input-method.c:
        (iiimcf_register_input_method_langs): Bug fix.
        avoid modifying variable 'i' unexpectedly.

2004-07-14  Motonobu Ichimura  <famao@openi18n.org>

        * iiimcfint.h:
        (struct IIIMCF_handle_rec):
        removed use_tls.
        added IIIMCF_client_conf *pconf
        (struct IIIMCF_client_env):
        renamed conf to pconf.

        * iiimcf.c (iiimcf_connect):
        if iiimcf connects iiimsf, but fails to authenicate,
        fallback to next iiimsf.
        (iiimcf_delete_stream): new function
        
2004-07-13  Motonobu Ichimura  <famao@openi18n.org>

        * clientenv.c:
        (iiimcf_client_file_server): avoid entering infinite loop
        when user specifies a invalid parameter.

2004-07-12  Motonobu Ichimura  <famao@openi18n.org>

        * iiimcfint.h:
        (struct IIIMCF_client_conf): added.
        (struct IIIMCF_client_env):
        added IIIMCF_client_conf *conf.
        removed server_node, service.
        (struct IIIMCF_handle_rec):
        added use_tls.
        
        * clientenv.c:
        (iiimcf_client_config_new)
        (iiimcf_client_config_free): new function.

        * iiimcf.c:
        (iiimcf_connect): use IIIMCF_client_conf instead of
        clientenv->server_node, clientenv->service to create
        IIIMF_stream.
        
2004-07-12  Motonobu Ichimura  <famao@openi18n.org>

        * clean up source code.

2004-06-17  Sriram Swaminathan  <sriram.swaminathan@sun.com>

  * iiimcf.c
  * trigger.c
  * input-method.c
  * iiimcfint.h
  * event.c
  * message.c

  - Enabled HOTKEY protocol in IIIMCF

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

	* aux.c: added changes to process IIMCF_EVENT_TYPE_AUX_GETVALUES
	message properly.

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

	* libiiimcf.sym: 
	* iiimcfint.h: 
	* aux.c: 
	* event.c:
	added iiimcf_create_aux_getvalues_event() and
	iiimcf_forward_aux_getvalues().

2004-02-11  Ilgyoung Park  <karl.park@sun.com>

	* configure.ac : removed 'libiiimcf.spec' to workaround
	configure time failure.

2004-01-08  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* autogen.sh: Added initially.

	* Makefile.am : Added again.
	By accident, I removed Makefile.am instead of Makefile.in.
	* Makefile.in : removed.

2004-01-06  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* configure.ac (PACKAGE):
	backout the change made under:
	  rev 1547:  clkao | 2003-12-23 10:06:31 -0800 (Tue, 23 Dec 2003) | 3 lines
 
 	  Make im-sdk compile on FreeBSD.

	since this has broken the build on many other systems.
	* libiiimcf.spec.in : added
	* configure, Makefile.in, aclocal.m4: removed
	* test/Makefile.in, test/check/Makefile.in: removed

2003-11-19  Motonobu Ichimura  <famao@momonga-linux.org>

	* Makefile.am: remove -module flag


2003-11-14  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* context.c:
	fix missing check if ic is invalid before actually removing
	context.

	* text.c (iiimcf_convert_iiimp_text_to_text) :
	return IIIMF_STATUS_FAIL when given input text is NULL.
	(This avoids iiimgcf crash when iiimf-canna l/e is used in
	IIIMSF while cannaserver is not running).

2003-10-27  Hidetoshi Tajima  <hidetoshi.tajima@sun.com>

	* iiimcf.c (iiimcf_initialize) : should return
	IIIMF_STATUS_SUCCESS at the 2nd call.

2003-08-19  MIYASHITA Hisashi  <himi@li18nux.org>

	* event.c (IIIMCF_EVENT_SET_STATE): Bug fix.

2003-08-17  MIYASHITA Hisashi  <himi@li18nux.org>

	* configure.ac (LIBIIIMCF_MAJOR_VERSION): Increased
	because I changed how libiiimcf manages the object life
	cycle.

2003-08-16  MIYASHITA Hisashi  <himi@li18nux.org>

	* event.c (IIIMCF_EVENT_ADDREF, IIIMCF_EVENT_RMREF)
	(IIIMCF_EVENT_REFCHK): Removed.
	(IIIMCF_EVENT_STATE_FLAGS): New enumerator.
	(IIIMCF_EVENT_SET_STATE, IIIMCF_EVENT_RESET_STATE) 
	(IIIMCF_EVENT_IS_DISCARDABLE): New macros.
	(iiimcf_broadcast_event): While broadcasting, set
	IIIMCF_EVENT_STATE_BROADCASTING flag for the event.
	Then, pe is discardable after it, delete it.
	(iiimcf_forward_event): Use IIIMCF_EVENT_IS_DISCARDABLE
	instead of IIIMCF_EVENT_REFCHK.
	(iiimcf_dispatch_event): Even though pc is now in
	broadcasting, delete pe when it is discardable.
	(iiimcf_dispatch_event): While broadcasting, set
	IIIMCF_EVENT_STATE_DISPATCHING flag for the event.
	Then, pe is discardable after it, delete it.
	(iiimcf_get_next_event): Clear 
	IIIMCF_EVENT_STATE_INQUEUE, and then set 
	IIIMCF_EVENT_STATE_MUSTIGNORE instead of setting
	refcount.
	(iiimcf_peek_next_event): Set
	IIIMCF_EVENT_STATE_INQUEUE. instead of setting refcount.
	(iiimcf_ignore_event): Clear IIIMCF_EVENT_STATE_MUSTIGNORE,
	then if it is discardable, delete it.

	* iiimcfint.h (IIIMCF_event_rec): Define state instead of
	refcount.
	(iiimcf_forward_aux_setvalues): New decl.

	* aux.c (iiimcf_create_aux_setvalues_event):
	Bug fix.  pstrs must be incremented.

2003-08-11  MIYASHITA Hisashi  <himi@li18nux.org>

	* preedit.c (iiimcf_update_preedit): Added comment on calling
	iiimcf_toggle_preedit() and made it check the return code of it.

2003-07-29  HideToshi Tajima <hidetoshi.tajima@sun.com>

	* preedit.c (iiimcf_update_preedit): Like the similar for
	the status, allow the preedit here even if
	IIIMCF_CONTEXT_PREEDIT_ENABLED has not been set in advance.
	
2003-07-30  MIYASHITA Hisashi  <himi@li18nux.org>

	* trigger.c (iiimcf_receive_trigger_notify): Bug fix.
	In this funciton, we have to check IIIMCF_CONTEXT_CONVERSION_MODE,
	not IIIMCF_CONTEXT_PREEDIT_ENABLED.

	* status.c (iiimcf_update_status): When irregularly
	enabling the status, call iiimcf_toggle_status() instead
	of immediately setting IIIMCF_CONTEXT_STATUS_ENABLED.

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

	* libiiimcf.sym: Added iiimcf_get_input_method_desc,
	iiimcf_get_input_method_languages, and
	iiimcf_get_supported_input_methods.

	* Makefile.am (libiiimcf_la_SOURCES): Added input-method.c.

	* iiimcf.c (iiimcf_make_string): Do memcpy only if len is
	greater than 0.
	(iiimcf_unregister_langs): Exported it.
	(iiimcf_setimvalues<IIIMP_IMATTRIBUTE_INPUT_METHOD_LIST>):
	Made it call iiimcf_register_input_method_list()
	(iiimcf_destroy_handle): Made it call
	iiimcf_unregister_input_method_list().

	* input-method.c: New file.

	* iiimcfint.h (IIIMCF_language_rec): Removed hrn_len.
	(iiimcf_unregister_langs): New function decl.
	(iiimcf_unregister_input_method_list): Ditto.
	(iiimcf_register_input_method_list): Ditto.
	(IIIMCF_input_method_rec): Removed imname_len, hrn_len,
	domainname, and plangs.  Introduced domain and pplangs instead.

	* context.c (create_icattribute): Made it use
	iiimcf_string_length() to get the length of pim->imname.

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

	* iiimcf.c (iiimcf_register_object_descriptor_list): New function.
	(iiimcf_setimvalues): Split the part on
	IIIMP_IMATTRIBUTE_OBJECT_DESCRIPTOR_LIST into
	iiimcf_register_object_descriptor_list().  And made this function
	just call that.

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

	* message.c (iiimcf_process_message<IM_PROTOCOL_VERSION>):
	Set ph->server_protocol_version.

	* iiimcfint.h (IIIMCF_handle_rec): Added
	server_protocol_version.

	* iiimcf.c (iiimcf_connect): Limit the protocol version that
	the server supports.
	(iiimcf_create_handle): Set the default protocol version of
	server to 2.
	(iiimcf_get_version_number): Return the current protocol version.

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

	* configure.ac (LIBIIIMCF_MINOR_VERSION):
	Set the minor version to 2.
	(AC_INIT): Set version to 1.2.

	* iiimcf.c (free_object_descriptor): Cast a
	non-constant type for pod->hrn, pod->hrn,
	pod->signature, and pod->user.

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

	* Makefile.am (libiiimcf_la_LDFLAGS): Corrected.

	* clientenv.c (iiimcf_create_client_env): It must
	set home directory before setting "server_node"
	and "service".

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

	* Makefile.am (libiiimcf_la_LDFLAGS): Use -g instead of -Wl,-g.

	* iiimcfint.h (IIIMCF_text_property_value_rec): Disabled.
	(iiimcf_request_message): New function declaration.

	* libiiimcf.sym (iiimcf_get_input_method_desc)
	(iiimcf_get_input_method_languages)
	(iiimcf_get_supported_input_methods): Temporarily commented out,
	because they are not defined currently.

	* event.c (IIIMCF_EVENT_RMREF, IIIMCF_EVENT_REFCHK):
	Return 0 as a value of the whole expression.

	* aux.c: Included stdlib.h and string.h.
	* event.c: Ditto.
	* lookup_choice.c: Ditto.
	* object.c: Ditto.
	* text.c: Ditto.

	* attr.c: Included stdlib.h.
	* commit.c: Ditto.
	* iiimcf.c: Ditto.
	* preedit.c: Ditto.
	* status.c: Ditto.
	* context.c: Ditto.

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

	* Makefile.am (libiiimcf_la_LIBADD): Link it with
	libEIMIL.la, not with libEIMIL.a

2003-05-31  MIYASHITA Hisashi  <himi@li18nux.org>

	* commit.c (iiimcf_commit_string): In case that the server
	sends IM_COMMIT_STRING more than once in the same session,
	simply concatenate the commit string with the last result.

	* text.c (iiimcf_append_contents_to_text): New function.

	* iiimcfint.h (IIIMCF_IS_STATE_CHANGED): New macro.
	(iiimcf_append_contents_to_text): New function decl.

	* message.c (iiimcf_process_message<IM_TRIGGER_NOTIFY>):
	When pmes->v.trigger_notify.flag is 0, regard it as trigger on
	message; otherwise, as trigger off message.

	* preedit.c (iiimcf_update_preedit): Update preedit_caret_position.

2003-05-16  MIYASHITA Hisashi  <himi@li18nux.org>

	* configure.ac (TOPDIR): Don't do AC_SUBST on it.

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

	* iiimcf.c (IIIMCF_DEFAULT_TIMEOUT): expanded to 2000ms.

2003-05-05  MIYASHITA Hisashi  <himi@li18nux.org>

	* aux.c (iiimcf_update_aux_draw): When free a slot in pstrs,
	clear the pointer to NULL.  And set pa->index properly.
	(create_aux_event): Duplicate all the members of
	IIIMCF_auxevent.
	(iiimcf_delete_aux_event): Don't check "independent" flag.
	Free all of the members.
	(iiimcf_create_aux_setvalues_event): Don't set
	"independent" flag.  Check if num_intvals and num_strvals are
	greater than 0 before setting the corresponding array.

	* iiimcfint.h (IIIMCF_auxevent): Removed the member,
	"independent".

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

	* iiimcfint.h (IIIMCF_handle_rec): Add thread_owner_id adn
	thread_lock_count to support recursive lock, which is required
	for calling remove_context() from invalidate_context().
	(IIIMCF_LOCK_HANDLE, IIIMCF_UNLOCK_HANDLE): Use
	iiimcf_lock_handle() and iiimcf_unlock_handle().
	(iiimcf_lock_handle, iiimcf_unlock_handle): New function
	declarations.

	* iiimcf.c (iiimcf_lock_handle, iiimcf_unlock_handle):
	New functions.  They support recursive lock.
	(iiimcf_unregister_langs): When ppl is NULL,
	immediately return.
	(iiimcf_register_langs): First call iiimcf_unregister_langs(),
	and reset ph->pplangs and ph->num_langs.
	(iiimcf_register_trigger_keys): Before setting ph->pon_keys or
	ph->poff_keys, free it if it has already values.
	(iiimcf_setimvalues): Before setting object descriptors,
	call free_object_descriptor() and reset pbobjdesc and
	object_descriptor_size.
	(iiimcf_hungup): Don't clear pplangs, pobjedesc, pon_keys,
	nor poff_keys.

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

	* clientenv.c (iiimcf_client_os_arch): New static function.
	(iiimcf_create_client_env): Refactored.  It takes IIIMCF_attr
	and set the proper data to IIIMCF_client_env from it.
	And made it set X_display_name and X_server_vendor as well.

	* context.c (create_icattribute): Make it use IIIMCF_attr
	to obtain IC attribute data.
	(iiimcf_create_context): Now it only call create_icattribute
	to get attribute data from "attr".

	* iiimcfint.h (iiimcf_create_client_env): Modify the
	arguments.  Now it accepts IIIMCF_attr.

	* iiimcf.c (iiimcf_create_handle): Don't get client data from
	attr by itself,	only pass attr to iiimcf_create_client_env.

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

	* libiiimcf.sym: Add iiimcf_reset_context, 
	iiimcf_create_seticfocus_event, and
	iiimcf_create_unseticfocus_event.

	* context.c (reset_context): New function.
	(invalidate_context): Use reset_context.
	(iiimcf_reset_context): New API.

	* event.c (iiimcf_delete_event_storage): Delete queue
	only if pc->ppevqueue is not NULL.  Clear all the
	members	related to event queue.

	* event.c (broadcast): Don't treat
	IIIMF_STATUS_COMPONENT_INDIFFERENT as an error status.
	(iiimcf_create_seticfocus_event, forward_seticfocus)
	(iiimcf_create_unseticfocus_event, forward_unseticfocus)
	(iiimcf_create_resetic_event, forward_resetic): New
	functions.

	* configure.ac: Set the minor version to 1.

	* context.c (iiimcf_create_context): Bug fix.
	Set auto_trigger_notify_flag if st is IIIMF_STATUS_SUCCESS.

	* event.c (iiimcf_dispatch_event): Changed how to treat a return status
	from a component.  When at least one component returns
	IIIMF_STATUS_COMPONENT_FAIL, iiimcf_dispatch_event must return 
	IIIMF_STATUS_COMPONENT_FAIL as well; only when all of the components
	return IIIMF_STATUS_COMPONENT_INDIFFERENT, iiimcf_dispatch_event
	must return IIIMF_STATUS_COMPONENT_INDIFFERENT; if a component returns
	any other error status, iiimcf_dispatch_event must immediately return
	the error status.

	* component.c (iiimcf_component_UI): Return 
	IIIMF_STATUS_COMPONENT_INDIFFERENT.
	(iiimcf_component_UI_preedit): Ditto.
	(iiimcf_component_UI_status): Ditto.
	(iiimcf_component_UI_lookup_choice): Ditto.
	(iiimcf_component_UI_commit): Ditto.
	(iiimcf_component_event): Ditto.
	(iiimcf_component_event_key): Ditto.
	(iiimcf_component_event_trigger_notify): Ditto.
	(iiimcf_component_AUX): Ditto.

	* iiimcf.c (iiimcf_initialize): Don't doubly initialize
	the library.

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

	* configure.ac (AC_INIT)
	(LIBIIIMCF_MAJOR_VERSION, LIBIIIMCF_MINOR_VERSION):
	Set version to 1.0.

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

	* Makefile.am (libiiimcf_la_SOURCES): Add iiimcfint.h as well.
	(include_HEADERS): Install a public header file, iiimcf.h.

	* Makefile.am (libdir): Commented out.

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

	* Makefile.am (libiiimcf_la_LDFLAGS): Limit exported symbols listed in
	libiiimcf.sym.  Add a dependency of libiiimp.
	(libiiimcf_la_LIBADD): Statically link it with libEIMIL.
	* test/Qt/IIIMLineEdit.pro (LIBS): Don't explicitly link with libEIMIL.
	* test/check/Makefile.am (TEST_LIBS): Likewise.

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

	* message.c (iiimcf_request_message): When
	ph->disable_automatic_connection_restoration is set,
	we don't restore the connection.

	* iiimcfint.h (IIIMCF_handle_rec): Add
	disable_automatic_connection_restoration.

	* iiimcf.c (iiimcf_create_handle): Deal with
	IIIMCF_ATTR_DISABLE_AUTOMATIC_RESTORATION attribute.

	* context.c (invalidate_context): Don't reset
	IIIMCF_CONTEXT_CONVERSION_MODE.
	(iiimcf_enable_context): Restore the conversion mode of "pc".

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

	* libiiimcf.sym: New file.  It has all exported symbols.

	* message.c (iiimcf_request_message): New function.

	* iiimcfint.h: If HAVE_NO_THREAD is defined, include threaddef.h.
	(IIIMCF_handle_rec): Define a sync object, "so" if possible.
	(IIIMCF_LOCK_HANDLE, IIIMCF_UNLOCK_HANDLE): New macros.

	* context.c (add_context): LOCK_HANDLE while manipulating pptbl.
	(remove_context): Likewise.
	(iiimcf_enable_context): Don't check status of the connection here
	because iiimcf_request_mesasge() is responsible for it.

	* component.c (iiimcf_component_AUX): Renamed from iiimcf_component_aux.

	* aux.c (iiimcf_forward_aux_setvalues): Substitute
	iiimcf_request_message() for sending and receiving message
	operations.
	* context.c (iiimcf_enable_context): Likewise.
	(iiimcf_destroy_context): Likewise.
	* event.c (forward_keyevent): Likewise.
	* object.c (get_imvalues): Likewise.
	* trigger.c (iiimcf_forward_trigger_notify): Likewise.

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

	* component.c (org.OpenI18N.IIIMCF.AUX): Renamed
	from org.OpenI18N.IIIMCF.aux.

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

	* iiimcfint.h (IIIMCF_ICAttribute_rec): New structure.
	(IIIMCF_CONTEXT_STATE_FLAGS): Add IIIMCF_CONTEXT_BROADCASTING.
	(IIIMCF_context_rec): Add icattr of IIIMCF_ICAttribute_rec.
	(IIIMCF_IS_BROADCASTING): New macro.
	(iiimcf_connect): New function declaration.
	(iiimcf_cleanup_context, iiimcf_enable_context): Ditto.
	(iiimcf_broadcast_event): Ditto.

	* iiimcf.c (iiimcf_connect): Make it has an external linkage (i.e. non-static).
	And create ph->data_s and ph->pstream here.
	(iiimcf_hungup): New function.
	(iiimcf_cleanup): Removed.
	(iiimcf_disconnect): Don't call iiimcf_cleanup(),
	call iiimcf_cleanup_context instead.  And if ph is not connected, don't
	request IM_DISCONNECT.
	(iiimcf_send_message): If the connection is closed, call iiimcf_hungup().
	(iiimcf_receive_message): Likewise.
	(iiimcf_create_handle): In here, don't create data_s.  If iiimcf_connect()
	fails, clean all data of ph and return immediately with failure.
	(iiimcf_destroy_handle): delete data_s and pstream only when
	each of them is not NULL.

	* event.c (broadcast, iiimcf_broadcast_event): New functions.
	(iiimcf_forward_event): Even if the context is invalid, try
	to enable it again.
	(iiimcf_dispatch_event): If we are broadcasting, return immediately
	with success.  And even if a component returns
	IIIMF_STATUS_COMPONENT_FAIL, proceed to dispatch the event to the rest
	of components.

	* context.c: Include string.h for strdup().
	(invalidate_context): Broadcast IIIMCF_EVENT_TYPE_RESET.
	Reset IIIMCF_CONTEXT_PREEDIT_ENABLED, IIIMCF_CONTEXT_LOOKUP_CHOICE_ENABLED,
	IIIMCF_CONTEXT_STATUS_ENABLED, IIIMCF_CONTEXT_COMMITTED_TEXT_ENABLED,
	and IIIMCF_CONTEXT_CONVERSION_MODE.  Remove the context from the table
	in ph.
	(create_icattribute): New function.  It replaced convert_language()
	and convert_input_method().
	(conver_language, convert_input_method): Removed.
	(free_icattribute): New function.
	(iiimcf_cleanup_context): New function.
	(create_iiimp_icattr): New function.
	(iiimcf_enable_context): New function.
	(iiimcf_create_context): Use create_icattribute() to set up IC attribute,
	then set ic_id to -1 to invalidate a newly created context, then call
	iiimcf_enable_context().
	(iiimcf_destroy_context): Even if failing to request IM_DESTROYIC, continue
	to destory the context.  Broadcast IIIMCF_EVENT_TYPE_DESTROY.
	And call free_icattribute().

	* component.c (iiimcf_component_UI, iiimcf_component_UI_preedit)
	(iiimcf_component_UI_status, iiimcf_component_UI_lookup_choice)
	(iiimcf_component_UI_commit, iiimcf_component_event):
	Don't dispatch IIIMCF_EVENT_TYPE_RESET event because we introduced
	broadcasting to all components for such emergency events.

	* aux.c (iiimcf_get_aux_draw_data): If context is invalid,
	return immediately.

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

	* iiimcfint.h (IIIMCF_context_rec): Add attr.

	* context.c (iiimcf_destroy_context): If pc->attr is not NULL,
	call iiimcf_destroy_attr() on it.
	(iiimcf_context_get_attr): New API.

	* configure.ac (LIBIIIMCF_MAJOR_VERSION)
	(LIBIIIMCF_MINOR_VERSION): Set them to AH_TEMPLATE,
	and do AC_DEFINE to define them in config.h.

	* iiimcfint.h (IIIMCF_PROTOCOL_VERSION_MASK): New
	enumerator.

	* iiimcf.c (iiimcf_get_version_number): New function.
	
2003-03-11  MIYASHITA Hisashi  <himi@li18nux.org>

	* event.c (iiimcf_receive_forwarded_event):
	Change how to call iiimcf_create_keyevent.

	* event.c (iiimcf_create_keyevent): Make the first
	argument "const IIIMCF_keyevent*".  Caution that this
	involves API change!

	* component.c (iiimcf_component_event)
	(iiimcf_component_event_key)
	(iiimcf_component_event_trigger_notify)
	(iiimcf_component_aux): Actually implemented.

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

	* component.c (iiimcf_get_component): Set the result
	to *pcomponent.

	* object.c (iiimcf_delete_all_downloaded_objects):
	Before deleting po, save the next pointer to po2.

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

	* iiimcfint.h (iiimcf_store_simple_event): New function declaration.
	(iiimcf_dispatch_simple_event): Removed.

	* event.c (expand_event_queue): ppev_pro may exceed ppevqueue
	vector only by 1, so fix the comment and the start pointer
	of ppev_npro.
	(iiimcf_store_event): When ppev_pro point at the end of the queue,
	if queue is full, call expand_event_queue(); otherwise, set ppev_pro
	to the first slot.
	(iiimcf_get_event): Bug fix.  If ppev_con points to the end, set
	it to the first slot.
	(iiimcf_dispatch_simple_event): Removed.
	(iiimcf_store_simple_event): New function.

	* commit.c (iiimcf_commit_string): Don't dispatch an event
	directory.  First, store it.
	* lookup_choice.c (iiimcf_lookup_choice_start) 
	(iiimcf_lookup_choice_done): Likewise.
	* preedit.c (iiimcf_toggle_preedit, iiimcf_update_preedit): Likewise.
	* status.c (iiimcf_toggle_status, iiimcf_update_status): Likewise.
	* trigger.c (iiimcf_receive_trigger_notify): Likewise.

2003-03-09  MIYASHITA Hisashi  <himi@li18nux.org>
	
	* commit.c (iiimcf_get_committed_text): Return
	IIIMF_STATUS_NO_COMMITTED_TEXT not
	IIIMF_STATUS_NO_STATUS_TEXT.

	* aux.c (iiimcf_update_aux_draw): When
	pimad->integer_value is NULL, regard it has no integer
	value.  And don't doubly free used slots in pstrs.

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

	* trigger.c (iiimcf_receive_trigger_notify):
	Dispatch an event.

	* status.c (iiimcf_toggle_status, iiimcf_update_status):
	Dispatch an event.

	* preedit.c (iiimcf_toggle_preedit, iiimcf_update_preedit):
	Dispatch an event.

	* lookup_choice.c (iiimcf_lookup_choice_start): Dispatch an event.
	(iiimcf_lookup_choice_done): Likewise.
	(iiimcf_update_lookup_choice): Likewise.

	* iiimcfint.h (IIIMCF_auxevent): Add "independent".
	(IIIMCF_event_rec): Change the type of the value of
	aux event to pointer of IIIMCF_auxevent.
	(IIIMCF_component_rec): Add pprev.
	(IIIMCF_aux_rec): Rename "pstr" to "pstrs".
	(iiimcf_dispatch_simple_event): New function declaration.

	* iiimcf.c (iiimcf_create_handle): Call
	iiimcf_register_predefined_components().

	* event.c (delete_event): Call iiimcf_delete_aux_event also
	in case of IIIMCF_EVENT_TYPE_AUX_START, IIIMCF_EVENT_TYPE_AUX_DRAW,
	and IIIMCF_EVENT_TYPE_AUX_DONE.
	(iiimcf_dispatch_simple_event): New function.

	* component.c (iiimcf_component_UI, iiimcf_component_UI_preedit) 
	(iiimcf_component_UI_status, iiimcf_component_UI_lookup_choice) 
	(iiimcf_component_UI_commit, iiimcf_component_event) 
	(iiimcf_component_event_key) 
	(iiimcf_component_event_trigger_notify): Renamed.
	(iiimcf_component_aux): New function.
	(IIIMCF_component_tree): New type.
	(predefined_root, predefined_UI, predefined_event):
	New IIIMCF_component_tree data.
	(register_component_tree): New function.
	(iiimcf_register_predefined_components): Actually register
	the predefined components.
	(iiimcf_delete_all_components): Delete all components
	by scanning proot_component list.
	(iiimcf_register_component): Set "pprev".
	(iiimcf_unregister_component): Remove the component from the
	linked list.

	* commit.c (iiimcf_commit_string): Dispatch an event.

	* aux.c (iiimcf_enable_aux): Dispatch
	IIIMCF_EVENT_TYPE_AUX_START event.
	(iiimcf_update_aux_draw): Dispatch
	IIIMCF_EVENT_TYPE_AUX_DRAW event.
	(iiimcf_disable_aux): Dispatch
	IIIMCF_EVENT_TYPE_AUX_DONE event.
	(iiimcf_UTF16_strncmp): Regard pstr2 as a 0-terminated string.
	(create_aux_event): New function.
	(iiimcf_forward_aux_setvalues): Now pauxevent in IIIMCF_event_rec
	is a pointer, not object itself, thus change how to access it.
	(iiimcf_delete_aux_event): Take the above change into consideration,
	and if independent is not set, don't free the members.
	(iiimcf_get_aux_draw_data): When pnum_intvals, ppintvals, pnum_strvals,
	or ppstrvals is NULL, don't set the corresponding value.
	(iiimcf_create_aux_setvalues_event): Set independent to 1.
	(iiimcf_get_aux_event_value): New function.

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

	* Makefile.am (libiiimcf_la_SOURCES): Add trigger.c.

	* trigger.c: New file.

	* message.c (iiimcf_process_message<IM_TRIGGER_NOTIFY>):
	Call iiimcf_receive_trigger_notify() and reply to the
	message.

	* iiimcfint.h (IIIMCF_IS_STATIC_EVENT_FLOW): New macro.
	(IIIMCF_IS_KEYEVENT_EQUAL): Ditto.
	(iiimcf_receive_trigger_notify, iiimcf_process_trigger_keyevent)
	(iiimcf_forward_trigger_notify): New function declarations.

	* event.c (iiimcf_create_trigger_notify_event): Moved to
	trigger.c.
	(iiimcf_get_trigger_notify_flag): Ditto.
	(forward_keyevent): When IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY
	is enabled, call iiimcf_process_trigger_keyevent()
	before forwarding, then if it processes keyevent as a trigger key,
	return immediately.
	(forward_keyevent): If the current event flow is dynamic, and the
	current conversion mode is disabled, don't forward the keyevent.
	(send_trigger_notify): Moved to trigger.c.  It is renamed to
	iiimcf_forward_trigger_notify().
	(iiimcf_forward_event): Call iiimcf_forward_trigger_notify() instead
	of send_trigger_notify().

	* context.c (iiimcf_create_context): Bug fix.  When
	IIIMCF_ATTR_DISABLE_AUTOMATIC_TRIGGER_NOTIFY is not specified,
	set auto_trigger_notify_flag to 1.

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

	* aux.c (iiimcf_enable_aux, iiimcf_disable_aux):
	Correct the assertions.

	* test/Makefile.am (SUBDIRS): Add check.

	* object.c (iiimcf_get_downloaded_objects): Renamed from
	iiimcf_get_objects().  And fix the type of the argument
	to receive downloaded objects.

	* iiimcf.c (iiimcf_finalize): Return IIIMF_STATUS_SUCCESS.

	* configure.ac (AC_OUTPUT): Add test/check/Makefile.

	* Makefile.am (SUBDIRS): Add test.

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

	* Makefile.am (libiiimcf_la_SOURCES): Add aux.c.

	* message.c (iiimcf_process_message): Deal with
	the messages, IM_AUX_START, IM_AUX_DRAW, and IM_AUX_DONE.

	* iiimcfint.h (IIIMCF_auxevent): New structure.
	(IIIMCF_event_rec): Add auxevent in v.
	(IIIMCF_aux_rec): Introduce a new member, mode.
	Rename nam_strings to num_strvals.
	(iiimcf_make_string): Declare str as a constant string.
	(iiimcf_string_length, iiimcf_duplicate_string):
	New function declaration.
	(iiimcf_make_event): Ditto.
	(iiimcf_enable_aux, iiimcf_update_aux_draw)
	(iiimcf_disable_aux, iiimcf_delete_all_aux_data)
	(iiimcf_delete_aux_event): Ditto.

	* iiimcf.c (iiimcf_make_string): Make "str" constant.
	(iiimcf_string_length): New function.

	* event.c (delete_event): Deal with the case
	of IIIMCF_EVENT_TYPE_AUX_SETVALUES.
	(iiimcf_make_event): New function.
	(iiimcf_delete_event_storage): Only if *ppe is NULL, call
	delete_event() for it.
	(iiimcf_create_keyevent): Use iiimcf_make_event.
	(iiimcf_create_trigger_notify_event): Likewise.
	(iiimcf_forward_event): Deal with the case of
	IIIMCF_EVENT_TYPE_AUX_SETVALUES.

	* context.c (iiimcf_destroy_context):
	Call iiimcf_delete_all_aux_data() before exitting.

	* aux.c: New file.

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

	* object.c: New file.

	* Makefile.am (libiiimcf_la_SOURCES): Add object.c.

	* message.c (iiimcf_process_message<IM_SETIMVALUES>):
	Call iiimcf_setimvalues().

	* iiimcf.c (iiimcf_make_string): New function.
	(iiimcf_setimvalues): New function.
	(free_object_descriptor): New function.
	(iiimcf_destroy_handle): Call iiimcf_delete_all_downloaded_objects()
	and free_object_descriptor().
	(iiimcf_get_object_descriptor_list): New function.

	* iiimcfint.h (IIIMCF_downloaded_object_rec, IIIMCF_aux_rec):
	New structures.
	(IIIMCF_handle_rec): Add new members, object_descriptor_size, pobjdesc,
	and pdownloaded_objs.
	(IIIMCF_context_rec): Add a new member, paux.
	(iiimcf_make_string): New function declaration.
	(iiimcf_setimvalues): Ditto.
	(iiimcf_delete_all_downloaded_objects): Ditto.

	* component.c (IIIMCF_component_UI, IIIMCF_component_UI_preedit)
	(IIIMCF_component_UI_status, IIIMCF_component_UI_lookup_choice)
	(IIIMCF_component_UI_commit): Implemented.

	* attr.c (find_slot): Bug fix.  When pa is NULL, return NULL
	immediately.

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

	* iiimcf.c (iiimcf_create_handle): Use iiimcf_attr_get_string_value
	instead of iiimcf_get_attr_value when obtaining a strinng value,

	* context.c (iiimcf_create_context): Use iiimcf_attr_get_ptr_value
	instead of iiimcf_get_attr_value when obtaining a pointer value,
	use iiimcf_attr_get_integer_value when obtaining an integer value.

	* attr.c (iiimcf_destroy_attr): Free pa->pslots because
	IIIMCF_attr_rec was changed.
	(find_slot): New function.
	(alloc_slot): New function.
	(iiimcf_attr_put_string_value): New function.
	(iiimcf_attr_get_string_value): Ditto.
	(iiimcf_attr_put_integer_value): Ditto.
	(iiimcf_attr_get_integer_value): Ditto.
	(iiimcf_attr_put_ptr_value): Ditto.
	(iiimcf_attr_get_ptr_value): Ditto.
	(iiimcf_get_attr_value, iiimcf_put_attr_value): Removed.  These are
	replaced with the above new function.

	* iiimcfint.h (IIIMCF_attr_type): New enumerator.
	(IIIMCF_attr_slot): New structure.
	(IIIMCF_attr_rec): Now it has the array of IIIMCF_attr_slot, not the array
	of IIIMCF_attr_value.

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

	* clientenv.c (iiimcf_create_client_env): Add a new argument
	clientname.
	(iiimcf_create_client_descriptor_message): This function
	replaces iiimcf_send_client_descriptor.  That makes an
	im_setimvalues message that have a client descriptor.

	* iiimcf.c (iiimcf_connect): Send client descriptor.
	(iiimcf_create_handle): Make addr, serv, username, and password
	constant string.
	(iiimcf_create_handle): When IIIMCF_ATTR_CLIENT_TYPE is specified
	in attr, pass it to iiimcf_create_client_env.

	* context.c (iiimcf_create_context): When
	IIIMCF_ATTR_DISABLE_AUTOMATIC_TRIGGER_NOTIFY is set to true,
	reset IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY, otherwise
	set it.

	* iiimcfint.h (IIIMCF_CONTEXT_STATE_FLAGS): Add
	IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY and
	IIIMCF_CONTEXT_CONVERSION_MODE.
	(iiimcf_create_client_env): Add a new argument,
	clientype.
	(iiimcf_create_client_descriptor_message): New function
	declaration, which replace iiimcf_send_client_descriptor.

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

	* IIIMPEIMIL.c (EIMIL_construct_mtext_from_iiimp_text):
	Free pstrh, which is a temporary buffer.

	* context.c (iiimcf_destroy_context): When waiting
	for IM_DESTROYIC_REPLY, pc is also used for matching
	condition.

	* text.c (iiimcf_update_text_by_preedit_draw): 
	Destruct pbase->pv_mtext.

	* event.c (iiimcf_get_next_event): Set refcount to 0.
	(iiimcf_peek_next_event): Set refcount to 1.
	(iiimcf_ignore_event): New API.

	* component.c (iiimcf_delete_all_components): Don't
	apply iiimcf_unregister_component to NULL pointer.

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

	* message.c (iiimcf_process_message<IM_REGISTER_TRIGGER_KEYS>):
	Call iiimcf_register_trigger_keys().

	* event.c (iiimcf_dispatch_event): Implement the actual interface
	invocation part.

	* iiimcf.c (iiimcf_register_trigger_keys): New function.
	(iiimcf_destroy_handle): When ph->pon_keys or ph->poff_keys
	is not NULL, free them.
	(iiimcf_get_trigger_keys): New API.

	* iiimcfint.h (IIIMCF_component_rec): New structure.
	(IIIMCF_keyevent_rec): Removed.
	(IIIMCF_handle_rec): Add new members, num_on_keys, pon_keys,
	num_off_keys, and poff_keys.
	(IIIMCF_handle_rec): Add a new member, proot_component.
	(IIIMCF_CONTEXT_STATE_FLAGS): Add a new constant,
	IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY.
	(iiimcf_register_trigger_keys): New function declaration.
	(iiimcf_delete_all_components): Ditto.

	* Makefile.am (libiiimcf_la_SOURCES): Add component.c.
	* Makefile.in: Updated.
	* component.c: New file.

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

	* commit.c (iiimcf_commit_string): ASSERT() must be placed
	after variable definitions.

	* context.c (remove_context): Now this functiont takes
	only one argument, IIIMCF_context_rec* pc.  The handle
	is taken from "pc".
	(iiimcf_destroy_context): Call remove_context()
	and iiimcf_delete_event_storage().

	* event.c (IIIMCF_EVENT_QUEUE_INITIAL_SLOTS_SIZE): New macro.
	(IIIMCF_EVENT_STACK_INITIAL_SLOTS_SIZE): New macro.
	(IIIMCF_EVENT_STACK): New macro, but currently undefined.
	(IIIMCF_EVENT_ADDREF, IIIMCF_EVENT_RMREF, IIIMCF_EVENT_REFCHK):
	New macros.
	(expand_event_queue, iiimcf_store_event, iiimcf_get_event):
	New functions.
	(expand_event_stack, iiimcf_push_event, iiimcf_pop_event):
	New functions, but they would be defined if IIIMCF_EVENT_STACK were
	defined.  So currently they are not defined.
	(iiimcf_forward_event): Use IIIMCF_EVENT_REFCHK, not directly
	call delete_event().
	(iiimcf_receive_forward_event): Implemented.
	(iiimcf_dispatch_event): Made only a brief skelton.
	(iiimcf_get_next_event): Implemented.
	(iiimcf_peek_next_event): Ditto.

	* iiimcfint.h (IIIMCF_event_rec): Add a new field, refcount.
	(IIIMCF_context_rec): Add new fields, evqueue_size, ppev_pro,
	ppev_con, and ppevqueue.
	(iiimcf_store_event, iiimcf_get_event, iiimcf_delete_event_storage):
	New function declarations.

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

	* message.c (iiimcf_process_message<IM_LOOKUP_CHOICE_START>):
	Call iiimcf_lookup_choice_start instead of iiimcf_toggle_lookup_choice.
	(iiimcf_process_message<IM_LOOKUP_CHOICE_PROCESS>): New case.
	(iiimcf_process_message<IM_LOOKUP_CHOICE_DONE>):
	Call iiimcf_lookup_choice_done instead of iiimcf_toggle_lookup_choice.

	* text.c (iiimcf_destruct_text): Clear pt with 0.
	(iiimcf_duplicate_text): New API.
	(iiimcf_destroy_text): New API.

	* status.c (iiimcf_update_status): Turn on
	IIIMCF_CONTEXT_STATUS_ENABLED.

	* lookup_choice.c (IIIMCF_LOOKUP_CHOICE_LABEL_INDEX_SIZE_MAX):
	New macro.
	(iiimcf_toggle_lookup_choice): Removed.
	(iiimcf_lookup_choice_start): New function.
	(iiimcf_update_lookup_choice): Implement it.
	(iiimcf_process_lookup_choice): New function.
	(iiimcf_get_lookup_choice_size): Add new arguments,
	pindex_of_first_candidate, pindex_of_last_candidate,
	and pindex_of_current_candidate.
	(iiimcf_get_lookup_choice_configuration): New API.
	(iiimcf_get_lookup_choice_title): New API.
	(iiimcf_destruct_lookup_choice): Destruct all texts and arrays
	owned by pl, not free pl itself.

	* iiimcfint.h (IIIMCF_lookup_choice_rec): Add new members.
	(iiimcf_toggle_lookup_choice): Add the function declaration.
	(iiimcf_lookup_choice_start): Ditto.
	(iiimcf_process_lookup_choice): Ditto.
	(iiimcf_lookup_choice_done): Ditto.
	(iiimcf_toggle_lookup_choice): Removed.
	(iiimcf_construct_text_from_UTF8): Add the function declaration.

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

	* commit.c: Change the comment.

	* IIIMPEIMIL.c (EIMIL_construct_mtext_from_iiimp_text): Bug fix.
	Properly set cur_fid0_* whenever pfa->feedback changes.

	* text.c (iiimcf_get_char_with_feedback): Bug fix.
	Check the type of pv only if pv is not NULL, and the type
	must be EIMIL_TYPE_PROP.

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

	* Makefile.am (SUBDIRS): Don't include test.
	(libiiimcf_la_SOURCES): Add clientenv.c
	* Makefile.in: Updated.

	* IIIMPEIMIL.c (set_feedback_prop): Bug fix.  Add index number as well.
	(EIMIL_construct_mtext_from_iiimp_text): Properly set cur_fid0_st and
	cur_fid0_val if pfa->feedback is not 0.

	* text.c: When pstr is empty, set pv_mtext to NULL.  
	(update_text): When pt->pv_mtext is NULL, set pt->pu16 to NULL,
	and pt->len to 0.
	(iiimcf_convert_iiimp_string_to_text): Reset updated flag.
	When pstr is empty, set pv_mtext to NULL.
	(iiimcf_convert_iiimp_text_to_text): Likewise.
	(iiimcf_convert_iiimp_contents_to_text): Don't call
	EIMIL_construct_mtext_from_iiimp_contents().  Instead,
	call iiimcf_convert_iiimp_text_to_text or iiimcf_convert_iiimp_string_to_text
	by inspecting type by itself.

	* status.c (iiimcf_toggle_status): 
	Fix the macro name of IIIMCF_IS_ENABLED.

	* preedit.c (iiimcf_toggle_preedit): 
	Fix the macro name of IIIMCF_IS_ENABLED.

	* lookup_choice.c (iiimcf_toggle_lookup_choice):
	Fix the macro name of IIIMCF_IS_ENABLED.
	(iiimcf_destruct_lookup_choice): New function.

	* iiimcf.c (IIIMCF_DEFAULT_TIMEOUT): New macro.
	(iiimcf_unregister_langs): New function.
	(iiimcf_register_langs): Ditto.
	(iiimcf_connect): To create IM_CONNECT message, use
	iiimcf_create_im_connect_message().  Use iiimf_stream_send() instead
	of iiimf_send_message().  Register language list in IM_CONNECT_REPLY
	message.
	(iiimcf_disconnect): Use iiimf_stream_send() instead of
	iiimf_send_message().
	(iiimcf_send_message): Ditto.  And don't call iiimcf_check_connection.
	Check the return value of iiimf_stream_send() instead.
	(iiimcf_receive_message): Don't check if ph has already been
	connected because this function may be called during initiations.
	And don't call iiimcf_check_connection.  Check the return value
	of iiimf_stream_send() instead.
	(iiimcf_create_handle): Init. ph with 0.  Not use iiimf_im_new().
	Use iiimf_connect_socket_stream() to initalize stream.  Call
	iiimcf_create_client_env().
	(iiimcf_destroy_handle): Implemente it.
	(iiimcf_get_supported_languages, iiimcf_get_language_id):
	New function.

	* iiimcfint.h (IIIMCF_client_env): New structure.
	(IIIMCF_handle_rec): New members, pstream and penv.
	pim was removed.  pinput_methods was renamed to ppinput_method,
	and its type was changed to IIIMCF_input_method_rec**.
	plangs was renamed to pplangs, and its type was changed to
	IIIMCF_language_rec**.
	(IIIMCF_input_method_rec): lang_num is renames to num_langs.
	(IIIMCF_event_rec): Add number to v.
	(iiimcf_destruct_lookup_choice): New function declaration.
	(iiimcf_create_client_env): Ditto.
	(iiimcf_delete_client_env): Ditto.
	(iiimcf_create_im_connect_message): Ditto.
	(iiimcf_send_client_descriptor): Ditto.

	* event.c (delete_event): New function.
	(iiimcf_create_trigger_notify_event): New function.
	(iiimcf_get_keyevent_value): If pe->type is not
	IIIMCF_EVENT_TYPE_KEYEVENT, return IIIMF_STATUS_ARGUMENT.
	(iiimcf_get_trigger_notify_flag): New function.
	(send_trigger_notify): New function.
	(iiimcf_forward_event): Deal with IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY.

	* context.c (convert_language): Don't delete pimstr, because
	it becomes a part of picattr.
	(convert_input_method): Likewise.
	(iiimcf_destroy_context): Fix typo.
	(iiimcf_is_UIstate_changed): New function.

	* attr.c (iiimcf_create_attr): Bug fix.  Init the whole of pa with 0.
	(iiimcf_put_attr_value): When pa is NULL, return IIIMF_STATUS_ARGUMENT.
	(iiimcf_get_attr_value): When pa is NULL, return IIIMF_STATUS_NO_ATTR_VALUE.

	* clientenv.c: New file.

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

	* Import first version.

