summaryrefslogtreecommitdiffstats
path: root/src/pinyin.cpp
diff options
context:
space:
mode:
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.