libUnihan
0.5.3
|
00001 00008 /* 00009 * Copyright © 2008 Red Hat, Inc. All rights reserved. 00010 * Copyright © 2008 Ding-Yi Chen <dchen at redhat dot com> 00011 * 00012 * This file is part of the libUnihan Project. 00013 * 00014 * This library is free software; you can redistribute it and/or 00015 * modify it under the terms of the GNU Lesser General Public 00016 * License as published by the Free Software Foundation; either 00017 * version 2 of the License, or (at your option) any later version. 00018 * 00019 * This library is distributed in the hope that it will be useful, 00020 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00021 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00022 * GNU Lesser General Public License for more details. 00023 * 00024 * You should have received a copy of the GNU Lesser General Public 00025 * License along with this program; if not, write to the 00026 * Free Software Foundation, Inc., 59 Temple Place, Suite 330, 00027 * Boston, MA 02111-1307 USA 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 //!< Using SQL LIKE in WHERE expression. 00098 #define UNIHAN_QUERY_OPTION_SCALAR_STRING 1 << 1 //!< Show code point as string "U+xxxx". 00099 #define UNIHAN_QUERY_OPTION_SHOW_GIVEN_FIELD 1 << 2 //!< Show the given field in results. 00100 #define UNIHAN_QUERY_OPTION_PINYIN_TONE_ACCENT 1 << 3 //!< Use accent mark for pinyin tone. 00101 #define UNIHAN_QUERY_OPTION_PINYIN_FORMAT_MASK 7 << 4 //!< Mask for pinyin format. 00102 #define UNIHAN_QUERY_OPTION_ZHUYIN_FORCE_DISPLAY 1 << 7 //!< Force ZhuYin display. 00103 #define UNIHAN_QUERY_OPTION_ZHUYIN_FORMAT_MASK 7 << 8 //!< Mask for zhuyin format. 00104 00105 #define UNIHAN_QUERY_OPTION_DEFAULT (PINYIN_ACCENT_UNIHAN << 4) | (ZHUYIN_TONEMARK_ORIGINAL << 8) 00106 00107 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 /* UNIHAN_H */