diff options
author | Peng Wu <alexepico@gmail.com> | 2010-10-09 15:05:09 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2010-10-09 15:05:09 +0800 |
commit | 6c9813e7e9afa18720912fa737cc21915756b84c (patch) | |
tree | da2c9f3050aec080859e569032525ed8389cade4 /src | |
parent | 08a4bfb28ff0690c4161b6744c6152a894db74e9 (diff) | |
download | libpinyin-6c9813e7e9afa18720912fa737cc21915756b84c.tar.gz libpinyin-6c9813e7e9afa18720912fa737cc21915756b84c.tar.xz libpinyin-6c9813e7e9afa18720912fa737cc21915756b84c.zip |
re-factor pinyin large table
Diffstat (limited to 'src')
-rw-r--r-- | src/storage/pinyin_large_table.cpp | 48 | ||||
-rwxr-xr-x | src/storage/pinyin_large_table.h | 39 |
2 files changed, 48 insertions, 39 deletions
diff --git a/src/storage/pinyin_large_table.cpp b/src/storage/pinyin_large_table.cpp index d24533c..0a1a8db 100644 --- a/src/storage/pinyin_large_table.cpp +++ b/src/storage/pinyin_large_table.cpp @@ -27,6 +27,54 @@ #include "pinyin_large_table.h" +/* class definition */ + +namespace novel{ + +class PinyinLengthIndexLevel{ +protected: + GArray* m_pinyin_array_indexes; +public: + PinyinLengthIndexLevel(); + ~PinyinLengthIndexLevel(); + bool load(MemoryChunk * chunk, table_offset_t offset, table_offset_t end); + bool store(MemoryChunk * new_chunk, table_offset_t offset, table_offset_t & end); + + /*search/add_index method */ + int search( int phrase_length, /* in */ PinyinCustomSettings * custom, + /* in */ PinyinKey keys[], + /* out */ PhraseIndexRanges ranges); + int add_index( int phrase_length, /* in */ PinyinKey keys[], /* in */ phrase_token_t token); + int remove_index( int phrase_length, /* in */ PinyinKey keys[], /* in */ phrase_token_t token); +}; + +template<size_t phrase_length> +class PinyinArrayIndexLevel{ +protected: + MemoryChunk m_chunk; + int convert(PinyinCustomSettings * custom, + PinyinKey keys[], + PinyinIndexItem<phrase_length> * begin, + PinyinIndexItem<phrase_length> * end, + PhraseIndexRanges ranges); +public: + bool load(MemoryChunk * chunk, table_offset_t offset, table_offset_t end); + bool store(MemoryChunk * new_chunk, table_offset_t offset, table_offset_t & end); + + /*search/add_index method */ + int search(/* in */ PinyinCustomSettings * custom, + /* in */ PinyinKey keys[], + /* out */ PhraseIndexRanges ranges); + int add_index(/* in */ PinyinKey keys[], /* in */ phrase_token_t token); + int remove_index(/* in */ PinyinKey keys[], /* in */ phrase_token_t token); +}; + +}; + +using namespace novel; + +/* class implementation */ + PinyinBitmapIndexLevel::PinyinBitmapIndexLevel(PinyinCustomSettings * custom) :m_custom(custom){ memset(m_pinyin_length_indexes, 0, sizeof(m_pinyin_length_indexes)); diff --git a/src/storage/pinyin_large_table.h b/src/storage/pinyin_large_table.h index b482657..6e8bb85 100755 --- a/src/storage/pinyin_large_table.h +++ b/src/storage/pinyin_large_table.h @@ -65,45 +65,6 @@ public: int remove_index( int phrase_length, /* in */ PinyinKey keys[], /* in */ phrase_token_t token); }; -class PinyinLengthIndexLevel{ -protected: - GArray* m_pinyin_array_indexes; -public: - PinyinLengthIndexLevel(); - ~PinyinLengthIndexLevel(); - bool load(MemoryChunk * chunk, table_offset_t offset, table_offset_t end); - bool store(MemoryChunk * new_chunk, table_offset_t offset, table_offset_t & end); - - /*search/add_index method */ - int search( int phrase_length, /* in */ PinyinCustomSettings * custom, - /* in */ PinyinKey keys[], - /* out */ PhraseIndexRanges ranges); - int add_index( int phrase_length, /* in */ PinyinKey keys[], /* in */ phrase_token_t token); - int remove_index( int phrase_length, /* in */ PinyinKey keys[], /* in */ phrase_token_t token); -}; - -template<size_t phrase_length> -class PinyinArrayIndexLevel{ -protected: - MemoryChunk m_chunk; - int convert(PinyinCustomSettings * custom, - PinyinKey keys[], - PinyinIndexItem<phrase_length> * begin, - PinyinIndexItem<phrase_length> * end, - PhraseIndexRanges ranges); -public: - bool load(MemoryChunk * chunk, table_offset_t offset, table_offset_t end); - bool store(MemoryChunk * new_chunk, table_offset_t offset, table_offset_t & end); - - /*search/add_index method */ - int search(/* in */ PinyinCustomSettings * custom, - /* in */ PinyinKey keys[], - /* out */ PhraseIndexRanges ranges); - int add_index(/* in */ PinyinKey keys[], /* in */ phrase_token_t token); - int remove_index(/* in */ PinyinKey keys[], /* in */ phrase_token_t token); -}; - - /* TODO: add file version check */ class PinyinLargeTable{ protected: |