diff options
author | Peng Wu <alexepico@gmail.com> | 2016-05-26 14:25:41 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2016-05-26 14:25:41 +0800 |
commit | f359b1153ec6ab2f3f557515660616fb907835c6 (patch) | |
tree | eea2ad84766c4de12f248087954f6bd4c2c230bf /src | |
parent | 5861b698c95e9b4931389b5a90a2e3b31a84c922 (diff) | |
download | libpinyin-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.cpp | 15 |
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); } |