diff options
| author | Peng Wu <alexepico@gmail.com> | 2016-03-03 17:25:20 +0800 |
|---|---|---|
| committer | Peng Wu <alexepico@gmail.com> | 2016-03-03 17:25:20 +0800 |
| commit | a7efd29de74fcef6667c3e2c1695c39b3a48c477 (patch) | |
| tree | 09485384ecea2eee11ece91d7b522a8324ec89d3 /src | |
| parent | 5dd5415a7d170a2cdb01e17480a5fec622afa747 (diff) | |
| download | libpinyin-a7efd29de74fcef6667c3e2c1695c39b3a48c477.tar.gz libpinyin-a7efd29de74fcef6667c3e2c1695c39b3a48c477.tar.xz libpinyin-a7efd29de74fcef6667c3e2c1695c39b3a48c477.zip | |
use class CopyVisitor
Diffstat (limited to 'src')
| -rw-r--r-- | src/storage/ngram_kyotodb.cpp | 20 | ||||
| -rw-r--r-- | src/storage/phrase_large_table3_kyotodb.cpp | 31 |
2 files changed, 2 insertions, 49 deletions
diff --git a/src/storage/ngram_kyotodb.cpp b/src/storage/ngram_kyotodb.cpp index 60f7997..2bc297f 100644 --- a/src/storage/ngram_kyotodb.cpp +++ b/src/storage/ngram_kyotodb.cpp @@ -50,26 +50,6 @@ void Bigram::reset(){ } } -class CopyVisitor : public DB::Visitor { -private: - BasicDB * m_db; -public: - CopyVisitor(BasicDB * db) { - m_db = db; - } - - virtual const char* visit_full(const char* kbuf, size_t ksiz, - const char* vbuf, size_t vsiz, size_t* sp) { - m_db->set(kbuf, ksiz, vbuf, vsiz); - return NOP; - } - - virtual const char* visit_empty(const char* kbuf, size_t ksiz, size_t* sp) { - /* assume no empty record. */ - assert (FALSE); - return NOP; - } -}; /* Use ProtoHashDB for load_db/save_db methods. */ bool Bigram::load_db(const char * dbfile){ diff --git a/src/storage/phrase_large_table3_kyotodb.cpp b/src/storage/phrase_large_table3_kyotodb.cpp index e78f08e..66ac5f4 100644 --- a/src/storage/phrase_large_table3_kyotodb.cpp +++ b/src/storage/phrase_large_table3_kyotodb.cpp @@ -67,33 +67,6 @@ bool PhraseLargeTable3::attach(const char * dbfile, guint32 flags) { return m_db->open(dbfile, mode); } - -/* Use DB::visitor. */ - -/* Kyoto Cabinet requires non-NULL pointer for zero length value. */ -static const char * empty_vbuf = (char *)UINTPTR_MAX; - -/* Use CopyVisitor2 to avoid linking problems. */ -class CopyVisitor2 : public DB::Visitor { -private: - BasicDB * m_db; -public: - CopyVisitor2(BasicDB * db) { - m_db = db; - } - - virtual const char* visit_full(const char* kbuf, size_t ksiz, - const char* vbuf, size_t vsiz, size_t* sp) { - m_db->set(kbuf, ksiz, vbuf, vsiz); - return NOP; - } - - virtual const char* visit_empty(const char* kbuf, size_t ksiz, size_t* sp) { - m_db->set(kbuf, ksiz, empty_vbuf, 0); - return NOP; - } -}; - /* load_db/store_db method */ /* use in-memory DBM here, for better performance. */ bool PhraseLargeTable3::load_db(const char * filename) { @@ -110,7 +83,7 @@ bool PhraseLargeTable3::load_db(const char * filename) { if (!tmp_db->open(filename, BasicDB::OREADER)) return false; - CopyVisitor2 visitor(m_db); + CopyVisitor visitor(m_db); tmp_db->iterate(&visitor, false); tmp_db->close(); @@ -130,7 +103,7 @@ bool PhraseLargeTable3::store_db(const char * new_filename){ if (!tmp_db->open(new_filename, BasicDB::OWRITER|BasicDB::OCREATE)) return false; - CopyVisitor2 visitor(tmp_db); + CopyVisitor visitor(tmp_db); m_db->iterate(&visitor, false); tmp_db->synchronize(); |
