summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-06-28 15:13:49 +0800
committerPeng Wu <alexepico@gmail.com>2012-06-28 15:13:49 +0800
commit433353d0063be4ea5527261bd403ad8bd06bd93e (patch)
treeeb95b50aee06579f9d4d816ffc504498b5bde600
parentba1cd11a6ccf5ff85aa3a5df6deffd5097f12898 (diff)
downloadlibpinyin-433353d0063be4ea5527261bd403ad8bd06bd93e.tar.gz
libpinyin-433353d0063be4ea5527261bd403ad8bd06bd93e.tar.xz
libpinyin-433353d0063be4ea5527261bd403ad8bd06bd93e.zip
update pinyin_get/choose_candidates
-rw-r--r--src/pinyin.cpp12
-rw-r--r--src/pinyin.h10
2 files changed, 13 insertions, 9 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp
index a907cd9..9c06e68 100644
--- a/src/pinyin.cpp
+++ b/src/pinyin.cpp
@@ -900,7 +900,7 @@ static void _compute_frequency_of_items(pinyin_context_t * context,
bool pinyin_get_candidates(pinyin_instance_t * instance,
size_t offset,
- TokenVector candidates) {
+ CandidateVector candidates) {
pinyin_context_t * & context = instance->m_context;
pinyin_option_t & options = context->m_options;
@@ -960,10 +960,10 @@ bool pinyin_get_candidates(pinyin_instance_t * instance,
g_array_sort(items, compare_item_with_frequency);
/* transfer back items to tokens, and save it into candidates */
- for (ssize_t k = 0; k < items->len; ++k) {
+ for (size_t k = 0; k < items->len; ++k) {
lookup_candidate_t * item = &g_array_index
(items, lookup_candidate_t, k);
- g_array_append_val(candidates, item->m_token);
+ g_array_append_val(candidates, *item);
}
if (!(retval & SEARCH_CONTINUED))
@@ -1353,9 +1353,13 @@ bool pinyin_get_full_pinyin_candidates(pinyin_instance_t * instance,
int pinyin_choose_candidate(pinyin_instance_t * instance,
size_t offset,
- phrase_token_t token){
+ lookup_candidate_t * candidate){
pinyin_context_t * & context = instance->m_context;
+ assert(NORMAL_CANDIDATE == candidate->m_candidate_type);
+
+ phrase_token_t token = candidate->m_token;
+
guint8 len = context->m_pinyin_lookup->add_constraint
(instance->m_constraints, offset, token);
diff --git a/src/pinyin.h b/src/pinyin.h
index a7d5c31..63464eb 100644
--- a/src/pinyin.h
+++ b/src/pinyin.h
@@ -362,7 +362,7 @@ bool pinyin_in_chewing_keyboard(pinyin_instance_t * instance,
* pinyin_get_candidates:
* @instance: the pinyin instance.
* @offset: the offset in the pinyin keys.
- * @candidates: The GArray of token candidates.
+ * @candidates: The GArray of lookup_candidate_t candidates.
* @returns: whether a list of tokens are gotten.
*
* Get the candidates at the offset.
@@ -370,7 +370,7 @@ bool pinyin_in_chewing_keyboard(pinyin_instance_t * instance,
*/
bool pinyin_get_candidates(pinyin_instance_t * instance,
size_t offset,
- TokenVector candidates);
+ CandidateVector candidates);
/**
* pinyin_get_full_pinyin_candidates:
@@ -390,7 +390,7 @@ bool pinyin_get_full_pinyin_candidates(pinyin_instance_t * instance,
* pinyin_choose_candidate:
* @instance: the pinyin instance.
* @offset: the offset in the pinyin keys.
- * @token: the selected candidate.
+ * @candidate: the selected candidate.
* @returns: the cursor after the chosen candidate.
*
* Choose an candidate at the offset.
@@ -398,13 +398,13 @@ bool pinyin_get_full_pinyin_candidates(pinyin_instance_t * instance,
*/
int pinyin_choose_candidate(pinyin_instance_t * instance,
size_t offset,
- phrase_token_t token);
+ lookup_candidate_t * candidate);
/**
* pinyin_choose_full_pinyin_candidate:
* @instance: the pinyin instance.
* @offset: the offset in the pinyin keys.
- * @candidate: the selected lookup_candidate_t candidate.
+ * @candidate: the selected candidate.
* @returns: the cursor after the chosen candidate.
*
* Choose a full pinyin candidate at the offset.