From 6d821d1b145c307a9bd71c2615b8e596774d1c82 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Sat, 24 Dec 2011 11:07:04 +0800 Subject: fixes post process in pinyin parser2 --- src/storage/pinyin_parser2.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/storage/pinyin_parser2.cpp b/src/storage/pinyin_parser2.cpp index bab9d8a..45138da 100644 --- a/src/storage/pinyin_parser2.cpp +++ b/src/storage/pinyin_parser2.cpp @@ -440,23 +440,28 @@ bool FullPinyinParser2::post_process(pinyin_option_t options, ChewingKey * cur_key = NULL, * next_key = NULL; ChewingKeyRest * cur_rest = NULL, * next_rest = NULL; - guint16 cur_tone = CHEWING_ZERO_TONE, next_tone = CHEWING_ZERO_TONE; + guint16 next_tone = CHEWING_ZERO_TONE; for (i = 0; i < num_keys - 1; ++i) { - cur_rest = &g_array_index(key_rests, ChewingKeyRest, i); - next_rest = &g_array_index(key_rests, ChewingKeyRest, i + 1); + cur_key = &g_array_index(keys, ChewingKey, i); + next_key = &g_array_index(keys, ChewingKey, i + 1); /* some "'" here */ - if (cur_rest->m_raw_end != next_rest->m_raw_begin) + if (0 == cur_key->get_table_index()) + continue; + if (0 == next_key->get_table_index()) continue; - cur_key = &g_array_index(keys, ChewingKey, i); - next_key = &g_array_index(keys, ChewingKey, i + 1); + /* some tone here */ + if (CHEWING_ZERO_TONE != cur_key->m_tone) + continue; + + cur_rest = &g_array_index(key_rests, ChewingKeyRest, i); + next_rest = &g_array_index(key_rests, ChewingKeyRest, i + 1); if (options & USE_TONE) { - cur_tone = cur_key->m_tone; next_tone = next_key->m_tone; - cur_key->m_tone = next_key->m_tone = CHEWING_ZERO_TONE; + next_key->m_tone = CHEWING_ZERO_TONE; } /* lookup re-split table */ @@ -488,7 +493,6 @@ bool FullPinyinParser2::post_process(pinyin_option_t options, /* save back tones */ if (options & USE_TONE) { - cur_key->m_tone = cur_tone; next_key->m_tone = next_tone; } } -- cgit