callback function 등록하는 api 수정
authorChoe Hwanjin <choe.hwanjin@gmail.com>
Mon, 28 May 2007 13:25:15 +0000 (22:25 +0900)
committerChoe Hwanjin <choe.hwanjin@gmail.com>
Mon, 28 May 2007 13:25:15 +0000 (22:25 +0900)
 * hangul_ic_connect_callback() 사용
 * callback function type 제거

git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@120 8f00fcd2-89fc-0310-932e-b01be5b65e01

hangul/hangul.h
hangul/hangulinputcontext.c

index 97c0f34..fa4a9a5 100644 (file)
@@ -67,15 +67,6 @@ typedef struct _HangulCombination     HangulCombination;
 typedef struct _HangulBuffer          HangulBuffer;
 typedef struct _HangulInputContext    HangulInputContext;
 
-typedef bool   (*HangulOnTransition) (HangulInputContext*,
-                                     ucschar,
-                                     const ucschar*,
-                                     void*);
-typedef void   (*HangulOnTranslate)  (HangulInputContext*,
-                                     int,
-                                     ucschar*,
-                                     void*);
-
 enum {
     HANGUL_OUTPUT_SYLLABLE,
     HANGUL_OUTPUT_JAMO
@@ -120,13 +111,8 @@ void hangul_ic_select_keyboard(HangulInputContext *hic,
                               const char* id);
 void hangul_ic_set_combination(HangulInputContext *hic,
                               const HangulCombination *combination);
-
-void hangul_ic_connect_translate (HangulInputContext* hic,
-                                  HangulOnTranslate callback,
-                                  void* user_data);
-void hangul_ic_connect_transition(HangulInputContext* hic,
-                                  HangulOnTransition callback,
-                                  void* user_data);
+void hangul_ic_connect_callback(HangulInputContext* hic, const char* event,
+                               void* callback, void* user_data);
 
 const ucschar* hangul_ic_get_preedit_string(HangulInputContext *hic);
 const ucschar* hangul_ic_get_commit_string(HangulInputContext *hic);
index 07fca98..b10b904 100644 (file)
 #define N_ELEMENTS(array) (sizeof(array) / sizeof(array[0]))
 #define HANGUL_KEYBOARD_TABLE_SIZE 0x80
 
+typedef void   (*HangulOnTranslate)  (HangulInputContext*,
+                                     int,
+                                     ucschar*,
+                                     void*);
+typedef bool   (*HangulOnTransition) (HangulInputContext*,
+                                     ucschar,
+                                     const ucschar*,
+                                     void*);
+
 typedef struct _HangulCombinationItem HangulCombinationItem;
 
 struct _HangulKeyboard {
@@ -1045,6 +1054,21 @@ hangul_ic_connect_transition(HangulInputContext* hic,
     }
 }
 
+void hangul_ic_connect_callback(HangulInputContext* hic, const char* event,
+                               void* callback, void* user_data)
+{
+    if (hic == NULL || event == NULL)
+       return;
+
+    if (strcasecmp(event, "translate") == 0) {
+       hic->on_translate      = (HangulOnTranslate)callback;
+       hic->on_translate_data = user_data;
+    } else if (strcasecmp(event, "transition") == 0) {
+       hic->on_transition      = (HangulOnTransition)callback;
+       hic->on_transition_data = user_data;
+    }
+}
+
 void hangul_ic_set_filter(HangulInputContext *hic,
                          HangulICFilter func, void *user_data)
 {