diff options
Diffstat (limited to 'src/storage/phrase_large_table3_kyotodb.cpp')
-rw-r--r-- | src/storage/phrase_large_table3_kyotodb.cpp | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/src/storage/phrase_large_table3_kyotodb.cpp b/src/storage/phrase_large_table3_kyotodb.cpp index fa427dc..a02eac3 100644 --- a/src/storage/phrase_large_table3_kyotodb.cpp +++ b/src/storage/phrase_large_table3_kyotodb.cpp @@ -262,32 +262,20 @@ public: vbuf = (char *) m_entry.m_chunk.begin(); vsiz = m_entry.m_chunk.size(); - assert(m_db->set(kbuf, ksiz, vbuf, vsiz)); - return NOP; + *sp = vsiz; + return vbuf; } virtual const char* visit_empty(const char* kbuf, size_t ksiz, size_t* sp) { - m_db->set(kbuf, ksiz, empty_vbuf, 0); return NOP; } }; /* mask out method */ -/* assume it is in-memory dbm. */ bool PhraseLargeTable3::mask_out(phrase_token_t mask, phrase_token_t value) { - /* use copy and sweep algorithm here. */ - BasicDB * tmp_db = new ProtoTreeDB; - if (!tmp_db->open("-", BasicDB::OREADER|BasicDB::OWRITER|BasicDB::OCREATE)) - return false; - - MaskOutVisitor visitor(tmp_db, mask, value); - m_db->iterate(&visitor, false); - - reset(); - - m_db = tmp_db; - m_entry = new PhraseTableEntry; + MaskOutVisitor visitor(m_db, mask, value); + m_db->iterate(&visitor, true); return true; } |