summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2016-05-26 14:25:41 +0800
committerPeng Wu <alexepico@gmail.com>2016-05-26 14:25:41 +0800
commitf359b1153ec6ab2f3f557515660616fb907835c6 (patch)
treeeea2ad84766c4de12f248087954f6bd4c2c230bf /src
parent5861b698c95e9b4931389b5a90a2e3b31a84c922 (diff)
downloadlibpinyin-f359b1153ec6ab2f3f557515660616fb907835c6.tar.gz
libpinyin-f359b1153ec6ab2f3f557515660616fb907835c6.tar.xz
libpinyin-f359b1153ec6ab2f3f557515660616fb907835c6.zip
update validate_constraint method
Diffstat (limited to 'src')
-rw-r--r--src/lookup/pinyin_lookup2.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/lookup/pinyin_lookup2.cpp b/src/lookup/pinyin_lookup2.cpp
index ce4f6eb..9f29dc4 100644
--- a/src/lookup/pinyin_lookup2.cpp
+++ b/src/lookup/pinyin_lookup2.cpp
@@ -691,8 +691,8 @@ bool PinyinLookup2::clear_constraint(CandidateConstraints constraints,
return true;
}
-bool PinyinLookup2::validate_constraint(CandidateConstraints constraints,
- ChewingKeyVector keys) {
+bool PinyinLookup2::validate_constraint(PhoneticKeyMatrix * matrix,
+ CandidateConstraints constraints) {
/* resize constraints array first */
size_t constraints_length = constraints->len;
@@ -710,7 +710,7 @@ bool PinyinLookup2::validate_constraint(CandidateConstraints constraints,
g_array_set_size(constraints, keys->len);
}
- for ( size_t i = 0; i < constraints->len; ++i){
+ for (size_t i = 0; i < constraints->len; ++i){
lookup_constraint_t * constraint = &g_array_index
(constraints, lookup_constraint_t, i);
@@ -719,17 +719,18 @@ bool PinyinLookup2::validate_constraint(CandidateConstraints constraints,
phrase_token_t token = constraint->m_token;
m_phrase_index->get_phrase_item(token, m_cached_phrase_item);
- size_t phrase_length = m_cached_phrase_item.get_phrase_length();
+ guint32 end = constraint->m_end;
/* clear too long constraint */
- if (i + phrase_length > constraints->len){
+ if (end > constraints->len){
clear_constraint(constraints, i);
continue;
}
- ChewingKey * pinyin_keys = (ChewingKey *)keys->data;
+ gfloat pinyin_poss = compute_pronunciation_possibility
+ (m_options, matrix, i, end,
+ m_cached_keys, m_cached_phrase_item);
/* clear invalid pinyin */
- gfloat pinyin_poss = m_cached_phrase_item.get_pronunciation_possibility(m_options, pinyin_keys + i);
if (pinyin_poss < FLT_EPSILON)
clear_constraint(constraints, i);
}