00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00031 #ifndef _DICTIONARY_ENGINE_BASE_API_
00032 #define _DICTIONARY_ENGINE_BASE_API_
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00048
00049
00050 #include <glib.h>
00051
00057
00081 #define ENGINE_API_VERSION "1.0.0"
00082
00091 #define _GLOBAL_FUNCTIONS_ engine_global_functions
00092
00093
00095 #define ___TOSTRING(x) #x
00096 #define __TOSTRING(x) ___TOSTRING(x)
00097
00112 #define GLOBAL_FUNCTIONS_NAME __TOSTRING(_GLOBAL_FUNCTIONS_)
00113
00121
00131 #define dict_eng_module_check(module, location)\
00132 ((module).engine_check(location))
00133
00146 #define dict_eng_module_get_description(module)\
00147 ((module).engine_description())
00148
00157 #define dict_eng_module_get_version(module)\
00158 ((module).engine_version())
00159
00169 #define dict_eng_module_get_api_version(module)\
00170 ((module).engine_api_version())
00171
00179 #define dict_eng_module_get_format(module)\
00180 ((module).engine_format())
00181
00193 #define dict_eng_module_create(module, location, flags)\
00194 ( (module).engine_create((location),\
00195 (flags),\
00196 NULL,\
00197 NULL,\
00198 0.01) )
00199
00219 #define dict_eng_module_create_ext(module, location, flags, progress_handler,\
00220 progress_data, seed)\
00221 ( (module).engine_create((location),\
00222 (flags),\
00223 (progress_handler),\
00224 (progress_data),\
00225 (seed)) )
00226
00235
00236
00245 #define dict_eng_set_progress_seed(engine, signal, val)\
00246 ((engine)->engine_set_progress_seed( (engine),\
00247 (signal),\
00248 (val) ))
00249
00258 #define dict_eng_set_auto_free(engine, state)\
00259 (engine)->engine_set_auto_free((engine), (state))
00260
00271 #define dict_eng_optimize(engine) ((engine)->engine_optimize((engine)))
00272
00279 #define dict_eng_is_optimized(engine) ((engine)->engine_is_optimized((engine)))
00280
00291 #define dict_eng_get_location(engine) ((engine)->engine_location((engine)))
00292
00303 #define dict_eng_get_last_status(engine) ((engine)->engine_status((engine)))
00304
00314 #define dict_eng_status_message(engine, status)\
00315 ((engine)->engine_status_message((status)))
00316
00328 #define dict_eng_destroy(engine) ((engine)->engine_close(engine))
00329
00339 #define dict_eng_search_word_list(engine, pattern, data)\
00340 ((engine)->engine_search_word_list( (engine),\
00341 (pattern),\
00342 (data) ))
00343
00353 #define dict_eng_search_word_translation(engine, word, data)\
00354 ((engine)->engine_search_word_translation( (engine),\
00355 (word),\
00356 (data) ))
00357
00368 #define dict_eng_set_callback(engine, signal, c_handler, data)\
00369 ((engine)->engine_set_callback( (engine),\
00370 (signal),\
00371 (c_handler),\
00372 (data) ))
00373
00386 #define dict_eng_add_word(engine,word,tran)\
00387 ((engine)->engine_add_word( (engine),\
00388 (word),\
00389 (tran) ))
00390
00391
00403 #define dict_eng_remove_word(engine,word)\
00404 ((engine)->engine_remove_word( (engine),\
00405 (word) ))
00406
00416 #define dict_eng_get_lang_from(engine) ((engine)->engine_get_lang_from(engine))
00417
00427 #define dict_eng_get_lang_to(engine) ((engine)->engine_get_lang_to(engine))
00428
00438 #define dict_eng_get_title(engine) ((engine)->engine_get_title(engine))
00439
00449 #define dict_eng_get_icon_path(engine) ((engine)->engine_get_icon_path(engine))
00450
00461
00473 #define ENGINE_WORD_LIST_SIGNAL "on_word_list_found"
00474
00486 #define ENGINE_WORD_TRANSLATION_SIGNAL "on_word_translation_found"
00487
00499 #define ENGINE_PROGRESS_OPTIMIZING_SIGNAL "on_progress_optimizing"
00500
00504
00513 typedef enum
00514 {
00515 ENGINE_CREATE = 1 << 0,
00517 ENGINE_NO = 1 << 1,
00519 ENGINE_REFRESH = 1 << 2
00521 } EngineOptimizationFlag;
00522
00531 typedef enum
00532 {
00533 ENGINE_NO_ERROR = 0,
00535 ENGINE_WRONG_FILE = 1 << 0,
00538 ENGINE_COULDNT_READ = 1 << 1,
00541 ENGINE_COULDNT_WRITE = 1 << 2,
00544 ENGINE_INTERNAL_ERROR = 1 << 3,
00546 ENGINE_NO_FILE = 1 << 4,
00548 ENGINE_OUT_OF_MEMORY = 1 << 5
00550 }
00551 EngineStatus;
00562
00574 typedef void (*cb_word_list)(GArray* list,
00575 gchar* pattern,
00576 gpointer user_data,
00577 EngineStatus error);
00578
00590 typedef void (*cb_word_translation)(gchar* translation,
00591 gchar* word,
00592 gpointer user_data,
00593 EngineStatus error);
00594
00606 typedef void (*cb_progress)(gdouble value,
00607 gpointer user_data,
00608 EngineStatus error);
00613 struct _Engine;
00614
00615
00616 typedef struct _Engine Engine;
00617
00621 struct _Engine
00622 {
00623
00624
00625 gpointer engine_data;
00631
00632 void (*engine_set_auto_free)( Engine* engine,
00633 gboolean state );
00637 gchar* (*engine_location)(Engine* engine);
00641 gboolean (*engine_is_optimized)(Engine* engine);
00645 void (*engine_optimize)(Engine* engine);
00649 void (*engine_search_word_list)( Engine* engine,
00650 gchar* pattern,
00651 gpointer data );
00655 void (*engine_search_word_translation)( Engine* engine,
00656 gchar* word,
00657 gpointer data );
00661 void (*engine_close)(Engine* engine);
00665 EngineStatus (*engine_status)(Engine* engine);
00669 gchar* (*engine_status_message)(EngineStatus error);
00673 gpointer (*engine_set_callback)( Engine* engine,
00674 gchar* signal,
00675 gpointer c_handler,
00676 gpointer user_data );
00680 void (*engine_set_progress_seed)( Engine* engine,
00681 gchar* signal,
00682 gdouble seed );
00687
00688 gboolean (*engine_add_word)( Engine* engine,
00689 gchar* word,
00690 gchar* translation );
00694 gboolean (*engine_remove_word)( Engine* engine,
00695 gchar* word );
00699 gchar* (*engine_get_lang_from)(Engine* engine);
00703 gchar* (*engine_get_lang_to)(Engine* engine);
00707 gchar* (*engine_get_title)(Engine* engine);
00711 gchar* (*engine_get_icon_path)(Engine* engine);
00714 };
00715
00716
00726 typedef struct {
00727 gboolean (*engine_check)(gchar* location);
00731 gchar* (*engine_description)(void);
00735 gchar* (*engine_format)(void);
00739 gchar* (*engine_version)(void);
00743 gchar* (*engine_api_version)(void);
00747 Engine* (*engine_create)( gchar* location,
00748 EngineOptimizationFlag flags,
00749 cb_progress progress_handler,
00750 gpointer progress_data,
00751 gdouble seed );
00754 }
00755 EngineModule;
00756
00757 typedef EngineModule (*getting_additional_t)(void);
00758
00759 extern EngineModule engine_global_functions(void);
00760
00761
00762
00765 #ifdef __cplusplus
00766 }
00767 #endif
00768 #endif
00769