From 16ab6e9d719acd02a1dbe65f8255fc65c06fbda2 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Fri, 16 Oct 2015 13:32:51 +0800 Subject: rename pinyin_set_chewing_scheme to pinyin_set_zhuyin_scheme --- src/libpinyin.ver | 2 +- src/pinyin.cpp | 37 ++++++++++++++++++++++++++++++++----- src/pinyin.h | 12 ++++++------ 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/libpinyin.ver b/src/libpinyin.ver index a08519e..514299a 100644 --- a/src/libpinyin.ver +++ b/src/libpinyin.ver @@ -4,7 +4,7 @@ LIBPINYIN { pinyin_save; pinyin_set_full_pinyin_scheme; pinyin_set_double_pinyin_scheme; - pinyin_set_chewing_scheme; + pinyin_set_zhuyin_scheme; pinyin_load_phrase_library; pinyin_unload_phrase_library; pinyin_load_addon_phrase_library; diff --git a/src/pinyin.cpp b/src/pinyin.cpp index 5f0506a..afdaa09 100644 --- a/src/pinyin.cpp +++ b/src/pinyin.cpp @@ -39,7 +39,7 @@ struct _pinyin_context_t{ /* input parsers. */ FullPinyinParser2 * m_full_pinyin_parser; DoublePinyinParser2 * m_double_pinyin_parser; - ChewingParser2 * m_chewing_parser; + ZhuyinParser2 * m_chewing_parser; /* default tables. */ FacadeChewingTable * m_pinyin_table; @@ -307,7 +307,7 @@ pinyin_context_t * pinyin_init(const char * systemdir, const char * userdir){ context->m_full_pinyin_parser = new FullPinyinParser2; context->m_double_pinyin_parser = new DoublePinyinParser2; - context->m_chewing_parser = new ChewingParser2; + context->m_chewing_parser = new ZhuyinSimpleParser2; /* load chewing table. */ context->m_pinyin_table = new FacadeChewingTable; @@ -960,9 +960,36 @@ bool pinyin_set_double_pinyin_scheme(pinyin_context_t * context, return true; } -bool pinyin_set_chewing_scheme(pinyin_context_t * context, - ChewingScheme scheme){ - context->m_chewing_parser->set_scheme(scheme); +bool pinyin_set_zhuyin_scheme(pinyin_context_t * context, + ZhuyinScheme scheme){ + delete context->m_chewing_parser; + context->m_chewing_parser = NULL; + + switch(scheme) { + case ZHUYIN_STANDARD: + case ZHUYIN_IBM: + case ZHUYIN_GINYIEH: + case ZHUYIN_ETEN: + case ZHUYIN_STANDARD_DVORAK: { + ZhuyinSimpleParser2 * parser = new ZhuyinSimpleParser2(); + parser->set_scheme(scheme); + context->m_chewing_parser = parser; + break; + } + case ZHUYIN_HSU: + case ZHUYIN_ETEN26: + case ZHUYIN_HSU_DVORAK: { + ZhuyinDiscreteParser2 * parser = new ZhuyinDiscreteParser2(); + parser->set_scheme(scheme); + context->m_chewing_parser = parser; + break; + } + case ZHUYIN_DACHEN_CP26: + context->m_chewing_parser = new ZhuyinDaChenCP26Parser2(); + break; + default: + assert(FALSE); + } return true; } diff --git a/src/pinyin.h b/src/pinyin.h index 1b2e5ea..6c45a26 100644 --- a/src/pinyin.h +++ b/src/pinyin.h @@ -228,16 +228,16 @@ bool pinyin_set_double_pinyin_scheme(pinyin_context_t * context, DoublePinyinScheme scheme); /** - * pinyin_set_chewing_scheme: + * pinyin_set_zhuyin_scheme: * @context: the pinyin context. - * @scheme: the chewing scheme. - * @returns: whether the set chewing scheme succeeded. + * @scheme: the zhuyin scheme. + * @returns: whether the set zhuyin scheme succeeded. * - * Change the chewing scheme of the pinyin context. + * Change the zhuyin scheme of the pinyin context. * */ -bool pinyin_set_chewing_scheme(pinyin_context_t * context, - ChewingScheme scheme); +bool pinyin_set_zhuyin_scheme(pinyin_context_t * context, + ZhuyinScheme scheme); /** * pinyin_fini: -- cgit