summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2011-10-11 11:03:10 +0800
committerPeng Wu <alexepico@gmail.com>2011-10-11 11:03:10 +0800
commit84b8ecaf7b1c016b304015788e5ded68abc0d7db (patch)
treec3e74a9428ddadd2810c6384c8c1d73ba8f18b9a
parente478deb3365e6b46bfde473ff0c09d47ac89cc45 (diff)
downloadlibpinyin-84b8ecaf7b1c016b304015788e5ded68abc0d7db.tar.gz
libpinyin-84b8ecaf7b1c016b304015788e5ded68abc0d7db.tar.xz
libpinyin-84b8ecaf7b1c016b304015788e5ded68abc0d7db.zip
re-factor choose candidate
-rw-r--r--src/lookup/pinyin_lookup.cpp8
-rw-r--r--src/lookup/pinyin_lookup.h2
-rw-r--r--src/pinyin.cpp14
-rw-r--r--src/pinyin.h6
4 files changed, 15 insertions, 15 deletions
diff --git a/src/lookup/pinyin_lookup.cpp b/src/lookup/pinyin_lookup.cpp
index 4e67c49..2e6408d 100644
--- a/src/lookup/pinyin_lookup.cpp
+++ b/src/lookup/pinyin_lookup.cpp
@@ -494,13 +494,13 @@ bool PinyinLookup::train_result(PinyinKeyVector keys, CandidateConstraints const
return true;
}
-bool PinyinLookup::add_constraint(CandidateConstraints constraints, size_t index, phrase_token_t token){
+guint8 PinyinLookup::add_constraint(CandidateConstraints constraints, size_t index, phrase_token_t token){
if ( m_phrase_index->get_phrase_item(token, m_cache_phrase_item) )
- return false;
+ return 0;
size_t phrase_length = m_cache_phrase_item.get_phrase_length();
if ( index + phrase_length > constraints->len )
- return false;
+ return 0;
for ( size_t i = index; i < index + phrase_length ; ++i ){
clear_constraint(constraints, i);
@@ -515,7 +515,7 @@ bool PinyinLookup::add_constraint(CandidateConstraints constraints, size_t index
constraint->m_type = CONSTRAINT_NOSEARCH;
constraint->m_constraint_step = index;
}
- return true;
+ return phrase_length;
}
bool PinyinLookup::clear_constraint(CandidateConstraints constraints, size_t index){
diff --git a/src/lookup/pinyin_lookup.h b/src/lookup/pinyin_lookup.h
index 47cc4a9..7bc206d 100644
--- a/src/lookup/pinyin_lookup.h
+++ b/src/lookup/pinyin_lookup.h
@@ -134,7 +134,7 @@ public:
}
/* user interactions */
- bool add_constraint(CandidateConstraints constraints, size_t index, phrase_token_t token);
+ guint8 add_constraint(CandidateConstraints constraints, size_t index, phrase_token_t token);
bool clear_constraint(CandidateConstraints constraints, size_t index);
diff --git a/src/pinyin.cpp b/src/pinyin.cpp
index 36969af..ee05a0a 100644
--- a/src/pinyin.cpp
+++ b/src/pinyin.cpp
@@ -466,18 +466,18 @@ bool pinyin_get_candidates(pinyin_instance_t * instance,
return true;
}
-bool pinyin_choose_candidate(pinyin_instance_t * instance,
- size_t offset,
- phrase_token_t token){
+guint8 pinyin_choose_candidate(pinyin_instance_t * instance,
+ size_t offset,
+ phrase_token_t token){
pinyin_context_t * & context = instance->m_context;
- bool retval = context->m_pinyin_lookup->add_constraint
+ guint8 len = context->m_pinyin_lookup->add_constraint
(instance->m_constraints, offset, token);
- retval = context->m_pinyin_lookup->validate_constraint
- (instance->m_constraints, instance->m_pinyin_keys) && retval;
+ bool retval = context->m_pinyin_lookup->validate_constraint
+ (instance->m_constraints, instance->m_pinyin_keys) && len;
- return retval;
+ return len;
}
bool pinyin_clear_constraint(pinyin_instance_t * instance,
diff --git a/src/pinyin.h b/src/pinyin.h
index 8b34a52..b06e578 100644
--- a/src/pinyin.h
+++ b/src/pinyin.h
@@ -86,9 +86,9 @@ bool pinyin_get_candidates(pinyin_instance_t * instance,
size_t offset,
TokenVector candidates);
-bool pinyin_choose_candidate(pinyin_instance_t * instance,
- size_t offset,
- phrase_token_t token);
+guint8 pinyin_choose_candidate(pinyin_instance_t * instance,
+ size_t offset,
+ phrase_token_t token);
bool pinyin_clear_constraint(pinyin_instance_t * instance,
size_t offset);