diff options
Diffstat (limited to 'src/storage/chewing_large_table2.cpp')
-rw-r--r-- | src/storage/chewing_large_table2.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/storage/chewing_large_table2.cpp b/src/storage/chewing_large_table2.cpp index a100105..aa34399 100644 --- a/src/storage/chewing_large_table2.cpp +++ b/src/storage/chewing_large_table2.cpp @@ -20,7 +20,7 @@ #include "chewing_large_table2.h" #include "pinyin_parser2.h" - +#include "zhuyin_parser2.h" void ChewingLargeTable2::init_entries() { assert(NULL == m_entries); @@ -108,7 +108,7 @@ void ChewingLargeTable2::fini_entries() { } /* load text method */ -bool ChewingLargeTable2::load_text(FILE * infile) { +bool ChewingLargeTable2::load_text(FILE * infile, TABLE_PHONETIC_TYPE type) { char pinyin[256]; char phrase[256]; phrase_token_t token; @@ -126,15 +126,27 @@ bool ChewingLargeTable2::load_text(FILE * infile) { glong len = g_utf8_strlen(phrase, -1); - PinyinDirectParser2 parser; ChewingKeyVector keys; ChewingKeyRestVector key_rests; keys = g_array_new(FALSE, FALSE, sizeof(ChewingKey)); key_rests = g_array_new(FALSE, FALSE, sizeof(ChewingKeyRest)); - pinyin_option_t options = USE_TONE; - parser.parse(options, keys, key_rests, pinyin, strlen(pinyin)); + switch (type) { + case PINYIN_TABLE: { + PinyinDirectParser2 parser; + pinyin_option_t options = USE_TONE; + parser.parse(options, keys, key_rests, pinyin, strlen(pinyin)); + break; + } + + case ZHUYIN_TABLE: { + ZhuyinDirectParser2 parser; + pinyin_option_t options = USE_TONE | FORCE_TONE; + parser.parse(options, keys, key_rests, pinyin, strlen(pinyin)); + break; + } + }; if (len != keys->len) { fprintf(stderr, "ChewingLargeTable::load_text:%s\t%s\t%u\t%ld\n", |