aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node.h7
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h12
-rw-r--r--native/jni/src/suggest/core/dictionary/error_type_utils.h4
3 files changed, 19 insertions, 4 deletions
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index 65dad5677..82b738d36 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -270,9 +270,10 @@ class DicNode {
bool hasMatchedOrProximityCodePoints() const {
// This DicNode does not have matched or proximity code points when all code points have
- // been handled as edit corrections so far.
- return mDicNodeState.mDicNodeStateScoring.getEditCorrectionCount()
- < getNodeCodePointCount();
+ // been handled as edit corrections or completion so far.
+ const int editCorrectionCount = mDicNodeState.mDicNodeStateScoring.getEditCorrectionCount();
+ const int completionCount = mDicNodeState.mDicNodeStateScoring.getCompletionCount();
+ return (editCorrectionCount + completionCount) < getNodeCodePointCount();
}
bool isTotalInputSizeExceedingLimit() const {
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
index 458eac81b..b0db55fc1 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
@@ -31,7 +31,7 @@ class DicNodeStateScoring {
AK_FORCE_INLINE DicNodeStateScoring()
: mDoubleLetterLevel(NOT_A_DOUBLE_LETTER),
mDigraphIndex(DigraphUtils::NOT_A_DIGRAPH_INDEX),
- mEditCorrectionCount(0), mProximityCorrectionCount(0),
+ mEditCorrectionCount(0), mProximityCorrectionCount(0), mCompletionCount(0),
mNormalizedCompoundDistance(0.0f), mSpatialDistance(0.0f), mLanguageDistance(0.0f),
mRawLength(0.0f), mContainedErrorTypes(ErrorTypeUtils::NOT_AN_ERROR),
mNormalizedCompoundDistanceAfterFirstWord(MAX_VALUE_FOR_WEIGHTING) {
@@ -42,6 +42,7 @@ class DicNodeStateScoring {
void init() {
mEditCorrectionCount = 0;
mProximityCorrectionCount = 0;
+ mCompletionCount = 0;
mNormalizedCompoundDistance = 0.0f;
mSpatialDistance = 0.0f;
mLanguageDistance = 0.0f;
@@ -55,6 +56,7 @@ class DicNodeStateScoring {
AK_FORCE_INLINE void init(const DicNodeStateScoring *const scoring) {
mEditCorrectionCount = scoring->mEditCorrectionCount;
mProximityCorrectionCount = scoring->mProximityCorrectionCount;
+ mCompletionCount = scoring->mCompletionCount;
mNormalizedCompoundDistance = scoring->mNormalizedCompoundDistance;
mSpatialDistance = scoring->mSpatialDistance;
mLanguageDistance = scoring->mLanguageDistance;
@@ -77,6 +79,9 @@ class DicNodeStateScoring {
if (ErrorTypeUtils::isProximityCorrectionError(errorType)) {
++mProximityCorrectionCount;
}
+ if (ErrorTypeUtils::isCompletion(errorType)) {
+ ++mCompletionCount;
+ }
}
// Saves the current normalized distance for space-aware gestures.
@@ -129,6 +134,10 @@ class DicNodeStateScoring {
return mProximityCorrectionCount;
}
+ int16_t getCompletionCount() const {
+ return mCompletionCount;
+ }
+
float getRawLength() const {
return mRawLength;
}
@@ -182,6 +191,7 @@ class DicNodeStateScoring {
int16_t mEditCorrectionCount;
int16_t mProximityCorrectionCount;
+ int16_t mCompletionCount;
float mNormalizedCompoundDistance;
float mSpatialDistance;
diff --git a/native/jni/src/suggest/core/dictionary/error_type_utils.h b/native/jni/src/suggest/core/dictionary/error_type_utils.h
index 1122291a6..cc7786765 100644
--- a/native/jni/src/suggest/core/dictionary/error_type_utils.h
+++ b/native/jni/src/suggest/core/dictionary/error_type_utils.h
@@ -59,6 +59,10 @@ class ErrorTypeUtils {
return (errorType & PROXIMITY_CORRECTION) != 0;
}
+ static bool isCompletion(const ErrorType errorType) {
+ return (errorType & COMPLETION) != 0;
+ }
+
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(ErrorTypeUtils);