diff options
author | 2013-02-14 08:47:53 +0000 | |
---|---|---|
committer | 2013-02-14 08:47:53 +0000 | |
commit | f9097056f2ee5fd9044443963568c15649c7da37 (patch) | |
tree | 8fa8d6c792a77b065b6bc3b26960047248dc629a /native/jni/src/proximity_info_state.cpp | |
parent | 2834f522b78d57ee862c5444e389a3834ba6de63 (diff) | |
parent | e5cdd21102e4e49b18c696261a084783eb6d7e7a (diff) | |
download | latinime-f9097056f2ee5fd9044443963568c15649c7da37.tar.gz latinime-f9097056f2ee5fd9044443963568c15649c7da37.tar.xz latinime-f9097056f2ee5fd9044443963568c15649c7da37.zip |
Merge "clean up seach key vector"
Diffstat (limited to 'native/jni/src/proximity_info_state.cpp')
-rw-r--r-- | native/jni/src/proximity_info_state.cpp | 43 |
1 files changed, 9 insertions, 34 deletions
diff --git a/native/jni/src/proximity_info_state.cpp b/native/jni/src/proximity_info_state.cpp index 4c1ffb30e..bdbf8b170 100644 --- a/native/jni/src/proximity_info_state.cpp +++ b/native/jni/src/proximity_info_state.cpp @@ -16,6 +16,7 @@ #include <cstring> // for memset() and memcpy() #include <sstream> // for debug prints +#include <vector> #define LOG_TAG "LatinIME: proximity_info_state.cpp" @@ -75,8 +76,8 @@ void ProximityInfoState::initInputParams(const int pointerId, const float maxPoi mSampledInputIndice.clear(); mSampledLengthCache.clear(); mSampledDistanceCache_G.clear(); - mSampledNearKeysVector.clear(); - mSampledSearchKeysVector.clear(); + mSampledNearKeySets.clear(); + mSampledSearchKeySets.clear(); mSpeedRates.clear(); mBeelineSpeedPercentiles.clear(); mCharProbabilities.clear(); @@ -109,7 +110,7 @@ void ProximityInfoState::initInputParams(const int pointerId, const float maxPoi if (mSampledInputSize > 0) { ProximityInfoStateUtils::initGeometricDistanceInfos(mProximityInfo, mSampledInputSize, - lastSavedInputSize, &mSampledInputXs, &mSampledInputYs, &mSampledNearKeysVector, + lastSavedInputSize, &mSampledInputXs, &mSampledInputYs, &mSampledNearKeySets, &mSampledDistanceCache_G); if (isGeometric) { // updates probabilities of skipping or mapping each key for all points. @@ -117,10 +118,11 @@ void ProximityInfoState::initInputParams(const int pointerId, const float maxPoi mMaxPointToKeyLength, mProximityInfo->getMostCommonKeyWidth(), mProximityInfo->getKeyCount(), lastSavedInputSize, mSampledInputSize, &mSampledInputXs, &mSampledInputYs, &mSpeedRates, &mSampledLengthCache, - &mSampledDistanceCache_G, &mSampledNearKeysVector, &mCharProbabilities); - ProximityInfoStateUtils::updateSampledSearchKeysVector(mProximityInfo, + &mSampledDistanceCache_G, &mSampledNearKeySets, &mCharProbabilities); + ProximityInfoStateUtils::updateSampledSearchKeySets(mProximityInfo, mSampledInputSize, lastSavedInputSize, &mSampledLengthCache, - &mSampledNearKeysVector, &mSampledSearchKeysVector); + &mSampledNearKeySets, &mSampledSearchKeySets, + &mSampledSearchKeyVectors); mMostProbableStringProbability = ProximityInfoStateUtils::getMostProbableString( mProximityInfo, mSampledInputSize, &mCharProbabilities, mMostProbableString); @@ -245,36 +247,9 @@ ProximityType ProximityInfoState::getMatchedProximityId(const int index, const i return UNRELATED_CHAR; } -// Puts possible characters into filter and returns new filter size. -int ProximityInfoState::getAllPossibleChars( - const size_t index, int *const filter, const int filterSize) const { - if (index >= mSampledInputXs.size()) { - return filterSize; - } - int newFilterSize = filterSize; - const int keyCount = mProximityInfo->getKeyCount(); - for (int j = 0; j < keyCount; ++j) { - if (mSampledSearchKeysVector[index].test(j)) { - const int keyCodePoint = mProximityInfo->getCodePointOf(j); - bool insert = true; - // TODO: Avoid linear search - for (int k = 0; k < filterSize; ++k) { - if (filter[k] == keyCodePoint) { - insert = false; - break; - } - } - if (insert) { - filter[newFilterSize++] = keyCodePoint; - } - } - } - return newFilterSize; -} - bool ProximityInfoState::isKeyInSerchKeysAfterIndex(const int index, const int keyId) const { ASSERT(keyId >= 0 && index >= 0 && index < mSampledInputSize); - return mSampledSearchKeysVector[index].test(keyId); + return mSampledSearchKeySets[index].test(keyId); } float ProximityInfoState::getDirection(const int index0, const int index1) const { |