#include #include #include "print-misc.h" typedef struct { int id; char * string; } id_string_pair; static id_string_pair opcode_string[] = { {0, "IM_NOP (0)"}, {IM_CONNECT, "IM_CONNECT"}, {IM_CONNECT_REPLY, "IM_CONNECT_REPLY"}, {IM_DISCONNECT, "IM_DISCONNECT"}, {IM_DISCONNECT_REPLY , "IM_DISCONNECT_REPLY"}, {IM_REGISTER_TRIGGER_KEYS, "IM_REGISTER_TRIGGER_KEYS"}, {IM_TRIGGER_NOTIFY, "IM_TRIGGER_NOTIFY"}, {IM_TRIGGER_NOTIFY_REPLY, "IM_TRIGGER_NOTIFY_REPLY"}, {IM_SETIMVALUES, "IM_SETIMVALUES"}, {IM_SETIMVALUES_REPLY, "IM_SETIMVALUES_REPLY"}, {IM_GETIMVALUES, "IM_GETIMVALUES"}, {IM_GETIMVALUES_REPLY, "IM_GETIMVALUES_REPLY"}, {IM_FORWARD_EVENT, "IM_FORWARD_EVENT"}, {IM_FORWARD_EVENT_REPLY, "IM_FORWARD_EVENT_REPLY"}, {IM_COMMIT_STRING, "IM_COMMIT_STRING"}, {IM_FORWARD_EVENT_WITH_OPERATIONS, "IM_FORWARD_EVENT_WITH_OPERATIONS"}, {IM_FORWARD_EVENT_WITH_OPERATIONS_REPLY, "IM_FORWARD_EVENT_WITH_OPERATIONS_REPLY"}, {IM_REGISTER_HOTKEYS, "IM_REGISTER_HOTKEYS"}, {IM_HOTKEY_NOTIFY, "IM_HOTKEY_NOTIFY"}, {IM_HOTKEY_NOTIFY_REPLY, "IM_HOTKEY_NOTIFY_REPLY"}, {IM_CREATEIC, "IM_CREATEIC"}, {IM_CREATEIC_REPLY, "IM_CREATEIC_REPLY"}, {IM_DESTROYIC, "IM_DESTROYIC"}, {IM_DESTROYIC_REPLY, "IM_DESTROYIC_REPLY"}, {IM_SETICVALUES, "IM_SETICVALUES"}, {IM_SETICVALUES_REPLY, "IM_SETICVALUES_REPLY"}, {IM_GETICVALUES, "IM_GETICVALUES"}, {IM_GETICVALUES_REPLY, "IM_GETICVALUES_REPLY"}, {IM_SETICFOCUS, "IM_SETICFOCUS"}, {IM_SETICFOCUS_REPLY, "IM_SETICFOCUS_REPLY"}, {IM_UNSETICFOCUS, "IM_UNSETICFOCUS"}, {IM_UNSETICFOCUS_REPLY, "IM_UNSETICFOCUS_REPLY"}, {IM_RESETIC, "IM_RESETIC"}, {IM_RESETIC_REPLY, "IM_RESETIC_REPLY"}, {IM_HOTKEY_STATE_NOTIFY, "IM_HOTKEY_STATE_NOTIFY"}, {IM_HOTKEY_STATE_NOTIFY_REPLY, "IM_HOTKEY_STATE_NOTIFY_REPLY"}, {IM_SELECT_HOTKEY_PROFILE, "IM_SELECT_HOTKEY_PROFILE"}, {37, "IM_NOP (37)"}, {38, "IM_NOP (38)"}, {39, "IM_NOP (39)"}, {IM_PREEDIT_START, "IM_PREEDIT_START"}, {IM_PREEDIT_START_REPLY, "IM_PREEDIT_START_REPLY"}, {IM_PREEDIT_DRAW, "IM_PREEDIT_DRAW"}, {IM_PREEDIT_DRAW_REPLY, "IM_PREEDIT_DRAW_REPLY"}, {44, "IM_NOP (44)"}, {45, "IM_NOP (45)"}, {IM_PREEDIT_DONE, "IM_PREEDIT_DONE"}, {IM_PREEDIT_DONE_REPLY, "IM_PREEDIT_DONE_REPLY"}, {48, "IM_NOP (48)"}, {49, "IM_NOP (49)"}, {IM_STATUS_START, "IM_STATUS_START"}, {IM_STATUS_START_REPLY, "IM_STATUS_START_REPLY"}, {IM_STATUS_DRAW, "IM_STATUS_DRAW"}, {IM_STATUS_DRAW_REPLY, "IM_STATUS_DRAW_REPLY"}, {IM_STATUS_DONE, "IM_STATUS_DONE"}, {IM_STATUS_DONE_REPLY, "IM_STATUS_DONE_REPLY"}, {56, "IM_NOP (56)"}, {57, "IM_NOP (57)"}, {58, "IM_NOP (58)"}, {59, "IM_NOP (59)"}, {60, "IM_NOP (60)"}, {61, "IM_NOP (61)"}, {62, "IM_NOP (62)"}, {63, "IM_NOP (63)"}, {64, "IM_NOP (64)"}, {65, "IM_NOP (65)"}, {66, "IM_NOP (66)"}, {67, "IM_NOP (67)"}, {68, "IM_NOP (68)"}, {69, "IM_NOP (69)"}, {IM_LOOKUP_CHOICE_START, "IM_LOOKUP_CHOICE_START"}, {IM_LOOKUP_CHOICE_START_REPLY, "IM_LOOKUP_CHOICE_START_REPLY"}, {IM_LOOKUP_CHOICE_DRAW, "IM_LOOKUP_CHOICE_DRAW"}, {IM_LOOKUP_CHOICE_DRAW_REPLY, "IM_LOOKUP_CHOICE_DRAW_REPLY"}, {IM_LOOKUP_CHOICE_DONE, "IM_LOOKUP_CHOICE_DONE"}, {IM_LOOKUP_CHOICE_DONE_REPLY, "IM_LOOKUP_CHOICE_DONE_REPLY"}, {IM_LOOKUP_CHOICE_PROCESS, "IM_LOOKUP_CHOICE_PROCESS"}, {IM_LOOKUP_CHOICE_PROCESS_REPLY,"IM_LOOKUP_CHOICE_PROCESS_REPLY"}, {78, "IM_NOP (78)"}, {79, "IM_NOP (79)"}, {80, "IM_NOP (80)"}, {81, "IM_NOP (81)"}, {82, "IM_NOP (82)"}, {83, "IM_NOP (83)"}, {84, "IM_NOP (84)"}, {85, "IM_NOP (85)"}, {86, "IM_NOP (86)"}, {87, "IM_NOP (87)"}, {88, "IM_NOP (88)"}, {89, "IM_NOP (89)"}, {IM_AUX_START, "IM_AUX_START"}, {IM_AUX_START_REPLY, "IM_AUX_START_REPLY"}, {IM_AUX_DRAW, "IM_AUX_DRAW"}, {IM_AUX_DRAW_REPLY, "IM_AUX_DRAW_REPLY"}, {IM_AUX_DONE, "IM_AUX_DONE"}, {IM_AUX_DONE_REPLY, "IM_AUX_DONE_REPLY"}, {IM_AUX_SETVALUES, "IM_AUX_SETVALUES"}, {IM_AUX_SETVALUES_REPLY, "IM_AUX_SETVALUES_REPLY"}, {IM_AUX_GETVALUES, "IM_AUX_GETVALUES"}, {IM_AUX_GETVALUES_REPLY, "IM_AUX_GETVALUES_REPLY"}, {IM_PROTOCOL_VERSION, "IM_PROTOCOL_VERSION (100)"}, {IM_FILE_OPERATION, "IM_FILE_OPERATION"}, {IM_FILE_OPERATION_REPLY, "IM_FILE_OPERATION_REPLY"}, {103, "IM_NOP (103)"}, {104, "IM_NOP (104)"}, {105, "IM_NOP (105)"}, {106, "IM_NOP (106)"}, {107, "IM_NOP (107)"}, {108, "IM_NOP (108)"}, {109, "IM_NOP (109)"}, {110, "IM_NOP (110)"}, {111, "IM_NOP (111)"}, {112, "IM_NOP (112)"}, {113, "IM_NOP (113)"}, {114, "IM_NOP (114)"}, {115, "IM_NOP (115)"}, {116, "IM_NOP (116)"}, {117, "IM_NOP (117)"}, {118, "IM_NOP (118)"}, {119, "IM_NOP (119)"}, {120, "IM_NOP (120)"}, {121, "IM_NOP (121)"}, {122, "IM_NOP (122)"}, {123, "IM_NOP (123)"}, {124, "IM_NOP (124)"}, {125, "IM_NOP (125)"}, {126, "IM_NOP (126)"}, {127, "IM_NOP (127)"}, }; #define FEEDBACK_NUM (3) static char * feedback_string[] = { "Normal", "Reverse", "Underline", "Undefined" }; #define OBJECT_DESCRIPTOR_CATEGORY_NUM (5) static char * object_descriptor_category_string[] = { "GUI", "LWE", "Syntax Rule", "IM Manager rule", "Preloading LWE", "unknown" }; static id_string_pair annotation_id_string[] = { {IIIMP_ANNOTATION_TEXT_INPUT_BEFORE_CONVERSION, "text input before conversion"}, {IIIMP_ANNOTATION_READING_OF_THE_TEXT, "reading of the text"}, {IIIMP_ANNOTATION_TYPE_OF_SPEECH, "type of speech"}, {IIIMP_ANNOTATION_TYPE_OF_CLAUSE, "type of clause"}, {0x00, "invalid"} }; static id_string_pair imattribute_id_string[] = { {IIIMP_IMATTRIBUTE_INPUT_METHOD_LIST, "Input Method List"}, {IIIMP_IMATTRIBUTE_OBJECT_DESCRIPTOR_LIST, "Object Descriptor List"}, {IIIMP_IMATTRIBUTE_CLIENT_DESCRIPTOR, "Client Descriptor"}, {IIIMP_IMATTRIBUTE_CHARACTER_CONVERSION_DEFINITION_RULE, "Character Conversion Definition Rule"}, {IIIMP_IMATTRIBUTE_JAR_GUI_OBJECT, "Jar GUI Object"}, {IIIMP_IMATTRIBUTE_JAR_LIGHT_WEIGHT_ENGINE_OBJECT, "Jar Light Weight Engine Object"}, {IIIMP_IMATTRIBUTE_BINARY_GUI_OBJECT, "Binary GUI Object"}, {IIIMP_IMATTRIBUTE_BINARY_LIGHT_WEIGHT_ENGINE_OBJECT, "Binary Light Weight Engine Object"}, {IIIMP_IMATTRIBUTE_SCRIPT_GUI_OBJECT, "SCRIPT GUI Object"}, {IIIMP_IMATTRIBUTE_SCRIPT_LIGHT_WEIGHT_ENGINE_OBJECT, "SCRIPT Light Weight Engine Object"}, {0x0000, "undefined"}, }; static id_string_pair icattribute_id_string[] = { {IIIMP_ICATTRIBUTE_INPUT_LANGUAGE, "Input Language"}, {IIIMP_ICATTRIBUTE_CHARACTER_SUBSETS, "Character Subsets"}, {IIIMP_ICATTRIBUTE_INPUT_METHOD_NAME, "Input Method Name"}, {IIIMP_ICATTRIBUTE_INPUT_METHOD, "Input Method"}, {0x00, "undefined"} }; static id_string_pair lookup_choice_master_string[] = { {IM_LOOKUP_CHOICE_START_SERVER_IS_MASTER, "ServerIsMaster"}, {IM_LOOKUP_CHOICE_START_CLIENT_IS_MASTER, "ClientIsMaster"}, {IM_LOOKUP_CHOICE_START_UNKNOWN_IS_MASTER,"UnknownIsMaster"} }; static id_string_pair lookup_choice_direction_string[] = { {IM_LOOKUP_CHOICE_START_DRAWING_UP_HORIZONTALLY, "Horizontal "}, {IM_LOOKUP_CHOICE_START_DRAWING_UP_VERTICALLY, "Vertical "}, {-1, "Unknown "} }; static id_string_pair lookup_choice_label_owner_string[] = { {IM_LOOKUP_CHOICE_START_SERVER_OWNS_LABEL, "ServerOwnsLabel"}, {IM_LOOKUP_CHOICE_START_CLIENT_OWNS_LABEL, "ClientOwnsLabel"}, {-1, "UnknownOwnsLabel"} }; static id_string_pair lookup_choice_process_page_string[] = { {IM_LOOKUP_CHOICE_PROCESS_PAGE_NEXT_PAGE, "NEXT_PAGE"}, {IM_LOOKUP_CHOICE_PROCESS_PAGE_PREV_PAGE, "PREV_PAGE"}, {IM_LOOKUP_CHOICE_PROCESS_PAGE_FIRST_PAGE, "FIRST_PAGE"}, {IM_LOOKUP_CHOICE_PROCESS_PAGE_LAST_PAGE, "LAST_PAGE"}, {0, "NO_PAGE"} }; #define CHARACTER_SUBSETS_STRING_NUM (73) static char * character_subsets_string[] = { "undefined(0)", "BASIC_LATIN", "LATIN_1_SUPPLEMENT", "LATIN_EXTENDED_A", "LATIN_EXTENDED_B", "IPA_EXTENTIONS", "SPACING_MODIFIER_LETTERS", "COMBINING_DIACRITICAL_MARKS", "GREEK", "CYRILLIC", "ARMENIAN", "HEBREW", "ARABIC", "DEVANAGARI", "BENGALI", "GURMUKHI", "GUJARATI", "ORIYA", "TAMIL", "TELUGU", "KANNADA", "MALAYALAM", "THAI", "LAO", "TIBETAN", "GEORGIAN", "HANGUL_JAMO", "LATIN_EXTENDED_ADDITIONAL", "GREEK_EXTENDED", "GENERAL_PUNCTUATION", "SUPERSCRIPTS_AND_SUBSCRIPTS", "CURRENCY_SYMBOLS", "COMBINING_MARKS_FOR_SYMBOLS", "LETTERLIKE_SYMBOLS", "NUMBER_FORMS", "ARROWS", "MATHEMATICAL_OPERATORS", "MISCELLANEOUS_TECHNICAL", "CONTROL_PICTURES", "OPTICAL_CHARACTER_RECOGNITION", "ENCLOSED_ALPHANUMERICS", "BOX_DRAWING", "BLOCK_ELEMENTS", "GEOMETRIC_SHAPES", "MISCELLANEOUS_SYMBOLS", "DINGBATS", "CJK_SYMBOLS_AND_PUNCTUATION", "HIRAGANA", "KATAKANA", "BOPOMOFO", "HANGUL_COMPATIBILITY_JAMO", "KANBUN", "ENCLOSED_CJK_LETTERS_AND_MONTHS", "CJK_COMPATIBILITY", "CJK_UNIFIED_IDEOGRAPHS", "HANGUL_SYLLABLES", "SURROGATES_AREA", "PRIVATE_USE_AREA", "CJK_COMPATIBILITY_IDEOGRAPHS", "ALPHABETIC_PRESENTATION_FORMS", "ARABIC_PRESENTATION_FORMS_A", "COMBINING_HALF_MARKS", "CJK_COMPATIBILITY_FORMS", "SMALL_FORM_VARIANTS", "ARABIC_PRESENTATION_FORMS_B", "HALFWIDTH_AND_FULLWIDTH_FORMS", "SPECIALS", "LATIN", "LATIN_DIGITS", "TRADITIONAL_HANZI", "SIMPLIFIED_HANZI", "KANJI", "HANJA", "HALFWIDTH_KATAKANA", }; const char * opcode_string_get(int num) { return opcode_string[0x7f & num].string; } const char * feedback_string_get(int num) { if ((num < 0) || (FEEDBACK_NUM < num)) { num = FEEDBACK_NUM; } return feedback_string[num]; } const char * object_descriptor_category_string_get(int num) { if ((num < 0) || (OBJECT_DESCRIPTOR_CATEGORY_NUM < num)) { num = OBJECT_DESCRIPTOR_CATEGORY_NUM; } return object_descriptor_category_string[num]; } static const char * id_string_pair_search(id_string_pair * p, int key, int key_stop) { for (; (key != p->id) && (key_stop != p->id); p++) {} return p->string; } const char * annotation_id_string_get(int num) { return id_string_pair_search(annotation_id_string, num, 0); } const char * imattribute_id_string_get(int num) { return id_string_pair_search(imattribute_id_string, num, 0); } const char * icattribute_id_string_get(int num) { return id_string_pair_search(icattribute_id_string, num, 0); } const char * lookup_choice_master_string_get(int num) { return id_string_pair_search(lookup_choice_master_string, num, 0); } const char * lookup_choice_direction_string_get(int num) { return id_string_pair_search(lookup_choice_direction_string, num, -1); } const char * lookup_choice_label_owner_string_get(int num) { return id_string_pair_search(lookup_choice_label_owner_string, num, -1); } const char * lookup_choice_process_page_string_get(int num) { return id_string_pair_search(lookup_choice_process_page_string, num, 0); } const char * character_subsets_string_get(int num) { if ((num < 0) || (CHARACTER_SUBSETS_STRING_NUM < num)) { num = 0; } return character_subsets_string[num]; } const char * iiimp_opcode_string(int num) { return opcode_string[0x7f & num].string; } /* Local Variables: */ /* c-file-style: "iiim-project" */ /* End: */