diff --git a/native/jni/src/suggest/core/policy/scoring.h b/native/jni/src/suggest/core/policy/scoring.h index 102e856f5..a16412996 100644 --- a/native/jni/src/suggest/core/policy/scoring.h +++ b/native/jni/src/suggest/core/policy/scoring.h @@ -43,6 +43,9 @@ class Scoring { const int doubleLetterTerminalIndex, const DoubleLetterLevel doubleLetterLevel) const = 0; virtual bool doesAutoCorrectValidWord() const = 0; + virtual bool autoCorrectsToMultiWordSuggestionIfTop() const = 0; + virtual bool sameAsTyped(const DicTraverseSession *const traverseSession, + const DicNode *const dicNode) const = 0; protected: Scoring() {} diff --git a/native/jni/src/suggest/core/policy/traversal.h b/native/jni/src/suggest/core/policy/traversal.h index e935533f2..d3b8da0cc 100644 --- a/native/jni/src/suggest/core/policy/traversal.h +++ b/native/jni/src/suggest/core/policy/traversal.h @@ -41,11 +41,8 @@ class Traversal { const DicNode *const dicNode) const = 0; virtual ProximityType getProximityType(const DicTraverseSession *const traverseSession, const DicNode *const dicNode, const DicNode *const childDicNode) const = 0; - virtual bool sameAsTyped(const DicTraverseSession *const traverseSession, - const DicNode *const dicNode) const = 0; virtual bool needsToTraverseAllUserInput() const = 0; virtual float getMaxSpatialDistance() const = 0; - virtual bool autoCorrectsToMultiWordSuggestionIfTop() const = 0; virtual int getDefaultExpandDicNodeSize() const = 0; virtual int getMaxCacheSize(const int inputSize) const = 0; virtual bool isPossibleOmissionChildNode(const DicTraverseSession *const traverseSession, diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp index 5377ec4e8..2ff24f221 100644 --- a/native/jni/src/suggest/core/suggest.cpp +++ b/native/jni/src/suggest/core/suggest.cpp @@ -158,7 +158,7 @@ int Suggest::outputSuggestions(DicTraverseSession *traverseSession, int *frequen // traverseSession->isPartiallyCommited() always returns false because we never auto partial // commit for now. const bool forceCommitMultiWords = (terminalSize > 0) ? - TRAVERSAL->autoCorrectsToMultiWordSuggestionIfTop() + SCORING->autoCorrectsToMultiWordSuggestionIfTop() && (traverseSession->isPartiallyCommited() || (traverseSession->getInputSize() >= MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT @@ -234,7 +234,7 @@ int Suggest::outputSuggestions(DicTraverseSession *traverseSession, int *frequen ->getShortcutPositionOfPtNode(terminalDicNode->getPtNodePos())); // Shortcut is not supported for multiple words suggestions. // TODO: Check shortcuts during traversal for multiple words suggestions. - const bool sameAsTyped = TRAVERSAL->sameAsTyped(traverseSession, terminalDicNode); + const bool sameAsTyped = SCORING->sameAsTyped(traverseSession, terminalDicNode); const int shortcutBaseScore = SCORING->doesAutoCorrectValidWord() ? SCORING->calculateFinalScore(compoundDistance, traverseSession->getInputSize(), true /* forceCommit */) : finalScore; diff --git a/native/jni/src/suggest/policyimpl/typing/typing_scoring.h b/native/jni/src/suggest/policyimpl/typing/typing_scoring.h index 56ffcc93e..b1337c641 100644 --- a/native/jni/src/suggest/policyimpl/typing/typing_scoring.h +++ b/native/jni/src/suggest/policyimpl/typing/typing_scoring.h @@ -19,6 +19,7 @@ #include "defines.h" #include "suggest/core/policy/scoring.h" +#include "suggest/core/session/dic_traverse_session.h" #include "suggest/policyimpl/typing/scoring_params.h" namespace latinime { @@ -71,6 +72,16 @@ class TypingScoring : public Scoring { return false; } + AK_FORCE_INLINE bool autoCorrectsToMultiWordSuggestionIfTop() const { + return true; + } + + AK_FORCE_INLINE bool sameAsTyped( + const DicTraverseSession *const traverseSession, const DicNode *const dicNode) const { + return traverseSession->getProximityInfoState(0)->sameAsTyped( + dicNode->getOutputWordBuf(), dicNode->getNodeCodePointCount()); + } + private: DISALLOW_COPY_AND_ASSIGN(TypingScoring); static const TypingScoring sInstance; diff --git a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h index fd0ac9eb6..3db00ad3a 100644 --- a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h +++ b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h @@ -137,20 +137,10 @@ class TypingTraversal : public Traversal { return ScoringParams::MAX_SPATIAL_DISTANCE; } - AK_FORCE_INLINE bool autoCorrectsToMultiWordSuggestionIfTop() const { - return true; - } - AK_FORCE_INLINE int getDefaultExpandDicNodeSize() const { return DicNodeVector::DEFAULT_NODES_SIZE_FOR_OPTIMIZATION; } - AK_FORCE_INLINE bool sameAsTyped( - const DicTraverseSession *const traverseSession, const DicNode *const dicNode) const { - return traverseSession->getProximityInfoState(0)->sameAsTyped( - dicNode->getOutputWordBuf(), dicNode->getNodeCodePointCount()); - } - AK_FORCE_INLINE int getMaxCacheSize(const int inputSize) const { return (inputSize <= 1) ? ScoringParams::MAX_CACHE_DIC_NODE_SIZE_FOR_SINGLE_POINT : ScoringParams::MAX_CACHE_DIC_NODE_SIZE;