add get_shengmu/yunmu_string
[platform/upstream/libpinyin.git] / src / storage / facade_chewing_table.h
index 4a6ed3b..572ce04 100644 (file)
@@ -39,6 +39,17 @@ private:
     ChewingLargeTable * m_system_chewing_table;
     ChewingLargeTable * m_user_chewing_table;
 
+    void reset() {
+        if (m_system_chewing_table) {
+            delete m_system_chewing_table;
+            m_system_chewing_table = NULL;
+        }
+
+        if (m_user_chewing_table) {
+            delete m_user_chewing_table;
+            m_user_chewing_table = NULL;
+        }
+    }
 public:
     /**
      * FacadeChewingTable::FacadeChewingTable:
@@ -52,9 +63,19 @@ public:
     }
 
     /**
+     * FacadeChewingTable::~FacadeChewingTable:
+     *
+     * The destructor of the FacadeChewingTable.
+     *
+     */
+    ~FacadeChewingTable() {
+        reset();
+    }
+
+    /**
      * FacadeChewingTable::set_options:
      * @options: the pinyin options.
-     * @returns: whether the setting options is successfully.
+     * @returns: whether the setting options is successful.
      *
      * Set the options of the system and user chewing table.
      *
@@ -80,6 +101,8 @@ public:
      */
     bool load(pinyin_option_t options, MemoryChunk * system,
               MemoryChunk * user){
+        reset();
+
         bool result = false;
         if (system) {
             m_system_chewing_table = new ChewingLargeTable(options);
@@ -143,7 +166,7 @@ public:
      * @phrase_length: the length of the phrase to be added.
      * @keys: the pinyin keys of the phrase to be added.
      * @token: the token of the phrase to be added.
-     * @returns: the add result of enum AddIndexResult.
+     * @returns: the add result of enum ErrorResult.
      *
      * Add the phrase token to the user chewing table.
      *
@@ -151,7 +174,7 @@ public:
     int add_index(int phrase_length, /* in */ ChewingKey keys[],
                   /* in */ phrase_token_t token) {
         if (NULL == m_user_chewing_table)
-            return false;
+            return ERROR_NO_USER_TABLE;
         return m_user_chewing_table->add_index(phrase_length, keys, token);
     }
 
@@ -160,7 +183,7 @@ public:
      * @phrase_length: the length of the phrase to be removed.
      * @keys: the pinyin keys of the phrase to be removed.
      * @token: the token of the phrase to be removed.
-     * @returns: the remove result of enum RemoveIndexResult.
+     * @returns: the remove result of enum ErrorResult.
      *
      * Remove the phrase token from the user chewing table.
      *
@@ -168,9 +191,24 @@ public:
     int remove_index(int phrase_length, /* in */ ChewingKey keys[],
                      /* in */ phrase_token_t token) {
         if (NULL == m_user_chewing_table)
-            return false;
+            return ERROR_NO_USER_TABLE;
         return m_user_chewing_table->remove_index(phrase_length, keys, token);
     }
+
+    /**
+     * FacadeChewingTable::mask_out:
+     * @mask: the mask.
+     * @value: the value.
+     * @returns: whether the mask out operation is successful.
+     *
+     * Mask out the matched chewing index.
+     *
+     */
+    bool mask_out(phrase_token_t mask, phrase_token_t value) {
+        if (NULL == m_user_chewing_table)
+            return false;
+        return m_user_chewing_table->mask_out(mask, value);
+    }
 };
 
 };