diff options
-rw-r--r-- | src/storage/pinyin_custom2.h | 7 | ||||
-rw-r--r-- | src/storage/pinyin_parser2.cpp | 39 |
2 files changed, 42 insertions, 4 deletions
diff --git a/src/storage/pinyin_custom2.h b/src/storage/pinyin_custom2.h index 721d43a..52f093b 100644 --- a/src/storage/pinyin_custom2.h +++ b/src/storage/pinyin_custom2.h @@ -29,10 +29,9 @@ enum PinyinTableFlag{ IS_PINYIN = 1U << 2, PINYIN_INCOMPLETE = 1U << 3, CHEWING_INCOMPLETE = 1U << 4, - USE_INCOMPLETE = 1U << 5, - USE_TONE = 1U << 6, - USE_DIVIDED_TABLE = 1U << 7, - USE_RESPLIT_TABLE = 1U << 8 + USE_TONE = 1U << 5, + USE_DIVIDED_TABLE = 1U << 6, + USE_RESPLIT_TABLE = 1U << 7 }; /** diff --git a/src/storage/pinyin_parser2.cpp b/src/storage/pinyin_parser2.cpp index 0d68235..6885812 100644 --- a/src/storage/pinyin_parser2.cpp +++ b/src/storage/pinyin_parser2.cpp @@ -19,7 +19,46 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include <assert.h> #include "pinyin_custom2.h" #include "chewing_key.h" #include "pinyin_parser2.h" #include "pinyin_parser_table.h" + + +using namespace pinyin; + +bool check_pinyin_options(guint32 options, pinyin_index_item_t * item) { + guint32 flags = item->m_flags; + assert (flags & IS_PINYIN); + + /* handle incomplete pinyin. */ + if (flags & PINYIN_INCOMPLETE) { + if (!(options & PINYIN_INCOMPLETE)) + return false; + } + + /* handle correct pinyin, currently only one flag per item. */ + flags &= PINYIN_CORRECT_ALL; + options &= PINYIN_CORRECT_ALL; + + if (flags) { + if ((flags & options) != flags) + return false; + } + + return true; +} + +bool check_chewing_options(guint32 options, chewing_index_item_t * item) { + guint32 flags = item->m_flags; + assert (flags & IS_CHEWING); + + /* handle incomplete chewing. */ + if (flags & CHEWING_INCOMPLETE) { + if (!(options & CHEWING_INCOMPLETE)) + return false; + } + + return true; +} |