summaryrefslogtreecommitdiffstats
path: root/src/pinyin.cpp
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-06-18 14:59:32 +0800
committerPeng Wu <alexepico@gmail.com>2012-06-18 14:59:32 +0800
commit9d004b33d8fe47ae290c97e08785155d061784fd (patch)
treeda73b71830f38b772cd2efd1adcf99e930c7cc55 /src/pinyin.cpp
parent4c42f29cb8863cc5d6810a8a2a25c478e16292f7 (diff)
downloadlibpinyin-9d004b33d8fe47ae290c97e08785155d061784fd.tar.gz
libpinyin-9d004b33d8fe47ae290c97e08785155d061784fd.tar.xz
libpinyin-9d004b33d8fe47ae290c97e08785155d061784fd.zip
begin to write multiple phrase library support
Diffstat (limited to 'src/pinyin.cpp')
-rw-r--r--src/pinyin.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp
index baf64ea..cbbd2f3 100644
--- a/src/pinyin.cpp
+++ b/src/pinyin.cpp
@@ -47,6 +47,8 @@ struct _pinyin_context_t{
char * m_system_dir;
char * m_user_dir;
bool m_modified;
+
+ gchar * m_phrase_indices[PHRASE_INDEX_LIBRARY_COUNT];
};
@@ -106,6 +108,9 @@ pinyin_context_t * pinyin_init(const char * systemdir, const char * userdir){
context->m_user_dir = g_strdup(userdir);
context->m_modified = false;
+ memset(context->m_phrase_indices, 0,
+ sizeof(context->m_phrase_indices));
+
check_format(context->m_user_dir);
context->m_pinyin_table = new FacadeChewingTable;
@@ -135,6 +140,8 @@ pinyin_context_t * pinyin_init(const char * systemdir, const char * userdir){
context->m_phrase_table->load(chunk, NULL);
context->m_phrase_index = new FacadePhraseIndex;
+
+ context->m_phrase_indices[1] = g_strdup("gb_char.bin");
MemoryChunk * log = new MemoryChunk; chunk = new MemoryChunk;
filename = g_build_filename(context->m_system_dir, "gb_char.bin", NULL);
if (!chunk->load(filename)) {
@@ -148,6 +155,7 @@ pinyin_context_t * pinyin_init(const char * systemdir, const char * userdir){
g_free(filename);
context->m_phrase_index->merge(1, log);
+ context->m_phrase_indices[2] = g_strdup("gbk_char.bin");
log = new MemoryChunk; chunk = new MemoryChunk;
filename = g_build_filename(context->m_system_dir, "gbk_char.bin", NULL);
if (!chunk->load(filename)) {
@@ -272,6 +280,9 @@ void pinyin_fini(pinyin_context_t * context){
g_free(context->m_user_dir);
context->m_modified = false;
+ g_free(context->m_phrase_indices[1]);
+ g_free(context->m_phrase_indices[2]);
+
delete context;
}