diff options
author | Peng Wu <alexepico@gmail.com> | 2011-09-08 18:16:27 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2011-09-08 18:16:27 +0800 |
commit | 72bd72e041428dd5c503d26a3feaad8eaa10a155 (patch) | |
tree | 4abd1c63b18a209b4ce32e66cb71f08252f59f07 /src | |
parent | 03838c2f47ab836302e7d7aa85cc37e093fdbb45 (diff) | |
download | libpinyin-72bd72e041428dd5c503d26a3feaad8eaa10a155.tar.gz libpinyin-72bd72e041428dd5c503d26a3feaad8eaa10a155.tar.xz libpinyin-72bd72e041428dd5c503d26a3feaad8eaa10a155.zip |
begin to polish pinyin public api
Diffstat (limited to 'src')
-rw-r--r-- | src/pinyin.cpp | 39 | ||||
-rw-r--r-- | src/pinyin.h | 20 |
2 files changed, 39 insertions, 20 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp index 8ff947f..afe359a 100644 --- a/src/pinyin.cpp +++ b/src/pinyin.cpp @@ -103,11 +103,11 @@ void pinyin_fini(pinyin_context_t * context){ delete context; } -bool pinyin_alloc_auxiliary_arrays(pinyin_context_t * context, - PinyinKeyVector * pinyin_keys, - PinyinKeyPosVector * pinyin_poses, - CandidateConstraints * constraints, - MatchResults * match_results){ +static bool pinyin_alloc_auxiliary_arrays(pinyin_context_t * context, + PinyinKeyVector * pinyin_keys, + PinyinKeyPosVector * pinyin_poses, + CandidateConstraints * constraints, + MatchResults * match_results){ *pinyin_keys = g_array_new(FALSE, FALSE, sizeof(PinyinKey)); *pinyin_poses = g_array_new(FALSE, FALSE, sizeof(PinyinKeyPos)); @@ -117,11 +117,11 @@ bool pinyin_alloc_auxiliary_arrays(pinyin_context_t * context, return true; } -bool pinyin_free_auxiliary_arrays(pinyin_context_t * context, - PinyinKeyVector * pinyin_keys, - PinyinKeyPosVector * pinyin_poses, - CandidateConstraints * constraints, - MatchResults * match_results){ +static bool pinyin_free_auxiliary_arrays(pinyin_context_t * context, + PinyinKeyVector * pinyin_keys, + PinyinKeyPosVector * pinyin_poses, + CandidateConstraints * constraints, + MatchResults * match_results){ g_array_free(*pinyin_keys, TRUE); *pinyin_keys = NULL; g_array_free(*pinyin_poses, TRUE); @@ -134,6 +134,25 @@ bool pinyin_free_auxiliary_arrays(pinyin_context_t * context, return true; } +pinyin_instance_t * pinyin_get_instance(pinyin_context_t * context){ + pinyin_instance_t * instance = new pinyin_instance_t; + instance->m_context = context; + pinyin_alloc_auxiliary_arrays + (instance->m_context, &(instance->m_pinyin_keys), + &(instance->m_pinyin_poses), + &(instance->m_constraints), + &(instance->m_match_results)); + return instance; +} + +void pinyin_release_instance(pinyin_instance_t * instance){ + pinyin_free_auxiliary_arrays + (instance->m_context, &(instance->m_pinyin_keys), + &(instance->m_pinyin_poses), + &(instance->m_constraints), + &(instance->m_match_results)); + delete instance; +} /* copy from custom to context->m_custom. */ bool pinyin_set_options(pinyin_context_t * context, diff --git a/src/pinyin.h b/src/pinyin.h index dae5e55..45fa9fd 100644 --- a/src/pinyin.h +++ b/src/pinyin.h @@ -34,19 +34,19 @@ extern "C" { typedef struct _pinyin_context_t pinyin_context_t; +typedef struct { + pinyin_context_t * m_context; + PinyinKeyVector m_pinyin_keys; + PinyinKeyPosVector m_pinyin_poses; + CandidateConstraints m_constraints; + MatchResults m_match_results; +} pinyin_instance_t; + pinyin_context_t * pinyin_init(const char * systemdir, const char * userdir); void pinyin_fini(pinyin_context_t * context); -bool pinyin_alloc_auxiliary_arrays(pinyin_context_t * context, - PinyinKeyVector * pinyin_keys, - PinyinKeyPosVector * pinyin_poses, - CandidateConstraints * constraints, - MatchResults * match_results); -bool pinyin_free_auxiliary_arrays(pinyin_context_t * context, - PinyinKeyVector * pinyin_keys, - PinyinKeyPosVector * pinyin_poses, - CandidateConstraints * constraints, - MatchResults * match_results); +pinyin_instance_t * pinyin_get_instance(pinyin_context_t * context); +void pinyin_release_instance(pinyin_instance_t * instance); bool pinyin_set_options(pinyin_context_t * context, PinyinCustomSettings * custom); |