diff options
author | 2014-03-10 09:21:10 +0000 | |
---|---|---|
committer | 2014-03-10 09:21:10 +0000 | |
commit | bd44c9815d0a4d7f411d6160ccd512b0303f0d25 (patch) | |
tree | 06930ebb388f43cd0961c0eff9682074d9a02c08 /native/jni/src/suggest/core/suggest.cpp | |
parent | 9e222d46d092323b9ac027ff71cf59b8022bd5d2 (diff) | |
parent | 632c9aca5bbae49be278cf3e88d12b364fbd6fc8 (diff) | |
download | latinime-bd44c9815d0a4d7f411d6160ccd512b0303f0d25.tar.gz latinime-bd44c9815d0a4d7f411d6160ccd512b0303f0d25.tar.xz latinime-bd44c9815d0a4d7f411d6160ccd512b0303f0d25.zip |
Merge "Improve DicNode handling."
Diffstat (limited to 'native/jni/src/suggest/core/suggest.cpp')
-rw-r--r-- | native/jni/src/suggest/core/suggest.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp index c3b670337..f60a210d4 100644 --- a/native/jni/src/suggest/core/suggest.cpp +++ b/native/jni/src/suggest/core/suggest.cpp @@ -248,17 +248,16 @@ void Suggest::processTerminalDicNode( if (dicNode->shouldBeFilteredBySafetyNetForBigram()) { return; } + if (!dicNode->hasMatchedOrProximityCodePoints()) { + return; + } // Create a non-cached node here. - DicNode terminalDicNode; - DicNodeUtils::initByCopy(dicNode, &terminalDicNode); + DicNode terminalDicNode(*dicNode); if (TRAVERSAL->needsToTraverseAllUserInput() && dicNode->getInputIndex(0) < traverseSession->getInputSize()) { Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_TERMINAL_INSERTION, traverseSession, 0, &terminalDicNode, traverseSession->getMultiBigramMap()); } - if (!dicNode->hasMatchedOrProximityCodePoints()) { - return; - } Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_TERMINAL, traverseSession, 0, &terminalDicNode, traverseSession->getMultiBigramMap()); traverseSession->getDicTraverseCache()->copyPushTerminal(&terminalDicNode); @@ -375,6 +374,7 @@ void Suggest::processDicNodeAsTransposition(DicTraverseSession *traverseSession, DicNode *dicNode) const { const int16_t pointIndex = dicNode->getInputIndex(0); DicNodeVector childDicNodes1; + DicNodeVector childDicNodes2; DicNodeUtils::getAllChildDicNodes(dicNode, traverseSession->getDictionaryStructurePolicy(), &childDicNodes1); const int childSize1 = childDicNodes1.getSizeAndLock(); @@ -386,7 +386,7 @@ void Suggest::processDicNodeAsTransposition(DicTraverseSession *traverseSession, continue; } if (childDicNodes1[i]->hasChildren()) { - DicNodeVector childDicNodes2; + childDicNodes2.clear(); DicNodeUtils::getAllChildDicNodes(childDicNodes1[i], traverseSession->getDictionaryStructurePolicy(), &childDicNodes2); const int childSize2 = childDicNodes2.getSizeAndLock(); |