diff options
author | Peng Wu <alexepico@gmail.com> | 2015-05-22 14:20:09 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2015-05-22 14:20:09 +0800 |
commit | 16c86ec97f7e4e812c685e7a52842e72e25f9e91 (patch) | |
tree | 09c229b1cd7e5c3e8698fdcd78fa52be908c58cf /utils | |
parent | c8362b0c42886e87a9cfb5893bc9c462bf3a1b83 (diff) | |
download | libpinyin-16c86ec97f7e4e812c685e7a52842e72e25f9e91.tar.gz libpinyin-16c86ec97f7e4e812c685e7a52842e72e25f9e91.tar.xz libpinyin-16c86ec97f7e4e812c685e7a52842e72e25f9e91.zip |
update gen_binary_files
Diffstat (limited to 'utils')
-rw-r--r-- | utils/storage/gen_binary_files.cpp | 74 |
1 files changed, 45 insertions, 29 deletions
diff --git a/utils/storage/gen_binary_files.cpp b/utils/storage/gen_binary_files.cpp index 4216b44..4bee0d8 100644 --- a/utils/storage/gen_binary_files.cpp +++ b/utils/storage/gen_binary_files.cpp @@ -32,29 +32,9 @@ static GOptionEntry entries[] = {NULL} }; -int main(int argc, char * argv[]){ - setlocale(LC_ALL, ""); - - GError * error = NULL; - GOptionContext * context; - - context = g_option_context_new("- generate binary files"); - g_option_context_add_main_entries(context, entries, NULL); - if (!g_option_context_parse(context, &argc, &argv, &error)) { - g_print("option parsing failed:%s\n", error->message); - exit(EINVAL); - } - - SystemTableInfo system_table_info; - - gchar * filename = g_build_filename(table_dir, SYSTEM_TABLE_INFO, NULL); - bool retval = system_table_info.load(filename); - if (!retval) { - fprintf(stderr, "load table.conf failed.\n"); - exit(ENOENT); - } - g_free(filename); - +bool generate_binary_files(const char * pinyin_table_filename, + const char * phrase_table_filename, + const pinyin_table_info_t * phrase_files) { /* generate pinyin index*/ pinyin_option_t options = USE_TONE; ChewingLargeTable chewing_table(options); @@ -63,9 +43,6 @@ int main(int argc, char * argv[]){ /* generate phrase index */ FacadePhraseIndex phrase_index; - const pinyin_table_info_t * phrase_files = - system_table_info.get_table_info(); - for (size_t i = 0; i < PHRASE_INDEX_LIBRARY_COUNT; ++i) { const pinyin_table_info_t * table_info = phrase_files + i; assert(table_info->m_dict_index == i); @@ -76,7 +53,7 @@ int main(int argc, char * argv[]){ const char * tablename = table_info->m_table_filename; - filename = g_build_filename(table_dir, tablename, NULL); + gchar * filename = g_build_filename(table_dir, tablename, NULL); FILE * tablefile = fopen(filename, "r"); if (NULL == tablefile) { @@ -95,12 +72,12 @@ int main(int argc, char * argv[]){ MemoryChunk * new_chunk = new MemoryChunk; chewing_table.store(new_chunk); - new_chunk->save(SYSTEM_PINYIN_INDEX); + new_chunk->save(pinyin_table_filename); chewing_table.load(new_chunk); new_chunk = new MemoryChunk; phrase_table.store(new_chunk); - new_chunk->save(SYSTEM_PHRASE_INDEX); + new_chunk->save(phrase_table_filename); phrase_table.load(new_chunk); phrase_index.compact(); @@ -111,5 +88,44 @@ int main(int argc, char * argv[]){ if (!save_dictionary(phrase_files, &phrase_index)) exit(ENOENT); + return true; +} + +int main(int argc, char * argv[]){ + setlocale(LC_ALL, ""); + + GError * error = NULL; + GOptionContext * context; + + context = g_option_context_new("- generate binary files"); + g_option_context_add_main_entries(context, entries, NULL); + if (!g_option_context_parse(context, &argc, &argv, &error)) { + g_print("option parsing failed:%s\n", error->message); + exit(EINVAL); + } + + SystemTableInfo2 system_table_info; + + gchar * filename = g_build_filename(table_dir, SYSTEM_TABLE_INFO, NULL); + bool retval = system_table_info.load(filename); + if (!retval) { + fprintf(stderr, "load table.conf failed.\n"); + exit(ENOENT); + } + g_free(filename); + + const pinyin_table_info_t * phrase_files = + system_table_info.get_default_tables(); + + generate_binary_files(SYSTEM_PINYIN_INDEX, + SYSTEM_PHRASE_INDEX, + phrase_files); + + phrase_files = system_table_info.get_addon_tables(); + + generate_binary_files(ADDON_PINYIN_INDEX, + ADDON_PHRASE_INDEX, + phrase_files); + return 0; } |