| /* |
| * Copyright (C) 2011 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef LATINIME_CORRECTION_STATE_H |
| #define LATINIME_CORRECTION_STATE_H |
| |
| #include <stdint.h> |
| |
| #include "defines.h" |
| |
| namespace latinime { |
| |
| struct CorrectionState { |
| int mParentIndex; |
| int mSiblingPos; |
| uint16_t mChildCount; |
| uint8_t mInputIndex; |
| |
| uint8_t mEquivalentCharCount; |
| uint8_t mProximityCount; |
| uint8_t mTransposedCount; |
| uint8_t mExcessiveCount; |
| uint8_t mSkippedCount; |
| |
| int8_t mTransposedPos; |
| int8_t mExcessivePos; |
| int8_t mSkipPos; // should be signed |
| |
| // TODO: int? |
| bool mLastCharExceeded; |
| |
| bool mMatching; |
| bool mTransposing; |
| bool mExceeding; |
| bool mSkipping; |
| bool mProximityMatching; |
| bool mAdditionalProximityMatching; |
| |
| bool mNeedsToTraverseAllNodes; |
| }; |
| |
| inline static void initCorrectionState(CorrectionState *state, const int rootPos, |
| const uint16_t childCount, const bool traverseAll) { |
| state->mParentIndex = -1; |
| state->mChildCount = childCount; |
| state->mInputIndex = 0; |
| state->mSiblingPos = rootPos; |
| state->mNeedsToTraverseAllNodes = traverseAll; |
| |
| state->mTransposedPos = -1; |
| state->mExcessivePos = -1; |
| state->mSkipPos = -1; |
| |
| state->mEquivalentCharCount = 0; |
| state->mProximityCount = 0; |
| state->mTransposedCount = 0; |
| state->mExcessiveCount = 0; |
| state->mSkippedCount = 0; |
| |
| state->mLastCharExceeded = false; |
| |
| state->mMatching = false; |
| state->mProximityMatching = false; |
| state->mTransposing = false; |
| state->mExceeding = false; |
| state->mSkipping = false; |
| state->mAdditionalProximityMatching = false; |
| } |
| } // namespace latinime |
| #endif // LATINIME_CORRECTION_STATE_H |