add set scheme for double pinyin parser2
authorPeng Wu <alexepico@gmail.com>
Tue, 22 Nov 2011 07:46:35 +0000 (15:46 +0800)
committerPeng Wu <alexepico@gmail.com>
Tue, 22 Nov 2011 07:46:35 +0000 (15:46 +0800)
src/storage/pinyin_parser2.cpp
src/storage/pinyin_parser2.h

index 5524e69..1c30c14 100644 (file)
@@ -416,3 +416,37 @@ int DoublePinyinParser2::parse (guint32 options, ChewingKeyVector & keys,
                                 const char *str, int len) const{
     assert(FALSE);
 }
+
+bool DoublePinyinParser2::set_scheme(DoublePinyinScheme scheme) {
+
+    switch (scheme) {
+    case DOUBLE_PINYIN_ZRM:
+        m_shengmu_table = double_pinyin_zrm_sheng;
+        m_yunmu_table   = double_pinyin_zrm_yun;
+        return true;
+    case DOUBLE_PINYIN_MS:
+        m_shengmu_table = double_pinyin_mspy_sheng;
+        m_yunmu_table   = double_pinyin_mspy_yun;
+        return true;
+    case DOUBLE_PINYIN_ZIGUANG:
+        m_shengmu_table = double_pinyin_zgpy_sheng;
+        m_yunmu_table   = double_pinyin_zgpy_yun;
+        return true;
+    case DOUBLE_PINYIN_ABC:
+        m_shengmu_table = double_pinyin_abc_sheng;
+        m_yunmu_table   = double_pinyin_abc_yun;
+        return true;
+    case DOUBLE_PINYIN_PYJJ:
+        m_shengmu_table = double_pinyin_pyjj_sheng;
+        m_yunmu_table   = double_pinyin_pyjj_yun;
+        return true;
+    case DOUBLE_PINYIN_XHE:
+        m_shengmu_table = double_pinyin_xhe_sheng;
+        m_yunmu_table   = double_pinyin_xhe_yun;
+        return true;
+    case DOUBLE_PINYIN_CUSTOMIZED:
+        assert(FALSE);
+    };
+
+    return false; /* no such scheme. */
+}
index 4d71538..ad16113 100644 (file)
@@ -153,8 +153,8 @@ class DoublePinyinParser2 : public PinyinParser2
 {
     /* Note: two internal pointers to double pinyin scheme table. */
 protected:
-    double_pinyin_scheme_shengmu_item_t * m_shengmu_table;
-    double_pinyin_scheme_yunmu_item_t   * m_yunmu_table;
+    const double_pinyin_scheme_shengmu_item_t * m_shengmu_table;
+    const double_pinyin_scheme_yunmu_item_t   * m_yunmu_table;
 
 public:
     DoublePinyinParser2() {