summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2015-05-22 14:20:09 +0800
committerPeng Wu <alexepico@gmail.com>2015-05-22 14:20:09 +0800
commit16c86ec97f7e4e812c685e7a52842e72e25f9e91 (patch)
tree09c229b1cd7e5c3e8698fdcd78fa52be908c58cf /utils
parentc8362b0c42886e87a9cfb5893bc9c462bf3a1b83 (diff)
downloadlibpinyin-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.cpp74
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;
}