diff options
author | Peng Wu <alexepico@gmail.com> | 2016-01-25 15:21:29 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2016-01-25 15:21:29 +0800 |
commit | 9235edee9e310c02f80d96710809dd0e8ee4ced5 (patch) | |
tree | 76cdc5a7eabf0ff609c47e4e0525c18eaddba002 /src/storage | |
parent | fa4854d1ef818aec6457698f2cf503147c039dbd (diff) | |
download | libpinyin-9235edee9e310c02f80d96710809dd0e8ee4ced5.tar.gz libpinyin-9235edee9e310c02f80d96710809dd0e8ee4ced5.tar.xz libpinyin-9235edee9e310c02f80d96710809dd0e8ee4ced5.zip |
write PhraseTableEntry::remove_index method
Diffstat (limited to 'src/storage')
-rw-r--r-- | src/storage/phrase_large_table3.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/storage/phrase_large_table3.cpp b/src/storage/phrase_large_table3.cpp index 27b8706..6587b75 100644 --- a/src/storage/phrase_large_table3.cpp +++ b/src/storage/phrase_large_table3.cpp @@ -69,6 +69,7 @@ int PhraseTableEntry::search(/* out */ PhraseTokens tokens) const { } /* add_index/remove_index method */ + int PhraseTableEntry::add_index(/* in */ phrase_token_t token) { const char * content = (char *) m_chunk.begin() + sizeof(table_entry_header_t); @@ -89,9 +90,29 @@ int PhraseTableEntry::add_index(/* in */ phrase_token_t token) { return ERROR_OK; } +int PhraseTableEntry::remove_index(/* in */ phrase_token_t token) { + const char * content = (char *) m_chunk.begin() + + sizeof(table_entry_header_t); + const phrase_token_t * begin = (phrase_token_t *) content; + const phrase_token_t * end = (phrase_token_t *) m_chunk.end(); + const phrase_token_t * cur_token; + for (cur_token = begin; cur_token != end; ++cur_token) { + if (*cur_token == token) + break; + } + + if (cur_token == end) + return ERROR_REMOVE_ITEM_DONOT_EXISTS; + + int offset = sizeof(table_entry_header_t) /* header */ + + (cur_token - begin) * sizeof(phrase_token_t); + m_chunk.remove_content(offset, sizeof(phrase_token_t)); + return ERROR_OK; +} /* get length method */ + int PhraseTableEntry::get_length() const { const char * content = (char *) m_chunk.begin() + sizeof(table_entry_header_t); |