Back to index

im-sdk  12.3.91
Classes | Defines | Typedefs | Enumerations | Functions
iiimcf.h File Reference
#include <iiimp.h>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  IIIMCF_object_descriptor
struct  IIIMCF_imeinfo_rec
struct  IIIMCF_keyevent
struct  IIIMCF_hotkey
struct  IIIMCF_hotkey_profile
struct  IIIMCF_ns_listener
struct  IIIMCF_ns

Defines

#define IIIMCF_IS_EVENT_TYPE_BROADCAST(type)   ((type) < 0)
#define IIIMCF_ATTR_NULL   ((IIIMCF_attr) (NULL))
#define IIIMCF_ROOT_COMPONENT   ((IIIMCF_component) NULL)

Typedefs

typedef struct IIIMCF_handle_recIIIMCF_handle
typedef struct IIIMCF_attr_recIIIMCF_attr
typedef struct IIIMCF_context_recIIIMCF_context
typedef struct IIIMCF_text_recIIIMCF_text
typedef struct
IIIMCF_lookup_choice_rec
IIIMCF_lookup_choice
typedef struct
IIIMCF_language_rec
IIIMCF_language
typedef struct
IIIMCF_input_method_rec
IIIMCF_input_method
typedef struct IIIMCF_imeinfo_recIIIMCF_imeinfo
typedef struct IIIMCF_event_recIIIMCF_event
typedef struct
IIIMCF_component_rec
IIIMCF_component
typedef struct
IIIMCF_downloaded_object_rec
IIIMCF_downloaded_object
typedef struct IIIMCF_imeinfo_rec
typedef struct IIIMCF_keyevent
typedef struct IIIMCF_hotkey
typedef struct IIIMCF_hotkey_profile
typedef struct IIIMCF_ns_listener
typedef struct IIIMCF_ns
typedef IIIMF_status(* IIIMCF_component_interface )(IIIMCF_context context, IIIMCF_event event, IIIMCF_component current, IIIMCF_component parent)

Enumerations

enum  IIIMCF_VERSION_ITEMS { IIIMCF_LIBRARY_VERSION = (1 << 0), IIIMCF_PROTOCOL_VERSION = (1 << 1) }
enum  IIIMCF_VERSION_CATEGORIES { IIIMCF_MAJOR_VERSION = (1 << 8), IIIMCF_MINOR_VERSION = (1 << 9) }
enum  IIIMCF_UISTATE {
  IIIMCF_STATE_PREEDIT_CHANGED = (1 << 0), IIIMCF_STATE_LOOKUP_CHOICE_CHANGED = (1 << 1), IIIMCF_STATE_STATUS_CHANGED = (1 << 2), IIIMCF_STATE_COMMIT_REQUIRED = (1 << 3),
  IIIMCF_STATE_PENDING_EVENT = (1 << 4), IIIMCF_STATE_CONVERSION_MODE_CHANGED = (1 << 5), IIIMCF_STATE_INVALIDATED = (1 << 16)
}
enum  IIIMCF_LOOKUP_CHOICE_DIRECTION { IIIMCF_LOOKUP_CHOICE_HORIZONTAL_DIRECTION = 0, IIIMCF_LOOKUP_CHOICE_VERTICAL_DIRECTION = 1 }
enum  IIIMCF_LOOKUP_CHOICE_ITEM_FLAGS { IIIMCF_LOOKUP_CHOICE_ITEM_ENABLED = (1 << 0), IIIMCF_LOOKUP_CHOICE_SELECTED_ITEM = (1 << 1) }
enum  IIIMCF_ATTRS {
  IIIMCF_ATTR_SERVER_ADDRESS = 1, IIIMCF_ATTR_SERVER_SERVICE, IIIMCF_ATTR_USERNAME, IIIMCF_ATTR_PASSWORD,
  IIIMCF_ATTR_CLIENT_TYPE, IIIMCF_ATTR_DISABLE_AUTOMATIC_RESTORATION, IIIMCF_ATTR_CLIENT_X_DISPLAY_NAME, IIIMCF_ATTR_CLIENT_X_SERVER_VENDOR,
  IIIMCF_ATTR_INPUT_LANGUAGE = 0x1000, IIIMCF_ATTR_INPUT_METHOD, IIIMCF_ATTR_DISABLE_AUTOMATIC_TRIGGER_NOTIFY, IIIMCF_ATTR_INPUT_METHOD_NAME,
  IIIMCF_ATTR_PRIVATE_START = 0x10000
}
enum  IIIMCF_EVENT_TYPES {
  IIIMCF_EVENT_TYPE_DESTROY = -2, IIIMCF_EVENT_TYPE_RESET = -1, IIIMCF_EVENT_TYPE_EVENTLIKE = 1, IIIMCF_EVENT_TYPE_KEYEVENT = 2,
  IIIMCF_EVENT_TYPE_KEYEVENT_END = 0x0FFF, IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY_START = 0x1000, IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY = 0x1000, IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY_END = 0x1FFF,
  IIIMCF_EVENT_TYPE_OPERATION = 0x2000, IIIMCF_EVENT_TYPE_SETICFOCUS = 0x3000, IIIMCF_EVENT_TYPE_UNSETICFOCUS = 0x3001, IIIMCF_EVENT_TYPE_EVENTLIKE_END = 0x3FFF,
  IIIMCF_EVENT_TYPE_HOTKEY_NOTIFY = 0x4000, IIIMCF_EVENT_TYPE_UI = 0x8000, IIIMCF_EVENT_TYPE_UI_PREEDIT = 0x9000, IIIMCF_EVENT_TYPE_UI_PREEDIT_START,
  IIIMCF_EVENT_TYPE_UI_PREEDIT_CHANGE, IIIMCF_EVENT_TYPE_UI_PREEDIT_DONE, IIIMCF_EVENT_TYPE_UI_PREEDIT_END = 0x9FFF, IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE = 0xA000,
  IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE_START, IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE_CHANGE, IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE_DONE, IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE_END = 0xAFFF,
  IIIMCF_EVENT_TYPE_UI_STATUS = 0xB000, IIIMCF_EVENT_TYPE_UI_STATUS_START, IIIMCF_EVENT_TYPE_UI_STATUS_CHANGE, IIIMCF_EVENT_TYPE_UI_STATUS_DONE,
  IIIMCF_EVENT_TYPE_UI_STATUS_END = 0xBFFF, IIIMCF_EVENT_TYPE_UI_COMMIT = 0xC000, IIIMCF_EVENT_TYPE_UI_COMMIT_END = 0xCFFF, IIIMCF_EVENT_TYPE_UI_END = 0xFFFF,
  IIIMCF_EVENT_TYPE_AUX = 0x80000, IIIMCF_EVENT_TYPE_AUX_START, IIIMCF_EVENT_TYPE_AUX_DRAW, IIIMCF_EVENT_TYPE_AUX_SETVALUES,
  IIIMCF_EVENT_TYPE_AUX_DONE, IIIMCF_EVENT_TYPE_AUX_GETVALUES, IIIMCF_EVENT_TYPE_AUX_END = 0x8FFFF
}

Functions

