summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-05-21 14:56:50 +0800
committerPeng Wu <alexepico@gmail.com>2012-05-21 14:56:50 +0800
commit34de36eabbc3baac56885e01fa2ec79ba7fb5cc6 (patch)
treea02d1f43a569cfbbf9b201a41451a1436266c234
parent931df7d5a0924cde0c5b249b5f82a8d5bf9039b5 (diff)
downloadlibpinyin-34de36eabbc3baac56885e01fa2ec79ba7fb5cc6.tar.gz
libpinyin-34de36eabbc3baac56885e01fa2ec79ba7fb5cc6.tar.xz
libpinyin-34de36eabbc3baac56885e01fa2ec79ba7fb5cc6.zip
write save_phrase_index
-rw-r--r--utils/storage/gen_binary_files.cpp11
-rw-r--r--utils/storage/import_interpolation.cpp11
-rw-r--r--utils/training/gen_ngram.cpp11
-rw-r--r--utils/training/gen_unigram.cpp11
-rw-r--r--utils/utils_helper.h21
5 files changed, 28 insertions, 37 deletions
diff --git a/utils/storage/gen_binary_files.cpp b/utils/storage/gen_binary_files.cpp
index 4519064..eeed911 100644
--- a/utils/storage/gen_binary_files.cpp
+++ b/utils/storage/gen_binary_files.cpp
@@ -98,15 +98,8 @@ int main(int argc, char * argv[]){
phrase_index.compat();
- new_chunk = new MemoryChunk;
- phrase_index.store(1, new_chunk);
- new_chunk->save("gb_char.bin");
- phrase_index.load(1, new_chunk);
+ if (!save_phrase_index(&phrase_index))
+ exit(ENOENT);
- new_chunk = new MemoryChunk;
- phrase_index.store(2, new_chunk);
- new_chunk->save("gbk_char.bin");
- phrase_index.load(2, new_chunk);
-
return 0;
}
diff --git a/utils/storage/import_interpolation.cpp b/utils/storage/import_interpolation.cpp
index 9d8f4bd..5325b95 100644
--- a/utils/storage/import_interpolation.cpp
+++ b/utils/storage/import_interpolation.cpp
@@ -251,15 +251,8 @@ int main(int argc, char * argv[]){
taglib_fini();
- chunk = new MemoryChunk;
- phrase_index.store(1, chunk);
- chunk->save("gb_char.bin");
- phrase_index.load(1, chunk);
-
- chunk = new MemoryChunk;
- phrase_index.store(2, chunk);
- chunk->save("gbk_char.bin");
- phrase_index.load(2, chunk);
+ if (!save_phrase_index(&phrase_index))
+ exit(ENOENT);
return 0;
}
diff --git a/utils/training/gen_ngram.cpp b/utils/training/gen_ngram.cpp
index 5721ce7..20b160c 100644
--- a/utils/training/gen_ngram.cpp
+++ b/utils/training/gen_ngram.cpp
@@ -130,15 +130,8 @@ int main(int argc, char * argv[]){
free(linebuf);
- MemoryChunk * new_chunk = new MemoryChunk;
- phrase_index.store(1, new_chunk);
- new_chunk->save("gb_char.bin");
- phrase_index.load(1, new_chunk);
-
- new_chunk = new MemoryChunk;
- phrase_index.store(2, new_chunk);
- new_chunk->save("gbk_char.bin");
- phrase_index.load(2, new_chunk);
+ if (!save_phrase_index(&phrase_index))
+ exit(ENOENT);
return 0;
}
diff --git a/utils/training/gen_unigram.cpp b/utils/training/gen_unigram.cpp
index 470a60a..f94c214 100644
--- a/utils/training/gen_unigram.cpp
+++ b/utils/training/gen_unigram.cpp
@@ -52,15 +52,8 @@ int main(int argc, char * argv[]){
}
#endif
- MemoryChunk * new_chunk = new MemoryChunk;
- phrase_index.store(1, new_chunk);
- new_chunk->save("gb_char.bin");
- phrase_index.load(1, new_chunk);
-
- new_chunk = new MemoryChunk;
- phrase_index.store(2, new_chunk);
- new_chunk->save("gbk_char.bin");
- phrase_index.load(2, new_chunk);
+ if (!save_phrase_index(&phrase_index))
+ exit(ENOENT);
return 0;
}
diff --git a/utils/utils_helper.h b/utils/utils_helper.h
index 59286db..2f143c9 100644
--- a/utils/utils_helper.h
+++ b/utils/utils_helper.h
@@ -33,7 +33,7 @@ static bool load_phrase_index(FacadePhraseIndex * phrase_index) {
chunk = new MemoryChunk;
bool retval = chunk->load(bin_file);
if (!retval) {
- fprintf(stderr, "open %s failed!\n", bin_file);
+ fprintf(stderr, "load %s failed!\n", bin_file);
return false;
}
@@ -42,5 +42,24 @@ static bool load_phrase_index(FacadePhraseIndex * phrase_index) {
return true;
}
+static bool save_phrase_index(FacadePhraseIndex * phrase_index) {
+ MemoryChunk * new_chunk = NULL;
+ for (size_t i = 0; i < PHRASE_INDEX_LIBRARY_COUNT; ++i) {
+ const char * bin_file = pinyin_phrase_files[i];
+ if (NULL == bin_file)
+ continue;
+
+ new_chunk = new MemoryChunk;
+ phrase_index->store(i, new_chunk);
+ bool retval = new_chunk->save(bin_file);
+ if (!retval) {
+ fprintf(stderr, "save %s failed.", bin_file);
+ return false;
+ }
+
+ phrase_index->load(i, new_chunk);
+ }
+ return true;
+}
#endif