diff options
author | 2011-08-11 01:25:08 -0700 | |
---|---|---|
committer | 2011-08-11 01:25:08 -0700 | |
commit | c122cfc8fd9e14d8b6e193770b33cf669ff6239c (patch) | |
tree | 694ef272a9c23a8910ed478db46c83c445aa4c48 /native/src/correction.cpp | |
parent | 28966734619251f78812f6a53f5efacbf5f77c49 (diff) | |
parent | f3948c1eacee57a9ba4b689ada992cd460596d9f (diff) | |
download | latinime-c122cfc8fd9e14d8b6e193770b33cf669ff6239c.tar.gz latinime-c122cfc8fd9e14d8b6e193770b33cf669ff6239c.tar.xz latinime-c122cfc8fd9e14d8b6e193770b33cf669ff6239c.zip |
Merge "Calculate the skip correction by one loop"
Diffstat (limited to 'native/src/correction.cpp')
-rw-r--r-- | native/src/correction.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/native/src/correction.cpp b/native/src/correction.cpp index 654d4715f..a05be55c7 100644 --- a/native/src/correction.cpp +++ b/native/src/correction.cpp @@ -54,11 +54,16 @@ void Correction::initCorrection(const ProximityInfo *pi, const int inputLength, void Correction::initCorrectionState( const int rootPos, const int childCount, const bool traverseAll) { latinime::initCorrectionState(mCorrectionStates, rootPos, childCount, traverseAll); + // TODO: remove + mCorrectionStates[0].mSkipPos = mSkipPos; } void Correction::setCorrectionParams(const int skipPos, const int excessivePos, const int transposedPos, const int spaceProximityPos, const int missingSpacePos) { + // TODO: remove mSkipPos = skipPos; + // TODO: remove + mCorrectionStates[0].mSkipPos = skipPos; mExcessivePos = excessivePos; mTransposedPos = transposedPos; mSpaceProximityPos = spaceProximityPos; @@ -111,6 +116,7 @@ bool Correction::initProcessState(const int outputIndex) { mNeedsToTraverseAllNodes = mCorrectionStates[outputIndex].mNeedsToTraverseAllNodes; mDiffs = mCorrectionStates[outputIndex].mDiffs; mSkippedCount = mCorrectionStates[outputIndex].mSkippedCount; + mSkipPos = mCorrectionStates[outputIndex].mSkipPos; mSkipping = false; mMatching = false; return true; @@ -158,6 +164,7 @@ void Correction::incrementOutputIndex() { mCorrectionStates[mOutputIndex].mDiffs = mDiffs; mCorrectionStates[mOutputIndex].mSkippedCount = mSkippedCount; mCorrectionStates[mOutputIndex].mSkipping = mSkipping; + mCorrectionStates[mOutputIndex].mSkipPos = mSkipPos; mCorrectionStates[mOutputIndex].mMatching = mMatching; } @@ -195,6 +202,12 @@ Correction::CorrectionType Correction::processCharAndCalcState( bool skip = false; if (mSkipPos >= 0) { + if (mSkippedCount == 0 && mSkipPos < mOutputIndex) { + if (DEBUG_DICT) { + assert(mSkipPos == mOutputIndex - 1); + } + ++mSkipPos; + } skip = mSkipPos == mOutputIndex; mSkipping = true; } @@ -229,11 +242,6 @@ Correction::CorrectionType Correction::processCharAndCalcState( } } - // TODO: remove after allowing combination errors - if (skip) { - return UNRELATED; - } - mWord[mOutputIndex] = c; // If inputIndex is greater than mInputLength, that means there is no // proximity chars. So, we don't need to check proximity. |