IIIMF_status iiimcf_initialize (IIIMCF_attr attr)
IIIMF_status iiimcf_finalize ()
IIIMF_status iiimcf_create_handle (IIIMCF_attr attr, IIIMCF_handle *phandle)
IIIMF_status iiimcf_destroy_handle (IIIMCF_handle handle)
IIIMF_status iiimcf_create_context (IIIMCF_handle handle, IIIMCF_attr attr, IIIMCF_context *pcontext)
IIIMF_status iiimcf_destroy_context (IIIMCF_context context)
IIIMF_status iiimcf_context_set_attr (IIIMCF_context context, IIIMCF_attr attr)
IIIMF_status iiimcf_reset_context (IIIMCF_context context)
IIIMF_status iiimcf_create_attr (IIIMCF_attr *pattr)
IIIMF_status iiimcf_destroy_attr (IIIMCF_attr attr)
IIIMF_status iiimcf_attr_put_string_value (IIIMCF_attr attr, int property, const char *str)
IIIMF_status iiimcf_attr_get_string_value (IIIMCF_attr attr, int property, const char **pstr)
IIIMF_status iiimcf_attr_put_integer_value (IIIMCF_attr attr, int property, int number)
IIIMF_status iiimcf_attr_get_integer_value (IIIMCF_attr attr, int property, int *pnumber)
IIIMF_status iiimcf_attr_put_ptr_value (IIIMCF_attr attr, int property, void *ptr)
IIIMF_status iiimcf_attr_get_ptr_value (IIIMCF_attr attr, int property, void **pptr)
IIIMF_status iiimcf_get_text_utf16string (IIIMCF_text text, const IIIMP_card16 **putf16str)
IIIMF_status iiimcf_get_text_length (IIIMCF_text text, int *plen)
IIIMF_status iiimcf_get_char_with_feedback (IIIMCF_text text, int pos, IIIMP_card16 *pch, int *pnum_feedbacks, const IIIMP_card32 **pfeedback_id, const IIIMP_card32 **pfeedback)
IIIMF_status iiimcf_duplicate_text (IIIMCF_text src, IIIMCF_text *pduplicated)
IIIMF_status iiimcf_destroy_text (IIIMCF_text text)
IIIMF_status iiimcf_get_lookup_choice_configuration (IIIMCF_lookup_choice lookup_choice, int *pchoices_per_window, int *pnumber_of_rows, int *pnumber_of_columns, int *pdirection)
IIIMF_status iiimcf_get_lookup_choice_size (IIIMCF_lookup_choice lookup_choice, int *psize, int *pindex_of_first_candidate, int *pindex_of_last_candidate, int *pindex_of_current_candidate)
IIIMF_status iiimcf_get_lookup_choice_title (IIIMCF_lookup_choice lookup_choice, IIIMCF_text *ptitle)
IIIMF_status iiimcf_get_lookup_choice_item (IIIMCF_lookup_choice lookup_choice, int idx, IIIMCF_text *pcandidate, IIIMCF_text *plabel, int *pflag)
IIIMF_status iiimcf_get_language_id (IIIMCF_language lang, const char **plangid)
IIIMF_status iiimcf_get_input_method_desc (IIIMCF_input_method input_method, const IIIMP_card16 **pinput_method_idname, const IIIMP_card16 **pinput_method_hrn, const IIIMP_card16 **pinput_method_domain)
IIIMF_status iiimcf_get_input_method_languages (IIIMCF_input_method input_method, int *pinput_method_language_size, IIIMCF_language **pplanguages)
IIIMF_status iiimcf_set_input_method_name (IIIMCF_input_method input_method, const IIIMP_card16 *input_method_name)
IIIMF_status iiimcf_get_input_method_imeinfos (IIIMCF_input_method input_method, int *pinput_method_imeinfo_size, const IIIMCF_imeinfo_rec ***ppimeinfos)
IIIMF_status iiimcf_get_downloaded_object_descriptor (IIIMCF_downloaded_object object, const IIIMCF_object_descriptor **ppdesc)
IIIMF_status iiimcf_get_downloaded_object_filename (IIIMCF_downloaded_object object, const IIIMP_card16 **pfilename)
IIIMF_status iiimcf_get_downloaded_objects (IIIMCF_handle handle, int num_objs, const IIIMCF_object_descriptor **ppdesc, IIIMCF_downloaded_object *pobjs)
IIIMF_status iiimcf_get_version_number (IIIMCF_handle handle, int flag, int *pversion_number)
IIIMF_status iiimcf_is_UIstate_changed (IIIMCF_context context, int *pflag)
IIIMF_status iiimcf_get_supported_languages (IIIMCF_handle handle, int *pnum_langs, IIIMCF_language **pplangs)
IIIMF_status iiimcf_get_supported_input_methods (IIIMCF_handle handle, int *pnum_input_methods, IIIMCF_input_method **ppinput_methods)
IIIMF_status iiimcf_get_object_descriptor_list (IIIMCF_handle handle, int *pnum_object_descriptors, const IIIMCF_object_descriptor **ppdesc)
IIIMF_status iiimcf_get_trigger_keys (IIIMCF_handle handle, int *pnum_on_keys, const IIIMCF_keyevent **pponkeys, int *pnum_off_keys, const IIIMCF_keyevent **ppoffkeys)
IIIMF_status iiimcf_get_im_id (IIIMCF_handle handle, int *pim_id)
IIIMF_status iiimcf_get_current_conversion_mode (IIIMCF_context context, int *pflag)
IIIMF_status iiimcf_get_preedit_text (IIIMCF_context context, IIIMCF_text *ptext, int *pcaret_position)
IIIMF_status iiimcf_get_status_text (IIIMCF_context context, IIIMCF_text *ptext)
IIIMF_status iiimcf_get_lookup_choice (IIIMCF_context context, IIIMCF_lookup_choice *plookup_choice)
IIIMF_status iiimcf_get_committed_text (IIIMCF_context context, IIIMCF_text *ptext)
IIIMF_status iiimcf_get_aux_draw_data (IIIMCF_context context, const IIIMP_card16 *aux_name, IIIMP_card32 class_idx, int *pnum_intvals, const IIIMP_card32 **ppintvals, int *pnum_strvals, const IIIMP_card16 ***ppstrs)
IIIMF_status iiimcf_context_get_attr (IIIMCF_context context, IIIMCF_attr *pattr)
IIIMF_status iiimcf_get_ic_id (IIIMCF_context context, int *pic_id)
IIIMF_status iiimcf_get_event_type (IIIMCF_event event, IIIMCF_event_type *pevent_type)
IIIMF_status iiimcf_create_keyevent (const IIIMCF_keyevent *pkeyevent, IIIMCF_event *pevent)
IIIMF_status iiimcf_create_trigger_notify_event (int flag, IIIMCF_event *pevent)
IIIMF_status iiimcf_create_hotkey_notify_event (IIIMCF_event *pevent)
IIIMF_status iiimcf_create_seticfocus_event (IIIMCF_event *pevent)
IIIMF_status iiimcf_create_unseticfocus_event (IIIMCF_event *pevent)
IIIMF_status iiimcf_create_aux_setvalues_event (const IIIMP_card16 *aux_name, IIIMP_card32 class_idx, int num_intvals, const IIIMP_card32 *pintvals, int num_strvals, const IIIMP_card16 **pstrs, IIIMCF_event *pevent)
IIIMF_status iiimcf_create_aux_getvalues_event (const IIIMP_card16 *aux_name, IIIMP_card32 class_idx, int num_intvals, const IIIMP_card32 *pintvals, int num_strvals, const IIIMP_card16 **pstrs, IIIMCF_event *pevent)
IIIMF_status iiimcf_get_keyevent_value (IIIMCF_event event, IIIMCF_keyevent *pkeyevent)
IIIMF_status iiimcf_get_trigger_notify_flag (IIIMCF_event event, int *pflag)
IIIMF_status iiimcf_get_aux_event_value (IIIMCF_event event, const IIIMP_card16 **paux_name, IIIMP_card32 *pclass_idx, int *pnum_intvals, const IIIMP_card32 **ppintvals, int *pnum_strvals, const IIIMP_card16 ***ppstrs)
IIIMF_status iiimcf_forward_event (IIIMCF_context context, IIIMCF_event event)
IIIMF_status iiimcf_dispatch_event (IIIMCF_context context, IIIMCF_event event)
IIIMF_status iiimcf_get_next_event (IIIMCF_context context, IIIMCF_event *pevent)
IIIMF_status iiimcf_peek_next_event (IIIMCF_context context, IIIMCF_event *pevent)
IIIMF_status iiimcf_ignore_event (IIIMCF_event event)
IIIMF_status iiimcf_register_component (IIIMCF_handle handle, const char *name, IIIMCF_component_interface interface, IIIMCF_component parent, IIIMCF_component *pcomp)
IIIMF_status iiimcf_unregister_component (IIIMCF_component component)
IIIMF_status iiimcf_get_component (IIIMCF_handle handle, const char *name, IIIMCF_component *pcomponent)
IIIMF_status iiimcf_component_get_attr (IIIMCF_component component, IIIMCF_attr *pattr)
IIIMF_status iiimcf_is_capability_supported (IIIMCF_handle handle, int capability)

Class Documentation

struct IIIMCF_object_descriptor

Definition at line 159 of file iiimcf.h.

Class Members
int category
const IIIMP_card16 * domain
int dynamic_id
const IIIMP_card16 * hrn
int predefined_id
const IIIMP_card16 * signature
size_t size
const IIIMP_card16 * user
struct IIIMCF_imeinfo_rec

Definition at line 172 of file iiimcf.h.

Class Members
IIIMP_card16 * author
IIIMP_card16 * copyright
IIIMP_card16 * description
int enable
char * ime_id
IIIMP_card16 * imename
IIIMP_card16 * reserved1
IIIMP_card16 * reserved2
IIIMP_card16 * version
struct IIIMCF_keyevent

Definition at line 186 of file iiimcf.h.

Class Members
IIIMP_int32 keychar
IIIMP_int32 keycode
IIIMP_int32 modifier
IIIMP_int32 time_stamp
struct IIIMCF_hotkey

