void DicTraverseSession::init(const Dictionary *const dictionary, const NgramContext *const ngramContext, const SuggestOptions *const suggestOptions) { mDictionary = dictionary; mMultiWordCostMultiplier = getDictionaryStructurePolicy()->getHeaderStructurePolicy() ->getMultiWordCostMultiplier(); mSuggestOptions = suggestOptions; mPrevWordIdCount = ngramContext->getPrevWordIds(getDictionaryStructurePolicy(), &mPrevWordIdArray, true /* tryLowerCaseSearch */).size(); }
int Dictionary::getNgramProbability(const PrevWordsInfo *const prevWordsInfo, const int *word, int length) const { TimeKeeper::setCurrentTime(); int nextWordPos = mDictionaryStructureWithBufferPolicy->getTerminalPtNodePositionOfWord(word, length, false /* forceLowerCaseSearch */); if (NOT_A_DICT_POS == nextWordPos) return NOT_A_PROBABILITY; if (!prevWordsInfo) { return getDictionaryStructurePolicy()->getProbabilityOfPtNode( nullptr /* prevWordsPtNodePos */, nextWordPos); } int prevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM]; prevWordsInfo->getPrevWordsTerminalPtNodePos( mDictionaryStructureWithBufferPolicy.get(), prevWordsPtNodePos, true /* tryLowerCaseSearch */); return getDictionaryStructurePolicy()->getProbabilityOfPtNode(prevWordsPtNodePos, nextWordPos); }
void DicTraverseSession::initializeProximityInfoStates(const int *const inputCodePoints, const int *const inputXs, const int *const inputYs, const int *const times, const int *const pointerIds, const int inputSize, const float maxSpatialDistance, const int maxPointerCount) { ASSERT(1 <= maxPointerCount && maxPointerCount <= MAX_POINTER_COUNT_G); mInputSize = 0; for (int i = 0; i < maxPointerCount; ++i) { mProximityInfoStates[i].initInputParams(i, maxSpatialDistance, getProximityInfo(), inputCodePoints, inputSize, inputXs, inputYs, times, pointerIds, // Right now the line below is trying to figure out whether this is a gesture by // looking at the pointer count and assuming whatever is above the cutoff is // a gesture and whatever is below is type. This is hacky and incorrect, we // should pass the correct information instead. maxPointerCount == MAX_POINTER_COUNT_G, getDictionaryStructurePolicy()->getHeaderStructurePolicy()->getLocale()); mInputSize += mProximityInfoStates[i].size(); } }