00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef UNIHAN_H_
00030 #define UNIHAN_H_
00031 #include "Unihan_enum.h"
00032 #include "sqlite_functions.h"
00033 #include "str_functions.h"
00034
00035
00043 typedef struct {
00044 const char *name;
00045 const char *description;
00046 } UnihanIRG_SourceData;
00047
00055 typedef struct {
00056 UnihanIRG_SourceId sourceId;
00057 const char *sourceMapping;
00058 } UnihanIRG_SourceRec;
00059
00060
00064 typedef int (*UnihanCallback)(void* userOption,int col_num,char** results,char** col_names);
00065
00070 typedef struct databaseFuncStru{
00071 const char* funcName;
00072 int argc;
00073 void (*func)(sqlite3_context *context, int argc, sqlite3_value **argv);
00074 void (*stepFunc)(sqlite3_context *context, int argc, sqlite3_value **argv);
00075 void (*finalizeFunc)(sqlite3_context *context);
00076 } DatabaseFuncStru;
00077
00082 extern const DatabaseFuncStru DATABASE_FUNCS[];
00083
00093 typedef guint UnihanQueryOption;
00094
00095 #define UNIHAN_QUERY_OPTION_DEFAULT 0x00
00096 #define UNIHAN_QUERY_OPTION_LIKE 0x01
00097 #define UHIHAN_QUERY_OPTION_SCALAR_STRING 0x02
00098
00122 SQL_Result *unihan_find_all_matched(UnihanField givenField, char *givenValue,
00123 UnihanField queryField, UnihanQueryOption qOption);
00124
00141 char* unihan_find_firstMatched(UnihanField givenField, char* givenValue,
00142 UnihanField queryField, UnihanQueryOption qOption );
00143
00158 int unihan_count_matched_record(UnihanTable table,StringList *valueList);
00159
00174 int unihan_insert(UnihanTable table,StringList *valueList);
00175
00187 int unihan_insert_no_duplicate(UnihanTable table,StringList *valueList);
00188
00212 int unihan_insert_value(gunichar code, UnihanField field, const char *value);
00213
00221 gboolean unihanChar_has_property(gunichar code, UnihanField field);
00222
00230 gboolean unihanChar_is_in_source(gunichar code, UnihanIRG_SourceId source);
00231
00241 UnihanIRG_SourceId unihanChar_is_in_sources(gunichar code, UnihanIRG_SourceId source, ...);
00242
00255 gboolean unihanChar_is_common_in_locale(gunichar code, UnihanLocale locale);
00256
00264 UnihanRange unihanChar_in_range(gunichar code);
00265
00272 gunichar unihanChar_parse(const char *str);
00273
00280 char *unihanChar_to_scalar_string(gunichar code);
00281
00282
00290 sqlite3 *unihanDb_get();
00291
00300 SQL_Result *unihanDb_get_tableNames();
00301
00302
00336 int unihanDb_open(const char *filename, int flags);
00337
00346 int unihanDb_open_default();
00347
00356 int unihanDb_close();
00357
00365 int unihanField_array_index(UnihanField field, const UnihanField* fieldArray);
00366
00374 UnihanIRG_Source unihanField_get_IRG_source(UnihanField field);
00375
00392 UnihanTable unihanField_get_table(UnihanField field);
00393
00405 UnihanTable *unihanField_get_all_tables(UnihanField field);
00406
00424 UnihanTable unihanField_get_extra_table(UnihanField field);
00425
00433 gboolean unihanField_is_IRG_Source(UnihanField field);
00434
00435
00446 gboolean unihanField_is_indexed(UnihanField field);
00447
00454 gboolean unihanField_is_integer(UnihanField field);
00455
00462 gboolean unihanField_is_mandarin(UnihanField field);
00463
00481 gboolean unihanField_is_pseudo(UnihanField field);
00482
00499 gboolean unihanField_is_scalar_value(UnihanField field);
00500
00515 gboolean unihanField_is_singleton(UnihanField field);
00516
00523 UnihanField unihanField_parse(const char *str);
00524
00531 const char* unihanField_to_string(UnihanField field);
00532
00543 gboolean unihanIRG_Source_has_no_mapping(UnihanIRG_SourceId sourceId);
00544
00552 const UnihanIRG_SourceData *unihanIRG_SourceData_get(UnihanIRG_SourceId sourceId);
00553
00560 UnihanIRG_SourceId unihanIRG_SourceId_parse(const char *sourceShortName);
00561
00570 UnihanIRG_SourceRec* unihanIRG_SourceRec_parse(UnihanField field,const char *value);
00571
00577 void unihanIRG_SourceRec_free(UnihanIRG_SourceRec *rec);
00578
00588 int unihanSql_count_matches(const char * sqlClause, char **errMsg_ptr);
00589
00601 int unihanSql_exec(char *sqlClause, UnihanCallback callback,
00602 void *callbackOption, char **errMsg_ptr);
00603
00611 SQL_Result *unihanSql_get_sql_result(const char *sqlClause);
00612
00613
00620 UnihanLocale unihanLocale_parse(char *str);
00621
00630 const char *unihanLocale_to_string(UnihanLocale locale);
00631
00640 const char *unihanRange_to_string(UnihanRange uRange);
00641
00648 UnihanTable unihanTable_parse(const char * tableName);
00649
00658 const char *unihanTable_to_string(UnihanTable table);
00659
00660
00673 UnihanField* unihanTable_get_db_fields(UnihanTable table);
00674
00689 UnihanField* unihanTable_get_fields(UnihanTable table);
00690
00700 UnihanField* unihanTable_get_primary_key_fields(UnihanTable table);
00701
00702
00703
00704 #endif