Definition at line 195 of file iiimcf.h.

Collaboration diagram for IIIMCF_hotkey:
Class Members
int action_flag
int hotkey_id
char * hotkey_label
IIIMCF_keyevent * keys
int nkeys
int state_flag
struct IIIMCF_hotkey_profile

Definition at line 206 of file iiimcf.h.

Collaboration diagram for IIIMCF_hotkey_profile:
Class Members
int num_hotkeys
IIIMCF_hotkey * phot_keys
int profile_id
int scope
struct IIIMCF_ns_listener

Definition at line 215 of file iiimcf.h.

Class Members
char * filename
int listener_id
void * nscl_fp
struct IIIMCF_ns

Definition at line 223 of file iiimcf.h.

Class Members
char * dirname
char * filename
int ns_id
DIR * nsc_dirp
int nsc_fd
int size

Define Documentation

#define IIIMCF_ATTR_NULL   ((IIIMCF_attr) (NULL))

Definition at line 154 of file iiimcf.h.

#define IIIMCF_IS_EVENT_TYPE_BROADCAST (   type)    ((type) < 0)

Definition at line 116 of file iiimcf.h.

Definition at line 241 of file iiimcf.h.


Typedef Documentation

typedef struct IIIMCF_attr_rec* IIIMCF_attr

Definition at line 125 of file iiimcf.h.

Definition at line 134 of file iiimcf.h.

Definition at line 234 of file iiimcf.h.

Definition at line 126 of file iiimcf.h.

Definition at line 135 of file iiimcf.h.

typedef struct IIIMCF_event_rec* IIIMCF_event

Definition at line 133 of file iiimcf.h.

Definition at line 124 of file iiimcf.h.

typedef struct IIIMCF_hotkey

Definition at line 194 of file iiimcf.h.

typedef struct IIIMCF_hotkey_profile

Definition at line 205 of file iiimcf.h.

Definition at line 132 of file iiimcf.h.

typedef struct IIIMCF_imeinfo_rec

Definition at line 171 of file iiimcf.h.

Definition at line 131 of file iiimcf.h.

typedef struct IIIMCF_keyevent

Definition at line 185 of file iiimcf.h.

Definition at line 130 of file iiimcf.h.

Definition at line 129 of file iiimcf.h.

typedef struct IIIMCF_ns

Definition at line 222 of file iiimcf.h.

typedef struct IIIMCF_ns_listener

Definition at line 214 of file iiimcf.h.

typedef struct IIIMCF_text_rec* IIIMCF_text

Definition at line 127 of file iiimcf.h.


Enumeration Type Documentation

Enumerator:
IIIMCF_ATTR_SERVER_ADDRESS 
IIIMCF_ATTR_SERVER_SERVICE 
IIIMCF_ATTR_USERNAME 
IIIMCF_ATTR_PASSWORD 
IIIMCF_ATTR_CLIENT_TYPE 
IIIMCF_ATTR_DISABLE_AUTOMATIC_RESTORATION 
IIIMCF_ATTR_CLIENT_X_DISPLAY_NAME 
IIIMCF_ATTR_CLIENT_X_SERVER_VENDOR 
IIIMCF_ATTR_INPUT_LANGUAGE 
IIIMCF_ATTR_INPUT_METHOD 
IIIMCF_ATTR_DISABLE_AUTOMATIC_TRIGGER_NOTIFY 
IIIMCF_ATTR_INPUT_METHOD_NAME 
IIIMCF_ATTR_PRIVATE_START 

Definition at line 45 of file iiimcf.h.

Enumerator:
IIIMCF_EVENT_TYPE_DESTROY 
IIIMCF_EVENT_TYPE_RESET 
IIIMCF_EVENT_TYPE_EVENTLIKE 
IIIMCF_EVENT_TYPE_KEYEVENT 
IIIMCF_EVENT_TYPE_KEYEVENT_END 
IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY_START 
IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY 
IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY_END 
IIIMCF_EVENT_TYPE_OPERATION 
IIIMCF_EVENT_TYPE_SETICFOCUS 
IIIMCF_EVENT_TYPE_UNSETICFOCUS 
IIIMCF_EVENT_TYPE_EVENTLIKE_END 
IIIMCF_EVENT_TYPE_HOTKEY_NOTIFY 
IIIMCF_EVENT_TYPE_UI 
IIIMCF_EVENT_TYPE_UI_PREEDIT 
IIIMCF_EVENT_TYPE_UI_PREEDIT_START 
IIIMCF_EVENT_TYPE_UI_PREEDIT_CHANGE 
IIIMCF_EVENT_TYPE_UI_PREEDIT_DONE 
IIIMCF_EVENT_TYPE_UI_PREEDIT_END 
IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE 
IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE_START 
IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE_CHANGE 
IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE_DONE 
IIIMCF_EVENT_TYPE_UI_LOOKUP_CHOICE_END 
IIIMCF_EVENT_TYPE_UI_STATUS 
IIIMCF_EVENT_TYPE_UI_STATUS_START 
IIIMCF_EVENT_TYPE_UI_STATUS_CHANGE 
IIIMCF_EVENT_TYPE_UI_STATUS_DONE 
IIIMCF_EVENT_TYPE_UI_STATUS_END 
IIIMCF_EVENT_TYPE_UI_COMMIT 
IIIMCF_EVENT_TYPE_UI_COMMIT_END 
IIIMCF_EVENT_TYPE_UI_END 
IIIMCF_EVENT_TYPE_AUX 
IIIMCF_EVENT_TYPE_AUX_START 
IIIMCF_EVENT_TYPE_AUX_DRAW 
IIIMCF_EVENT_TYPE_AUX_SETVALUES 
IIIMCF_EVENT_TYPE_AUX_DONE 
IIIMCF_EVENT_TYPE_AUX_GETVALUES 
IIIMCF_EVENT_TYPE_AUX_END 

Definition at line 64 of file iiimcf.h.

Enumerator:
IIIMCF_LOOKUP_CHOICE_HORIZONTAL_DIRECTION 
IIIMCF_LOOKUP_CHOICE_VERTICAL_DIRECTION 

Definition at line 35 of file iiimcf.h.

Enumerator:
IIIMCF_LOOKUP_CHOICE_ITEM_ENABLED 
IIIMCF_LOOKUP_CHOICE_SELECTED_ITEM 

Definition at line 40 of file iiimcf.h.

Enumerator:
IIIMCF_STATE_PREEDIT_CHANGED 
IIIMCF_STATE_LOOKUP_CHOICE_CHANGED 
IIIMCF_STATE_STATUS_CHANGED 
IIIMCF_STATE_COMMIT_REQUIRED 
IIIMCF_STATE_PENDING_EVENT 
IIIMCF_STATE_CONVERSION_MODE_CHANGED 
IIIMCF_STATE_INVALIDATED 

Definition at line 24 of file iiimcf.h.

Enumerator:
IIIMCF_MAJOR_VERSION 
IIIMCF_MINOR_VERSION 

Definition at line 19 of file iiimcf.h.

                               {
       IIIMCF_MAJOR_VERSION = (1 << 8),
       IIIMCF_MINOR_VERSION = (1 << 9)
};
Enumerator:
IIIMCF_LIBRARY_VERSION 
IIIMCF_PROTOCOL_VERSION 

Definition at line 15 of file iiimcf.h.

                          {
       IIIMCF_LIBRARY_VERSION = (1 << 0),
       IIIMCF_PROTOCOL_VERSION = (1 << 1)
};

Function Documentation

IIIMF_status iiimcf_attr_get_integer_value ( IIIMCF_attr  attr,
int  property,
int *  pnumber 
)

Definition at line 163 of file attr.c.

