summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2016-03-03 17:25:20 +0800
committerPeng Wu <alexepico@gmail.com>2016-03-03 17:25:20 +0800
commita7efd29de74fcef6667c3e2c1695c39b3a48c477 (patch)
tree09485384ecea2eee11ece91d7b522a8324ec89d3 /src
parent5dd5415a7d170a2cdb01e17480a5fec622afa747 (diff)
downloadlibpinyin-a7efd29de74fcef6667c3e2c1695c39b3a48c477.tar.gz
libpinyin-a7efd29de74fcef6667c3e2c1695c39b3a48c477.tar.xz
libpinyin-a7efd29de74fcef6667c3e2c1695c39b3a48c477.zip
use class CopyVisitor
Diffstat (limited to 'src')
-rw-r--r--src/storage/ngram_kyotodb.cpp20
-rw-r--r--src/storage/phrase_large_table3_kyotodb.cpp31
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();