include/dictionary_engine.h

Go to the documentation of this file.
00001 /*******************************************************************************
00002 This file is part of mDictionary
00003 
00004 mDictionary is free software; you can redistribute it and/or modify
00005 it under the terms of the GNU General Public License as published by
00006 the Free Software Foundation; either version 2 of the License, or
00007 (at your option) any later version.
00008 
00009 mDictionary is distributed in the hope that it will be useful, 
00010 but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00012 GNU General Public License for more details.
00013 
00014 You should have received a copy of the GNU General Public License 
00015 along with WhiteStork; if not, write to the Free Software
00016 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00017 
00018 Copyright 2006-2008 ComArch S.A.
00019 *******************************************************************************/
00031 #ifndef   _DICTIONARY_ENGINE_BASE_API_
00032 #define   _DICTIONARY_ENGINE_BASE_API_
00033 #ifdef    __cplusplus
00034        extern "C" {
00035 #endif
00036 
00048 
00049 /* GLib header - enigne API is based on GLib's basic types and functions */
00050 #include <glib.h>
00051 
00057 
00081 #define ENGINE_API_VERSION "1.0.0"
00082 
00091 #define _GLOBAL_FUNCTIONS_ engine_global_functions
00092 
00093 /* We do not want this two defines in output documentation. */
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         /* dictionary independent data. REMEMBER: always at the beggining of
00624            structure!!! */
00625         gpointer engine_data;
00631         // 0.1 API specification
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         /* 0.2 API specification's functions */
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 /* _DICTIONARY_ENGINE_BASE_API_ */
00769 

Generated on Fri Jan 11 14:30:17 2008 for mDictionary Project by  doxygen 1.5.1