summaryrefslogtreecommitdiffstats
path: root/src/pinyin.cpp
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2013-03-21 15:39:45 +0800
committerPeng Wu <alexepico@gmail.com>2013-03-21 16:01:53 +0800
commit9a0fa3e39b7efb2e965243cf81a1ed86f6cb12b6 (patch)
tree6d91a78fa5507ff1bbea63f900be6f40098aaa30 /src/pinyin.cpp
parentffe1467bae65ee5dbf863070f3765559a8bb8a12 (diff)
downloadlibpinyin-9a0fa3e39b7efb2e965243cf81a1ed86f6cb12b6.tar.gz
libpinyin-9a0fa3e39b7efb2e965243cf81a1ed86f6cb12b6.tar.xz
libpinyin-9a0fa3e39b7efb2e965243cf81a1ed86f6cb12b6.zip
write candidates methods
Diffstat (limited to 'src/pinyin.cpp')
-rw-r--r--src/pinyin.cpp50
1 files changed, 43 insertions, 7 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp
index 7c8116b..21ea69c 100644
--- a/src/pinyin.cpp
+++ b/src/pinyin.cpp
@@ -65,7 +65,7 @@ struct _pinyin_instance_t{
};
struct _lookup_candidate_t{
- enum lookup_candidate_type_t m_candidate_type;
+ lookup_candidate_type_t m_candidate_type;
gchar * m_phrase_string;
phrase_token_t m_token;
ChewingKeyRest m_orig_rest;
@@ -1907,16 +1907,52 @@ bool pinyin_token_add_unigram_frequency(pinyin_instance_t * instance,
return ERROR_OK == retval;
}
-size_t pinyin_get_n_candidate(pinyin_instance_t * instance){
- return instance->m_candidates->len;
+bool pinyin_get_n_candidate(pinyin_instance_t * instance,
+ guint * num) {
+ *num = instance->m_candidates->len;
+ return true;
+}
+
+bool pinyin_get_candidate(pinyin_instance_t * instance,
+ guint index,
+ lookup_candidate_t ** candidate) {
+ CandidateVector & candidates = instance->m_candidates;
+
+ *candidate = NULL;
+
+ if (index >= candidates->len)
+ return false;
+
+ *candidate = &g_array_index(candidates, lookup_candidate_t, index);
+
+ return true;
}
-size_t pinyin_get_n_pinyin(pinyin_instance_t * instance){
- assert (instance->m_pinyin_keys->len ==
- instance->m_pinyin_key_rests->len);
- return instance->m_pinyin_keys->len;
+bool pinyin_get_candidate_type(pinyin_instance_t * instance,
+ lookup_candidate_t * candidate,
+ lookup_candidate_type_t * type) {
+ *type = candidate->m_candidate_type;
+ return true;
}
+bool pinyin_get_candidate_string(pinyin_instance_t * instance,
+ lookup_candidate_t * candidate,
+ const gchar ** utf8_str) {
+ *utf8_str = candidate->m_phrase_string;
+ return true;
+}
+
+bool pinyin_get_n_pinyin(pinyin_instance_t * instance,
+ guint * num) {
+ *num = 0;
+
+ if (instance->m_pinyin_keys->len !=
+ instance->m_pinyin_key_rests->len)
+ return false;
+
+ *num = instance->m_pinyin_keys->len;
+ return true;
+}
/**
* Note: prefix is the text before the pre-edit string.