diff options
author | Peng Wu <alexepico@gmail.com> | 2011-11-14 16:33:51 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2011-11-14 16:33:51 +0800 |
commit | 9f8dc17faa2286c55cc39f39661b0e6f6cb78873 (patch) | |
tree | 2dadcfb867d8f12a72c09689994ec9a5cd89bf39 /src | |
parent | f42e1536efb4b396a53c50162a67cd35cd22f8f6 (diff) | |
download | libpinyin-9f8dc17faa2286c55cc39f39661b0e6f6cb78873.tar.gz libpinyin-9f8dc17faa2286c55cc39f39661b0e6f6cb78873.tar.xz libpinyin-9f8dc17faa2286c55cc39f39661b0e6f6cb78873.zip |
add pinyin/chewing check options
Diffstat (limited to 'src')
-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; +} |