{
    IIIMCF_attr_slot *ps;
    IIIMCF_attr_rec *pa = (IIIMCF_attr_rec*) attr;

    ps = find_slot(pa, property);
    if (!ps) return IIIMF_STATUS_NO_ATTR_VALUE;
    if (ps->type != IIIMCF_ATTR_TYPE_INTEGER)
       return IIIMF_STATUS_ARGUMENT;

    *pnumber = ps->v.number;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_attr_get_ptr_value ( IIIMCF_attr  attr,
int  property,
void **  pptr 
)

Definition at line 204 of file attr.c.

{
    IIIMCF_attr_slot *ps;
    IIIMCF_attr_rec *pa = (IIIMCF_attr_rec*) attr;

    ps = find_slot(pa, property);
    if (!ps) return IIIMF_STATUS_NO_ATTR_VALUE;
    if (ps->type != IIIMCF_ATTR_TYPE_POINTER)
       return IIIMF_STATUS_ARGUMENT;

    *pptr = ps->v.ptr;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_attr_get_string_value ( IIIMCF_attr  attr,
int  property,
const char **  pstr 
)

Definition at line 122 of file attr.c.

{
    IIIMCF_attr_slot *ps;
    IIIMCF_attr_rec *pa = (IIIMCF_attr_rec*) attr;

    ps = find_slot(pa, property);
    if (!ps) return IIIMF_STATUS_NO_ATTR_VALUE;
    if (ps->type != IIIMCF_ATTR_TYPE_STRING)
       return IIIMF_STATUS_ARGUMENT;

    *pstr = ps->v.str;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_attr_put_integer_value ( IIIMCF_attr  attr,
int  property,
int  number 
)

Definition at line 142 of file attr.c.

{
    IIIMCF_attr_slot *ps;
    IIIMCF_attr_rec *pa = (IIIMCF_attr_rec*) attr;

    ps = alloc_slot(pa, property);
    if (!ps) return IIIMF_STATUS_MALLOC;
    if ((ps->type != IIIMCF_ATTR_TYPE_NONE) 
       && (ps->type != IIIMCF_ATTR_TYPE_INTEGER))
       return IIIMF_STATUS_ARGUMENT;
    ps->type = IIIMCF_ATTR_TYPE_INTEGER;
    ps->v.number = number;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_attr_put_ptr_value ( IIIMCF_attr  attr,
int  property,
void *  ptr 
)

Definition at line 183 of file attr.c.

{
    IIIMCF_attr_slot *ps;
    IIIMCF_attr_rec *pa = (IIIMCF_attr_rec*) attr;

    ps = alloc_slot(pa, property);
    if (!ps) return IIIMF_STATUS_MALLOC;
    if ((ps->type != IIIMCF_ATTR_TYPE_NONE) 
       && (ps->type != IIIMCF_ATTR_TYPE_POINTER))
       return IIIMF_STATUS_ARGUMENT;
    ps->type = IIIMCF_ATTR_TYPE_POINTER;
    ps->v.ptr = ptr;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_attr_put_string_value ( IIIMCF_attr  attr,
int  property,
const char *  str 
)

Definition at line 101 of file attr.c.

{
    IIIMCF_attr_slot *ps;
    IIIMCF_attr_rec *pa = (IIIMCF_attr_rec*) attr;

    ps = alloc_slot(pa, property);
    if (!ps) return IIIMF_STATUS_MALLOC;
    if ((ps->type != IIIMCF_ATTR_TYPE_NONE) 
       && (ps->type != IIIMCF_ATTR_TYPE_STRING))
       return IIIMF_STATUS_ARGUMENT;
    ps->type = IIIMCF_ATTR_TYPE_STRING;
    ps->v.str = str;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 395 of file component.c.

{
    IIIMF_status st;
    IIIMCF_component_rec *pc = (IIIMCF_component_rec*) component;

    if (pc->attr) {
       *pattr = pc->attr;
       return IIIMF_STATUS_SUCCESS;
    }
    st = iiimcf_create_attr(pattr);
    if (st != IIIMF_STATUS_SUCCESS) return st;
    pc->attr = *pattr;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Definition at line 545 of file context.c.

{
    IIIMCF_context_rec *pc = (IIIMCF_context_rec*) context;

    if (!pc->attr) {
       IIIMF_status st;

       st = iiimcf_create_attr(&pc->attr);
       if (st != IIIMF_STATUS_SUCCESS) return st;
    }
    *pattr = pc->attr;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 420 of file context.c.

{
    IIIMF_status st;
    IIIMCF_context_rec *pc = (IIIMCF_context_rec*) context;
    IIIMCF_handle_rec *ph = pc->ph;
    IIIMP_message *pmes;
    IIIMP_icattribute *picattr;
    int auto_trigger_notify_flag;

    st = iiimcf_attr_get_integer_value(attr,
                                       IIIMCF_ATTR_DISABLE_AUTOMATIC_TRIGGER_NOTIFY,
                                       &auto_trigger_notify_flag);
    if (st == IIIMF_STATUS_NO_ATTR_VALUE) {
        auto_trigger_notify_flag = 1;
    } else if (st == IIIMF_STATUS_SUCCESS) {
        auto_trigger_notify_flag = !auto_trigger_notify_flag;
    } else {
        return st;
    }
    st = create_icattribute(pc, attr);
    if (st != IIIMF_STATUS_SUCCESS)
       return st;

    st = create_iiimp_icattr(pc, &picattr);
    if (st != IIIMF_STATUS_SUCCESS) {
       free_icattribute(pc);
       return st;
    }

    pmes = iiimp_seticvalues_new(ph->data_s, ph->im_id, pc->ic_id, picattr);
    st = iiimcf_request_message(ph, pmes, NULL, IM_SETICVALUES_REPLY, &pmes);
    if (st != IIIMF_STATUS_SUCCESS) {
       free_icattribute(pc);
       return st;
    }

    /* restore conversion mode */
    if (IIIMCF_IS_ENABLED(pc, IIIMCF_CONTEXT_CONVERSION_MODE)) {
       st = iiimcf_forward_trigger_notify(pc, 1);
       if (st != IIIMF_STATUS_SUCCESS) {
           IIIMCF_RESET_STATE(pc, IIIMCF_CONTEXT_CONVERSION_MODE);
           return st;
       }
    }

    if (auto_trigger_notify_flag)
       IIIMCF_SET_STATE(pc, IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY);
    else
       IIIMCF_RESET_STATE(pc, IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY);

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 20 of file attr.c.

{
    IIIMCF_attr_rec *pa;

    pa = (IIIMCF_attr_rec*) malloc(sizeof(*pa));
    if (!pa) return IIIMF_STATUS_MALLOC;
    memset(pa, 0, sizeof(*pa));

    *pattr = pa;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_create_aux_getvalues_event ( const IIIMP_card16 aux_name,
IIIMP_card32  class_idx,
int  num_intvals,
const IIIMP_card32 pintvals,
int  num_strvals,
const IIIMP_card16 **  pstrs,
IIIMCF_event pevent 
)

Definition at line 609 of file aux.c.

{
    IIIMCF_event_rec *pe;
    IIIMCF_auxevent *pae;

    pe = iiimcf_make_event(IIIMCF_EVENT_TYPE_AUX_GETVALUES);
    if (!pe) return IIIMF_STATUS_MALLOC;

    pae = (IIIMCF_auxevent*) malloc(sizeof(*pae));
    if (!pae) goto memory_error;
    memset(pae, 0, sizeof(*pae));
    pe->v.pauxevent = pae;

    pae->index = class_idx;
    pae->name = iiimcf_duplicate_string(aux_name);
    if (!pae->name) goto memory_error;

    /* integer value */
    if (num_intvals > 0) {
       IIIMP_card32 *pc32;

       pc32 = (IIIMP_card32*) malloc(sizeof(*pc32) * num_intvals);
       if (!pc32) goto memory_error;
       memcpy(pc32, pintvals, sizeof(*pc32) * num_intvals);
       pae->pintvals = pc32;
       pae->num_intvals = num_intvals;
    }
    /* string value */
    if (num_strvals > 0) {
       int i;
       IIIMP_card16 **ppu16;

       ppu16 = (IIIMP_card16**) malloc(sizeof(*ppu16) * num_strvals);
       if (!ppu16) goto memory_error;
       pae->pstrs = ppu16;
       pae->num_strvals = num_strvals;
       memset(ppu16, 0, sizeof(*ppu16) * num_strvals);
       for (i = 0; i < num_strvals; i++) {
           *ppu16 = iiimcf_duplicate_string(*pstrs);
           if (!*ppu16) goto memory_error;
           ppu16++;
           pstrs++;
       }
    }

    *pevent = pe;

    return IIIMF_STATUS_SUCCESS;

memory_error:
    iiimcf_delete_aux_event(pe);
    free(pe);
    return IIIMF_STATUS_MALLOC;
}

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_create_aux_setvalues_event ( const IIIMP_card16 aux_name,
IIIMP_card32  class_idx,
int  num_intvals,
const IIIMP_card32 pintvals,
int  num_strvals,
const IIIMP_card16 **  pstrs,
IIIMCF_event pevent 
)

Definition at line 545 of file aux.c.

{
    IIIMCF_event_rec *pe;
    IIIMCF_auxevent *pae;

    pe = iiimcf_make_event(IIIMCF_EVENT_TYPE_AUX_SETVALUES);
    if (!pe) return IIIMF_STATUS_MALLOC;

    pae = (IIIMCF_auxevent*) malloc(sizeof(*pae));
    if (!pae) goto memory_error;
    memset(pae, 0, sizeof(*pae));
    pe->v.pauxevent = pae;

    pae->index = class_idx;
    pae->name = iiimcf_duplicate_string(aux_name);
    if (!pae->name) goto memory_error;

    /* integer value */
    if (num_intvals > 0) {
       IIIMP_card32 *pc32;

       pc32 = (IIIMP_card32*) malloc(sizeof(*pc32) * num_intvals);
       if (!pc32) goto memory_error;
       memcpy(pc32, pintvals, sizeof(*pc32) * num_intvals);
       pae->pintvals = pc32;
       pae->num_intvals = num_intvals;
    }
    /* string value */
    if (num_strvals > 0) {
       int i;
       IIIMP_card16 **ppu16;

       ppu16 = (IIIMP_card16**) malloc(sizeof(*ppu16) * num_strvals);
       if (!ppu16) goto memory_error;
       pae->pstrs = ppu16;
       pae->num_strvals = num_strvals;
       memset(ppu16, 0, sizeof(*ppu16) * num_strvals);
       for (i = 0; i < num_strvals; i++) {
           *ppu16 = iiimcf_duplicate_string(*pstrs);
           if (!*ppu16) goto memory_error;
           ppu16++;
           pstrs++;
       }
    }

    *pevent = pe;

    return IIIMF_STATUS_SUCCESS;

memory_error:
    iiimcf_delete_aux_event(pe);
    free(pe);
    return IIIMF_STATUS_MALLOC;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 366 of file context.c.

{
    IIIMF_status st;
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;
    IIIMCF_context_rec *pc;
    IIIMP_message *pmes = NULL;
    int auto_trigger_notify_flag;

    st = iiimcf_attr_get_integer_value(attr,
                                   IIIMCF_ATTR_DISABLE_AUTOMATIC_TRIGGER_NOTIFY,
                                   &auto_trigger_notify_flag);
    if (st == IIIMF_STATUS_NO_ATTR_VALUE) {
       auto_trigger_notify_flag = 1;
    } else if (st == IIIMF_STATUS_SUCCESS) {
       auto_trigger_notify_flag = !auto_trigger_notify_flag;
    } else {
       return st;
    }

    pc = (IIIMCF_context_rec*) malloc(sizeof(*pc));
    if (!pc) {
       iiimp_message_delete(ph->data_s, pmes);
       return IIIMF_STATUS_MALLOC;
    }
    memset(pc, 0, sizeof(*pc));
    pc->ph = ph;
    pc->ic_id = -1;
    st = create_icattribute(pc, attr);
    if (st != IIIMF_STATUS_SUCCESS) {
       free(pc);
       return st;
    }
    st = iiimcf_enable_context(pc);
    if (st != IIIMF_STATUS_SUCCESS) {
       free_icattribute(pc);
       free(pc);
       return st;
    }

    if (auto_trigger_notify_flag)
       IIIMCF_SET_STATE(pc, IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY);
    else
       IIIMCF_RESET_STATE(pc, IIIMCF_CONTEXT_AUTOMATIC_TRIGGER_NOTIFY);

    *pcontext = pc;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 688 of file iiimcf.c.

{
    IIIMF_status st;
    int disable_automatic_connection_restoration = 0;
    IIIMCF_handle_rec *ph;
    IIIMCF_context_rec **ppc;

    st = iiimcf_attr_get_integer_value(attr, IIIMCF_ATTR_DISABLE_AUTOMATIC_RESTORATION,
                                   &disable_automatic_connection_restoration);
    if ((st != IIIMF_STATUS_SUCCESS)
       && (st != IIIMF_STATUS_NO_ATTR_VALUE)) {
       return st;
    }

    ph = (IIIMCF_handle_rec*) malloc(sizeof(*ph));
    if (!ph) {
       return IIIMF_STATUS_MALLOC;
    }
    memset(ph, 0, sizeof(*ph));
    ph->context_table_size = IIIMCF_DEFAULT_IC_HASH_TABLE_SIZE;
    ppc = (IIIMCF_context_rec**) malloc(sizeof(*ppc) * ph->context_table_size);
    if (!ppc) {
       free(ph);
       return IIIMF_STATUS_MALLOC;
    }
    memset(ppc, 0, sizeof(*ppc) * ph->context_table_size);
    ph->ppcontext_table = ppc;
    ph->im_id = -1;

    /* When not received IM_PROTOCOL_VERSION,
       we assume the server supports protocol version 2.  */
    ph->server_protocol_version = 2;

    INIT_SYNC_OBJECT(ph->so);
    if (disable_automatic_connection_restoration)
       ph->disable_automatic_connection_restoration = 1;
    else
       ph->disable_automatic_connection_restoration = 0;

    st = iiimcf_create_client_env(attr, &ph->penv);
    if (st != IIIMF_STATUS_SUCCESS) {
       DESTROY_SYNC_OBJECT(ph->so);
       free(ppc);
       free(ph);
       return st;
    }

    st = iiimcf_register_predefined_components(ph);
    if (st != IIIMF_STATUS_SUCCESS) {
       iiimcf_delete_client_env(ph->penv);
       DESTROY_SYNC_OBJECT(ph->so);
       free(ppc);
       free(ph);
       return st;
    }
    
    st = iiimcf_connect(ph);
    if (st != IIIMF_STATUS_SUCCESS) {
        iiimcf_destroy_handle(ph);
        return st;
    }

    *phandle = ph;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 225 of file trigger.c.

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_create_keyevent ( const IIIMCF_keyevent pkeyevent,
IIIMCF_event pevent 
)

Definition at line 345 of file event.c.

{
    IIIMCF_event_rec *pe;

    pe = iiimcf_make_event(IIIMCF_EVENT_TYPE_KEYEVENT);
    if (!pe) return IIIMF_STATUS_MALLOC;

    pe->v.keyevent = *pkeyevent;

    *pevent = pe;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 446 of file event.c.

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 204 of file trigger.c.

{
    IIIMCF_event_rec *pe;

    pe = iiimcf_make_event(IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY);
    if (!pe) return IIIMF_STATUS_MALLOC;

    if (flag)
       pe->v.number = 1;
    else
       pe->v.number = 0;

    *pevent = pe;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 477 of file event.c.

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 36 of file attr.c.

{
    IIIMCF_attr_rec *pa = (IIIMCF_attr_rec*) attr;

    if (pa->pslots) free(pa->pslots);
    free(pa);
    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

Definition at line 477 of file context.c.

{
    IIIMF_status st1, st2;
    IIIMCF_context_rec *pc = (IIIMCF_context_rec*) context;
    IIIMCF_handle_rec *ph = pc->ph;

    st2 = IIIMF_STATUS_SUCCESS;
    if (IIIMCF_IS_CONNECTED(ph)
       && (!IIIMCF_IS_IC_INVALID(pc))) {
       IIIMP_message *pmes;

       pmes = iiimp_destroyic_new(ph->data_s, ph->im_id, pc->ic_id);
       if (pmes) {
           st1 = iiimcf_request_message(ph, pmes, pc, IM_DESTROYIC_REPLY, NULL);
           if (st1 != IIIMF_STATUS_SUCCESS) {
              st2 = st1;
           }
       } else {
           st2 = IIIMF_STATUS_MALLOC;
       }
    }

    /* Broadcast to all components that pc is now being destroyed.  */
    {
       IIIMCF_event_rec *pe;

       pe = iiimcf_make_event(IIIMCF_EVENT_TYPE_DESTROY);
       if (pe) {
           st1 = iiimcf_broadcast_event(pc, pe);
           if (st1 != IIIMF_STATUS_SUCCESS) st2 = st1;
       } else {
           st2 = IIIMF_STATUS_MALLOC;
       }
    }

    if (IIIMCF_IS_IC_INVALID(pc))
       return IIIMF_STATUS_SUCCESS;

    remove_context(pc);
    iiimcf_delete_event_storage(pc);
    iiimcf_delete_all_aux_data(pc);
    iiimcf_destruct_text(&pc->preedit_text);
    iiimcf_destruct_text(&pc->status_text);
    iiimcf_destruct_text(&pc->committed_text);
    iiimcf_destruct_lookup_choice(&pc->lookup_choice);
    free_icattribute(pc);
    if (pc->attr) iiimcf_destroy_attr(pc->attr);

    free(pc);

    return st2;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 759 of file iiimcf.c.

{
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;
    int i,j;

    iiimcf_disconnect(ph);
    iiimcf_unregister_langs(ph->num_langs, ph->pplangs);
    iiimcf_unregister_input_method_list(ph->num_input_methods,
                                   ph->ppinput_methods);
    /* must be before iiimcf_delete_client_env */
    if (ph->pstream)  iiimcf_delete_stream(ph);
    iiimcf_delete_client_env(ph->penv);
    iiimcf_delete_all_components(ph);
    iiimcf_delete_all_downloaded_objects(ph);
    free_object_descriptor(ph->pobjdesc, ph->object_descriptor_size);
    if (ph->pon_keys) free(ph->pon_keys);
    if (ph->poff_keys) free(ph->poff_keys);

    if (ph->phk_profile) {
       for (i=0; i < ph->num_of_hkprofiles; ++i) {
           if (ph->phk_profile[i].phot_keys) {
              for (j=0; j < ph->phk_profile[i].num_hotkeys; ++j) {
                  if (ph->phk_profile[i].phot_keys[j].keys) free(ph->phk_profile[i].phot_keys[j].keys);
              }
              free(ph->phk_profile[i].phot_keys);
           }
       }
        free(ph->phk_profile);
    }
    if (ph->data_s) iiimp_data_s_delete(ph->data_s);
    free(ph->ppcontext_table);
    DESTROY_SYNC_OBJECT(ph->so);
    free(ph);
    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 149 of file text.c.

{
    IIIMF_status st;
    IIIMCF_text_rec *pt = (IIIMCF_text_rec*) text;

    st = iiimcf_destruct_text(pt);
    free(pt);
    return st;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 591 of file event.c.

{
    IIIMF_status st1, st2;
    IIIMCF_context_rec *pc = (IIIMCF_context_rec*) context;
    IIIMCF_event_rec *pe = (IIIMCF_event_rec*) event;
    IIIMCF_component_rec *pcom, *pcom_parent;

    /* When broadcasting event, event dispatchment
       must be inhibited because if we allow it, a component
       may receive the same broadcasting event more than once.
       Eventually, we return immediately with success.  */
    if (IIIMCF_IS_BROADCASTING(pc)) {
       if (IIIMCF_EVENT_IS_DISCARDABLE(pe)) delete_event(pe);
       return IIIMF_STATUS_SUCCESS;
    }

    pcom_parent = pc->pcurrent_component;
    if (pcom_parent) pcom = pcom_parent->pchild;
    else pcom = pc->ph->proot_component;

    IIIMCF_EVENT_SET_STATE(pe, IIIMCF_EVENT_STATE_DISPATCHING);

    st2 = IIIMF_STATUS_COMPONENT_INDIFFERENT;
    for (; pcom; pcom = pcom->pnext) {
       pc->pcurrent_component = pcom;
       st1 = (*pcom->func)(pc, pe, pcom, pcom_parent);
       if (st1 == IIIMF_STATUS_SUCCESS) {
           if (st2 == IIIMF_STATUS_COMPONENT_INDIFFERENT) {
              st2 = IIIMF_STATUS_SUCCESS;
           }
       } else if (st1 == IIIMF_STATUS_COMPONENT_FAIL) {
           st2 = st1;
       } else if (st1 != IIIMF_STATUS_COMPONENT_INDIFFERENT) {
           /* fatal error.  immediately quit.*/
           st2 = st1;
           break;
       }
    }
    pc->pcurrent_component = pcom_parent;

    IIIMCF_EVENT_RESET_STATE(pe, IIIMCF_EVENT_STATE_DISPATCHING);

    if (IIIMCF_EVENT_IS_DISCARDABLE(pe)) delete_event(pe);

    return st2;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 127 of file text.c.

{
    IIIMCF_text_rec *ptdup;
    IIIMCF_text_rec *pt = (IIIMCF_text_rec*) src;

    ptdup = (IIIMCF_text_rec*) malloc(sizeof(*ptdup));
    if (!ptdup) return IIIMF_STATUS_MALLOC;
    memset(ptdup, 0, sizeof(*ptdup));
    ptdup->pv_mtext = EIMIL_copy_value(pt->pv_mtext);
    if (!ptdup->pv_mtext) {
       free(ptdup);
       return IIIMF_STATUS_MALLOC;
    }

    *pduplicated = ptdup;
    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 817 of file iiimcf.c.

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_get_aux_draw_data ( IIIMCF_context  context,
const IIIMP_card16 aux_name,
IIIMP_card32  class_idx,
int *  pnum_intvals,
const IIIMP_card32 **  ppintvals,
int *  pnum_strvals,
const IIIMP_card16 ***  ppstrs 
)

Definition at line 516 of file aux.c.

{
    IIIMCF_aux_rec *pa;
    IIIMCF_context_rec *pc = (IIIMCF_context_rec*) context;
    int len;

    if (IIIMCF_IS_IC_INVALID(pc)) return IIIMF_STATUS_IC_INVALID;
    len = iiimcf_string_length(aux_name);
    pa = find_aux_rec(pc, len, aux_name, class_idx);
    if ((!pa) || (!pa->mode))
       return IIIMF_STATUS_NO_AUX;

    if (pnum_intvals) *pnum_intvals = pa->num_intvals;
    if (ppintvals) *ppintvals = pa->pintvals;
    if (pnum_strvals) *pnum_strvals = pa->num_strvals;
    if (ppstrs) *ppstrs = (const IIIMP_card16**) pa->pstrs;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

IIIMF_status iiimcf_get_aux_event_value ( IIIMCF_event  event,
const IIIMP_card16 **  paux_name,
IIIMP_card32 pclass_idx,
int *  pnum_intvals,
const IIIMP_card32 **  ppintvals,
int *  pnum_strvals,
const IIIMP_card16 ***  ppstrs 
)

Definition at line 673 of file aux.c.

{
    IIIMCF_event_rec *pe = (IIIMCF_event_rec*) event;
    IIIMCF_auxevent *pae;

    if (!((pe->type > IIIMCF_EVENT_TYPE_AUX)
         || (pe->type < IIIMCF_EVENT_TYPE_AUX_END))) {
       return IIIMF_STATUS_ARGUMENT;
    }

    pae = pe->v.pauxevent;
    if (paux_name) *paux_name = pae->name;
    if (pclass_idx) *pclass_idx = pae->index;
    if (pnum_intvals) *pnum_intvals = pae->num_intvals;
    if (ppintvals) *ppintvals = pae->pintvals;
    if (pnum_strvals) *pnum_strvals = pae->num_strvals;
    if (ppstrs) *ppstrs = (const IIIMP_card16**) pae->pstrs;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_char_with_feedback ( IIIMCF_text  text,
int  pos,
IIIMP_card16 pch,
int *  pnum_feedbacks,
const IIIMP_card32 **  pfeedback_id,
const IIIMP_card32 **  pfeedback 
)

Definition at line 65 of file text.c.

{
    int npos;
    IIIMCF_text_rec *pt = (IIIMCF_text_rec*) text;
    EIMIL_mtext *pm = &pt->pv_mtext->v.mtext;
    EIMIL_value *pv;

    UPDATE_TEXT(pt);
    if ((pos < 0) || (pos >= pt->len)) return IIIMF_STATUS_FAIL;
    *pch = pt->pu16[pos];

    npos = EIMIL_adjust_UTF16_pos_to_UTF32(pos, pm->ustr,
                                      pm->ustr + pm->len);
    if (npos < 0) return IIIMF_STATUS_FAIL;

    *pfeedback_id = pt->pfeedback_ids;
    *pfeedback = pt->pfeedbacks;
    pv = EIMIL_get_prop_from_mtext(pm, pEIMIL_feedback_sym, npos);
    if (pv && (pv->v.prop.size > 0)) {
       int i, j, n;
       EIMIL_value **ppv = pv->v.prop.pvals;

       ASSERT(pv->type == EIMIL_TYPE_PROP);
       n = pv->v.prop.size / 2;
       if (n > IIIMCF_MAX_FEEDBACK_NUM) n = IIIMCF_MAX_FEEDBACK_NUM;
       for (i = 0, j = 0; i < n; ) {
           pv = ppv[j++];
           if (pv->type != EIMIL_TYPE_NUMBER) return IIIMF_STATUS_FAIL;
           pt->pfeedback_ids[i] = pv->v.number;
           pv = ppv[j++];
           if (pv->type != EIMIL_TYPE_NUMBER) return IIIMF_STATUS_FAIL;
           pt->pfeedbacks[i] = pv->v.number;
           i++;
       }
       *pnum_feedbacks = n;
    } else {
       *pnum_feedbacks = 0;
    }

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 38 of file commit.c.

Here is the caller graph for this function:

IIIMF_status iiimcf_get_component ( IIIMCF_handle  handle,
const char *  name,
IIIMCF_component pcomponent 
)

Definition at line 377 of file component.c.

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 255 of file trigger.c.

{
    IIIMCF_context_rec *pc = (IIIMCF_context_rec*) context;

    if (IIIMCF_IS_ENABLED(pc, IIIMCF_CONTEXT_CONVERSION_MODE)) {
       *pflag = 1;
    } else {
       *pflag = 0;
    }

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

Definition at line 119 of file object.c.

Definition at line 132 of file object.c.

Here is the caller graph for this function:

Definition at line 168 of file object.c.

{
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;
    IIIMF_status st;
    IIIMP_card16 *pattribids;
    IIIMP_imattribute *pimattr;
    IIIMCF_downloaded_object_rec *po;
    IIIMP_message *pmes;
    int i;

    pattribids = (IIIMP_card16*) malloc(sizeof(*pattribids) * num_objs);
    if (!pattribids) return IIIMF_STATUS_MALLOC;

    for (i = 0; i < num_objs; i++) {
       pattribids[i] = ppdesc[i]->dynamic_id;
    }

    st = get_imvalues(ph, num_objs, pattribids, &pmes);
    free(pattribids);
    if (st != IIIMF_STATUS_SUCCESS) return st;

    st = IIIMF_STATUS_SUCCESS;
    pimattr = pmes->v.getimvalues_reply.attr_list;
    for (i = 0; i < num_objs; i++) {
       if (!pimattr) {
           st = IIIMF_STATUS_FAIL;
           break;
       }
       if (pimattr->id_dyn !=  ppdesc[i]->dynamic_id) {
           st = IIIMF_STATUS_FAIL;
           break;
       }
       ASSERT(pimattr->id_pre == ppdesc[i]->predefined_id);
       po = register_downloaded_object(ph, ppdesc[i], pimattr);
       if (!po) {
           st = IIIMF_STATUS_MALLOC;
           break;
       }
       pobjs[i] = (IIIMCF_downloaded_object) po;
       pimattr = pimattr->next;
    }

    iiimp_message_delete(ph->data_s, pmes);
    return st;
}

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_get_event_type ( IIIMCF_event  event,
IIIMCF_event_type *  pevent_type 
)

Definition at line 333 of file event.c.

{
    IIIMCF_event_rec *pe = (IIIMCF_event_rec*) event;
 
   *pevent_type = pe->type;
    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_ic_id ( IIIMCF_context  context,
int *  pic_id 
)

Definition at line 586 of file context.c.

{
    IIIMCF_context_rec *pc = (IIIMCF_context_rec*) context;

    if (!pc) {
       *pic_id = -1;
       return IIIMF_STATUS_IC_INVALID;
    }

    *pic_id = pc->ic_id;

    if (pc->ic_id < 0)
       return IIIMF_STATUS_IC_INVALID;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_im_id ( IIIMCF_handle  handle,
int *  pim_id 
)

Definition at line 954 of file iiimcf.c.

{
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;

    if (!ph) {
       *pim_id = -1;
       return IIIMF_STATUS_IM_INVALID;
    }

    *pim_id = ph->im_id;

    if (ph->im_id < 0)
       return IIIMF_STATUS_IM_INVALID;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_input_method_desc ( IIIMCF_input_method  input_method,
const IIIMP_card16 **  pinput_method_idname,
const IIIMP_card16 **  pinput_method_hrn,
const IIIMP_card16 **  pinput_method_domain 
)

Definition at line 265 of file input-method.c.

{
    IIIMCF_input_method_rec *pi = (IIIMCF_input_method_rec*) input_method;

    if (pinput_method_idname) *pinput_method_idname = pi->imname;
    if (pinput_method_hrn) *pinput_method_hrn = pi->hrn;
    if (pinput_method_domain) *pinput_method_domain = pi->domain;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_input_method_imeinfos ( IIIMCF_input_method  input_method,
int *  pinput_method_imeinfo_size,
const IIIMCF_imeinfo_rec ***  ppimeinfos 
)

Definition at line 313 of file input-method.c.

{
    IIIMCF_input_method_rec *pi = (IIIMCF_input_method_rec*) input_method;

    if (pinput_method_imeinfo_size)
        *pinput_method_imeinfo_size = pi->num_imeinfos;
    if (ppimeinfos)
        *ppimeinfos = pi->ppimeinfos;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_input_method_languages ( IIIMCF_input_method  input_method,
int *  pinput_method_language_size,
IIIMCF_language **  pplanguages 
)

Definition at line 282 of file input-method.c.

{
    IIIMCF_input_method_rec *pi = (IIIMCF_input_method_rec*) input_method;

    if (pinput_method_language_size)
       *pinput_method_language_size = pi->num_langs;
    if (pplanguages)
       *pplanguages = pi->pplangs;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

Definition at line 363 of file event.c.

{
    IIIMCF_event_rec *pe = (IIIMCF_event_rec*) event;
    if (pe->type != IIIMCF_EVENT_TYPE_KEYEVENT)
       return IIIMF_STATUS_ARGUMENT;

    *pkeyevent = pe->v.keyevent;
    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_language_id ( IIIMCF_language  lang,
const char **  plangid 
)

Definition at line 904 of file iiimcf.c.

{
    IIIMCF_language_rec *pl = (IIIMCF_language_rec*) lang;

    *plangid = pl->lang_id;
    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

Definition at line 276 of file lookup_choice.c.

Here is the caller graph for this function:

IIIMF_status iiimcf_get_lookup_choice_configuration ( IIIMCF_lookup_choice  lookup_choice,
int *  pchoices_per_window,
int *  pnumber_of_rows,
int *  pnumber_of_columns,
int *  pdirection 
)

Definition at line 222 of file lookup_choice.c.

{
    IIIMCF_lookup_choice_rec *pl = (IIIMCF_lookup_choice_rec*) lookup_choice;

    *pchoices_per_window = pl->choices_per_window;
    *pnumber_of_rows = pl->rows;
    *pnumber_of_columns = pl->cols;
    *pdirection = pl->direction;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_lookup_choice_item ( IIIMCF_lookup_choice  lookup_choice,
int  idx,
IIIMCF_text pcandidate,
IIIMCF_text plabel,
int *  pflag 
)

Definition at line 241 of file lookup_choice.c.

{
    IIIMCF_lookup_choice_rec *pl = (IIIMCF_lookup_choice_rec*) lookup_choice;

    if (idx < 0) return IIIMF_STATUS_ARGUMENT;
    idx += pl->enabled_range_start;
    if (idx >= pl->enabled_range_end) return IIIMF_STATUS_ARGUMENT;

    *pcandidate = pl->pcandidates + idx;
    *plabel = pl->plabels + idx;
    *pflag = pl->pflags[idx];

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_lookup_choice_size ( IIIMCF_lookup_choice  lookup_choice,
int *  psize,
int *  pindex_of_first_candidate,
int *  pindex_of_last_candidate,
int *  pindex_of_current_candidate 
)

Definition at line 203 of file lookup_choice.c.

{
    IIIMCF_lookup_choice_rec *pl = (IIIMCF_lookup_choice_rec*) lookup_choice;

    *psize = pl->enabled_range_end - pl->enabled_range_start;
    *pindex_of_first_candidate = pl->idx_first;
    *pindex_of_last_candidate = pl->idx_last;
    *pindex_of_current_candidate = pl->idx_current;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

Definition at line 263 of file lookup_choice.c.

{
    IIIMCF_lookup_choice_rec *pl = (IIIMCF_lookup_choice_rec*) lookup_choice;

    *ptitle = &pl->title;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

Definition at line 642 of file event.c.

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_get_object_descriptor_list ( IIIMCF_handle  handle,
int *  pnum_object_descriptors,
const IIIMCF_object_descriptor **  ppdesc 
)

Definition at line 939 of file iiimcf.c.

{
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;

    *pnum_object_descriptors = ph->object_descriptor_size;
    *ppdesc = ph->pobjdesc;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_preedit_text ( IIIMCF_context  context,
IIIMCF_text ptext,
int *  pcaret_position 
)

Definition at line 58 of file preedit.c.

Here is the caller graph for this function:

Definition at line 56 of file status.c.

Here is the caller graph for this function:

IIIMF_status iiimcf_get_supported_input_methods ( IIIMCF_handle  handle,
int *  pnum_input_methods,
IIIMCF_input_method **  ppinput_methods 
)

Definition at line 249 of file input-method.c.

{

    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;

    if (ppinput_methods) *ppinput_methods = ph->ppinput_methods;
    if (pnum_input_methods) *pnum_input_methods = ph->num_input_methods;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_supported_languages ( IIIMCF_handle  handle,
int *  pnum_langs,
IIIMCF_language **  pplangs 
)

Definition at line 889 of file iiimcf.c.

{
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;

    *pnum_langs = ph->num_langs;
    *pplangs = (IIIMCF_language*) ph->pplangs;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_text_length ( IIIMCF_text  text,
int *  plen 
)

Definition at line 48 of file text.c.

{
    IIIMF_status st;
    IIIMCF_text_rec *pt = (IIIMCF_text_rec*) text;

    st = UPDATE_TEXT(pt);
    if (st != IIIMF_STATUS_SUCCESS) return st;

    *plen = pt->len;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

Definition at line 31 of file text.c.

{
    IIIMF_status st;
    IIIMCF_text_rec *pt = (IIIMCF_text_rec*) text;

    st = UPDATE_TEXT(pt);
    if (st != IIIMF_STATUS_SUCCESS) return st;

    *putf16str = pt->pu16;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_trigger_keys ( IIIMCF_handle  handle,
int *  pnum_on_keys,
const IIIMCF_keyevent **  pponkeys,
int *  pnum_off_keys,
const IIIMCF_keyevent **  ppoffkeys 
)

Definition at line 916 of file iiimcf.c.

{
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;

    if ((ph->num_on_keys == 0)
       && (ph->num_off_keys == 0))
       return IIIMF_STATUS_STATIC_EVENT_FLOW;

    *pnum_on_keys = ph->num_on_keys;
    *pponkeys = ph->pon_keys;
    *pnum_off_keys = ph->num_off_keys;
    *ppoffkeys = ph->poff_keys;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

Definition at line 240 of file trigger.c.

{
    IIIMCF_event_rec *pe = (IIIMCF_event_rec*) event;

    if (pe->type != IIIMCF_EVENT_TYPE_TRIGGER_NOTIFY)
       return IIIMF_STATUS_FAIL;

    *pflag = pe->v.number;
    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

IIIMF_status iiimcf_get_version_number ( IIIMCF_handle  handle,
int  flag,
int *  pversion_number 
)

Definition at line 829 of file iiimcf.c.

{
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;

    if (flag & ~IIIMCF_VERSION_FLAGS_MASK) {
       return IIIMF_STATUS_ARGUMENT;
    }
    if (flag & IIIMCF_LIBRARY_VERSION) {
       if ((flag & ~IIIMCF_VERSION_FLAGS_ITEM_MASK)
           != IIIMCF_LIBRARY_VERSION) {
           return IIIMF_STATUS_ARGUMENT;
       }
       if (flag & IIIMCF_MAJOR_VERSION) {
           if ((flag & ~IIIMCF_VERSION_FLAGS_CATEGORY_MASK)
              != IIIMCF_MAJOR_VERSION) {
              return IIIMF_STATUS_ARGUMENT;
           }
           *pversion_number = LIBIIIMCF_MAJOR_VERSION;
       } else if (flag & IIIMCF_MINOR_VERSION) {
           if ((flag & ~IIIMCF_VERSION_FLAGS_CATEGORY_MASK)
              != IIIMCF_MINOR_VERSION) {
              return IIIMF_STATUS_ARGUMENT;
           }
           *pversion_number = LIBIIIMCF_MINOR_VERSION;
       } else {
           return IIIMF_STATUS_ARGUMENT;
       }
    } else if (flag & IIIMCF_PROTOCOL_VERSION) {
       if ((flag & ~IIIMCF_VERSION_FLAGS_ITEM_MASK)
           != IIIMCF_PROTOCOL_VERSION) {
           return IIIMF_STATUS_ARGUMENT;
       }
       if (flag & IIIMCF_MAJOR_VERSION) {
           if ((flag & ~IIIMCF_VERSION_FLAGS_CATEGORY_MASK)
              != IIIMCF_MAJOR_VERSION) {
              return IIIMF_STATUS_ARGUMENT;
           }
           *pversion_number = iiimp_data_s_get_protocol_version(ph->data_s);
       } else if (flag & IIIMCF_MINOR_VERSION) {
           if ((flag & ~IIIMCF_VERSION_FLAGS_CATEGORY_MASK)
              != IIIMCF_MINOR_VERSION) {
              return IIIMF_STATUS_ARGUMENT;
           }
           /* Now IM_CONNECT has no minor version */
           *pversion_number = 0;
       } else {
           return IIIMF_STATUS_ARGUMENT;
       }
    } else {
       return IIIMF_STATUS_ARGUMENT;
    }

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 677 of file event.c.

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 804 of file iiimcf.c.

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_is_capability_supported ( IIIMCF_handle  handle,
int  capability 
)

Definition at line 330 of file input-method.c.

{
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;

    if (0 != iiimp_data_s_capability(ph->data_s, capability)) {
       return IIIMF_STATUS_SUCCESS;
    } else {
       return IIIMF_STATUS_FAIL;
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_is_UIstate_changed ( IIIMCF_context  context,
int *  pflag 
)

Definition at line 533 of file context.c.

Here is the caller graph for this function:

Definition at line 660 of file event.c.

Here is the call graph for this function:

IIIMF_status iiimcf_register_component ( IIIMCF_handle  handle,
const char *  name,
IIIMCF_component_interface  interface,
IIIMCF_component  parent,
IIIMCF_component pcomp 
)

Definition at line 300 of file component.c.

{
    IIIMCF_handle_rec *ph = (IIIMCF_handle_rec*) handle;
    IIIMCF_component_rec *pcom_parent = (IIIMCF_component_rec*) parent;
    IIIMCF_component_rec *pc;

    pc = lookup_component(name, ph->proot_component);
    if (pc) return IIIMF_STATUS_COMPONENT_DUPLICATED_NAME;

    pc = (IIIMCF_component_rec*) malloc(sizeof(*pc));
    if (!pc) return IIIMF_STATUS_MALLOC;
    memset(pc, 0, sizeof(*pc));
    pc->name = strdup(name);
    if (!pc->name) {
       free(pc);
       return IIIMF_STATUS_MALLOC;
    }

    pc->ph = ph;
    pc->func = interface;
    pc->pparent = pcom_parent;
    if (pcom_parent) {
       pc->pnext = pcom_parent->pchild;
       pcom_parent->pchild = pc;
    } else {
       pc->pnext = ph->proot_component;
       ph->proot_component = pc;
    }
    if (pc->pnext) {
       pc->pnext->pprev = pc;
    }

    *pcomp = pc;

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 564 of file context.c.

{
    IIIMF_status st1, st2;
    IIIMCF_context_rec *pc = (IIIMCF_context_rec*) context;
    IIIMCF_handle_rec *ph = pc->ph;
    IIIMP_data_s *pds = ph->data_s;
    IIIMP_message *pmes;

    pmes = iiimp_resetic_new(pds, ph->im_id, pc->ic_id);
    if (!pmes) return IIIMF_STATUS_MALLOC;
    st1 = iiimcf_request_message(ph, pmes, pc, IM_RESETIC_REPLY, NULL);
    /* Even if requesting IM_RESETIC is fail,
       reset the internal state.  */
    st2 = reset_context(pc, 1);

    if (st1 != IIIMF_STATUS_SUCCESS) return st1;
    return st2;
}

Here is the call graph for this function:

Here is the caller graph for this function:

IIIMF_status iiimcf_set_input_method_name ( IIIMCF_input_method  input_method,
const IIIMP_card16 input_method_name 
)

Definition at line 299 of file input-method.c.

{
    IIIMCF_input_method_rec *pi = (IIIMCF_input_method_rec*) input_method;

    if (pi->imname) free (pi->imname);
    pi->imname = input_method_name;

    return IIIMF_STATUS_SUCCESS;
}

Here is the caller graph for this function:

Definition at line 344 of file component.c.

{
    IIIMCF_component_rec *pc = (IIIMCF_component_rec*) component;
    IIIMCF_component_rec *pc2, *pc3;

    for (pc2 = pc->pchild; pc2; ) {
       pc3 = pc2->pnext;
       if (pc2->pchild) {
           iiimcf_unregister_component(pc2);
       } else {
           free(pc2->name);
           if (pc2->attr) iiimcf_destroy_attr(pc2->attr);
           free(pc2);
       }
       pc2 = pc3;
    }
    if (pc->attr) iiimcf_destroy_attr(pc->attr);
    if (pc->pprev) {
       pc->pprev->pnext = pc->pnext;
    }
    if (pc->pnext) {
       pc->pnext->pprev = pc->pprev;
    }

    free(pc->name);
    free(pc);

    return IIIMF_STATUS_SUCCESS;
}

Here is the call graph for this function:

Here is the caller graph for this function: