Unihan.h

Go to the documentation of this file.
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       
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 /* UNIHAN_H */

Generated on Tue Oct 21 03:48:01 2008 for libUnihan by  doxygen 1.4.7