From 9ffdfaa1b77c0a9e2136ad49768bc7df4329d454 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Wed, 14 Dec 2011 13:39:06 +0800 Subject: refine ChewingKeyRest --- src/storage/chewing_key.h | 13 ------------- src/storage/pinyin_parser2.cpp | 22 ++-------------------- tests/storage/test_parser2.cpp | 6 ++++-- utils/storage/gen_chewing_table.cpp | 2 +- 4 files changed, 7 insertions(+), 36 deletions(-) diff --git a/src/storage/chewing_key.h b/src/storage/chewing_key.h index 9f6526e..68733d4 100644 --- a/src/storage/chewing_key.h +++ b/src/storage/chewing_key.h @@ -212,21 +212,8 @@ struct ChewingKeyRest m_raw_begin = 0; m_raw_end = 0; } - - const char * get_pinyin_string(); - const char * get_chewing_string(); }; -static inline gchar * get_pinyin_string(ChewingKey key, - ChewingKeyRest key_rest) { - if (CHEWING_ZERO_TONE != key.m_tone) { - return g_strdup_printf - ("%s%d", key_rest.get_pinyin_string(), key.m_tone); - } else { - return g_strdup(key_rest.get_pinyin_string()); - } -} - }; #endif diff --git a/src/storage/pinyin_parser2.cpp b/src/storage/pinyin_parser2.cpp index 7adf9a7..f79695f 100644 --- a/src/storage/pinyin_parser2.cpp +++ b/src/storage/pinyin_parser2.cpp @@ -84,6 +84,7 @@ gint ChewingKey::get_table_index() { gchar * ChewingKey::get_pinyin_string() { assert(m_tone < CHEWING_NUMBER_OF_TONES); gint index = get_table_index(); + assert(index < G_N_ELEMENTS(content_table)); const content_table_item_t & item = content_table[index]; if (CHEWING_ZERO_TONE == m_tone) { @@ -96,6 +97,7 @@ gchar * ChewingKey::get_pinyin_string() { gchar * ChewingKey::get_chewing_string() { assert(m_tone < CHEWING_NUMBER_OF_TONES); gint index = get_table_index(); + assert(index < G_N_ELEMENTS(content_table)); const content_table_item_t & item = content_table[index]; if (CHEWING_ZERO_TONE == m_tone) { @@ -107,26 +109,6 @@ gchar * ChewingKey::get_chewing_string() { } -/* methods for Chewing Keys to access pinyin parser table. */ -const char * ChewingKeyRest::get_pinyin_string(){ - if (m_table_index == 0) - return NULL; - - /* check end boundary. */ - assert(m_table_index < G_N_ELEMENTS(content_table)); - return content_table[m_table_index].m_pinyin_str; -} - -const char * ChewingKeyRest::get_chewing_string(){ - if (m_table_index == 0) - return NULL; - - /* check end boundary. */ - assert(m_table_index < G_N_ELEMENTS(content_table)); - return content_table[m_table_index].m_chewing_str; -} - - /* Pinyin Parsers */ /* internal information for pinyin parsers. */ diff --git a/tests/storage/test_parser2.cpp b/tests/storage/test_parser2.cpp index f42db49..276a3a9 100644 --- a/tests/storage/test_parser2.cpp +++ b/tests/storage/test_parser2.cpp @@ -105,7 +105,7 @@ int main(int argc, char * argv[]) { bool success = parser->parse_one_key(options, key, key_rest, linebuf, strlen(linebuf)); if (success) - printf("pinyin:%s\t%d\t%d\n", key_rest.get_pinyin_string(), + printf("pinyin:%s\t%d\t%d\n", key.get_pinyin_string(), key_rest.m_raw_begin, key_rest.m_raw_end); #endif @@ -123,9 +123,11 @@ int main(int argc, char * argv[]) { assert(keys->len == key_rests->len); for (size_t i = 0; i < keys->len; ++i) { + ChewingKey * key = + &g_array_index(keys, ChewingKey, i); ChewingKeyRest * key_rest = &g_array_index(key_rests, ChewingKeyRest, i); - printf("%s %d %d\t", key_rest->get_pinyin_string(), + printf("%s %d %d\t", key->get_pinyin_string(), key_rest->m_raw_begin, key_rest->m_raw_end); } printf("\n"); diff --git a/utils/storage/gen_chewing_table.cpp b/utils/storage/gen_chewing_table.cpp index 30bc0da..d74be6a 100644 --- a/utils/storage/gen_chewing_table.cpp +++ b/utils/storage/gen_chewing_table.cpp @@ -293,7 +293,7 @@ void gen_phrase_file(const char * outfilename, int phrase_index){ (key_rests, ChewingKeyRest, k); //assert (CHEWING_ZERO_TONE != key.m_tone); - pinyin = get_pinyin_string(key, key_rest); + pinyin = key.get_pinyin_string(); g_array_append_val(pinyins, pinyin); } gchar * pinyin_str = g_strjoinv("'", (gchar **)pinyins->data); -- cgit