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 "Unihan_phonetic.h"
00033 #include "sqlite_functions.h"
00034 #include "str_functions.h"
00035
00039 typedef int (*UnihanCallback)(void* userOption,int col_num,char** results,char** col_names);
00040
00041
00049 typedef struct {
00050 const char *name;
00051 const char *description;
00052 } UnihanIRG_SourceData;
00053
00061 typedef struct {
00062 UnihanIRG_SourceId sourceId;
00063 const char *sourceMapping;
00064 } UnihanIRG_SourceRec;
00065
00066
00071 typedef struct {
00072 const char* funcName;
00073 int argc;
00074 void (*func)(sqlite3_context *context, int argc, sqlite3_value **argv);
00075 void (*stepFunc)(sqlite3_context *context, int argc, sqlite3_value **argv);
00076 void (*finalizeFunc)(sqlite3_context *context);
00077 } DatabaseFuncStru;
00078
00083 extern const DatabaseFuncStru DATABASE_FUNCS[];
00084
00095 typedef guint UnihanQueryOption;
00096
00097 #define UNIHAN_QUERY_OPTION_LIKE 1
00098 #define UNIHAN_QUERY_OPTION_SCALAR_STRING 1 << 1
00099 #define UNIHAN_QUERY_OPTION_SHOW_GIVEN_FIELD 1 << 2
00100 #define UNIHAN_QUERY_OPTION_PINYIN_TONE_ACCENT 1 << 3
00101 #define UNIHAN_QUERY_OPTION_PINYIN_FORMAT_MASK 7 << 4
00102 #define UNIHAN_QUERY_OPTION_ZHUYIN_FORCE_DISPLAY 1 << 7
00103 #define UNIHAN_QUERY_OPTION_ZHUYIN_FORMAT_MASK 7 << 8
00104
00105 #define UNIHAN_QUERY_OPTION_DEFAULT (PINYIN_ACCENT_UNIHAN << 4) | (ZHUYIN_TONEMARK_ORIGINAL << 8)
00107
00108
00114 #define UNIHAN_QUERY_OPTION_GET_PINYIN_FORMAT(options) (options & UNIHAN_QUERY_OPTION_PINYIN_FORMAT_MASK) >> 4
00115
00122 #define UNIHAN_QUERY_OPTION_SET_PINYIN_FORMAT(options,format) options |= format << 4
00123
00130 #define UNIHAN_QUERY_OPTION_GET_ZHUYIN_FORMAT(options) (options & UNIHAN_QUERY_OPTION_ZHUYIN_FORMAT_MASK) >> 8
00131
00138 #define UNIHAN_QUERY_OPTION_SET_ZHUYIN_FORMAT(options,format) options |= format << 8
00139
00165 SQL_Result *unihan_find_all_matched(UnihanField givenField, const char *givenValue,
00166 UnihanField queryField, UnihanQueryOption qOption);
00167
00184 char* unihan_find_firstMatched(UnihanField givenField, const char* givenValue,
00185 UnihanField queryField, UnihanQueryOption qOption );
00186
00201 int unihan_count_matched_record(UnihanTable table,StringList *valueList);
00202
00217 int unihan_insert(UnihanTable table,StringList *valueList);
00218
00230 int unihan_insert_no_duplicate(UnihanTable table,StringList *valueList);
00231
00255 int unihan_insert_value(gunichar code, UnihanField field, const char *value);
00256
00264 gboolean unihanChar_has_property(gunichar code, UnihanField field);
00265
00273 gboolean unihanChar_is_in_source(gunichar code, UnihanIRG_SourceId source);
00274
00284 UnihanIRG_SourceId unihanChar_is_in_sources(gunichar code, UnihanIRG_SourceId source, ...);
00285
00298 gboolean unihanChar_is_common_in_locale(gunichar code, UnihanLocale locale);
00299
00307 UnihanRange unihanChar_in_range(gunichar code);
00308
00315 gunichar unihanChar_parse(const char *str);
00316
00323 char *unihanChar_to_scalar_string(gunichar code);
00324
00325
00333 sqlite3 *unihanDb_get();
00334
00343 SQL_Result *unihanDb_get_tableNames();
00344
00345
00379 int unihanDb_open(const char *filename, int flags);
00380
00389 int unihanDb_open_default();
00390
00399 int unihanDb_close();
00400
00408 int unihanField_array_index(UnihanField field, const UnihanField* fieldArray);
00409
00417 UnihanIRG_Source unihanField_get_IRG_source(UnihanField field);
00418
00435 UnihanTable unihanField_get_table(UnihanField field);
00436
00448 UnihanTable *unihanField_get_all_tables(UnihanField field);
00449
00467 UnihanTable unihanField_get_extra_table(UnihanField field);
00468
00476 gboolean unihanField_is_IRG_Source(UnihanField field);
00477
00478
00489 gboolean unihanField_is_indexed(UnihanField field);
00490
00497 gboolean unihanField_is_integer(UnihanField field);
00498
00521 gboolean unihanField_is_case_no_change(UnihanField field);
00522
00538 gboolean unihanField_is_lowercase(UnihanField field);
00539
00546 gboolean unihanField_is_mandarin(UnihanField field);
00547
00565 gboolean unihanField_is_pseudo(UnihanField field);
00566
00575 gboolean unihanField_is_ucs4(UnihanField field);
00576
00591 gboolean unihanField_is_singleton(UnihanField field);
00592
00599 UnihanField unihanField_parse(const char *str);
00600
00607 const char* unihanField_to_string(UnihanField field);
00608
00619 gboolean unihanIRG_Source_has_no_mapping(UnihanIRG_SourceId sourceId);
00620
00628 const UnihanIRG_SourceData *unihanIRG_SourceData_get(UnihanIRG_SourceId sourceId);
00629
00636 UnihanIRG_SourceId unihanIRG_SourceId_parse(const char *sourceShortName);
00637
00647 UnihanIRG_SourceRec* unihanIRG_SourceRec_parse(UnihanField field,const char *value);
00648
00654 void unihanIRG_SourceRec_free(UnihanIRG_SourceRec *rec);
00655
00665 int unihanSql_count_matches(const char * sqlClause, char **errMsg_ptr);
00666
00678 int unihanSql_exec(char *sqlClause, UnihanCallback callback,
00679 void *callbackOption, char **errMsg_ptr);
00680
00688 SQL_Result *unihanSql_get_sql_result(const char *sqlClause);
00689
00690
00697 UnihanLocale unihanLocale_parse(char *str);
00698
00707 const char *unihanLocale_to_string(UnihanLocale locale);
00708
00717 const char *unihanRange_to_string(UnihanRange uRange);
00718
00725 UnihanTable unihanTable_parse(const char * tableName);
00726
00735 const char *unihanTable_to_string(UnihanTable table);
00736
00737
00750 UnihanField* unihanTable_get_db_fields(UnihanTable table);
00751
00766 UnihanField* unihanTable_get_fields(UnihanTable table);
00767
00777 UnihanField* unihanTable_get_primary_key_fields(UnihanTable table);
00778
00779
00780
00781 #endif