Home | History | Annotate | Download | only in core

Lines Matching refs:DicNode

23 #include "suggest/core/dicnode/dic_node.h"
24 #include "suggest/core/dicnode/dic_node_priority_queue.h"
25 #include "suggest/core/dicnode/dic_node_vector.h"
98 DicNode *topDicNode =
108 DicNode rootNode;
126 DicNode terminals[MAX_RESULTS]; // Avoiding non-POD variable length array
154 DicNode *terminalDicNode = &terminals[terminalIndex];
212 DicNode::managedDelete(terminalDicNode);
229 DicNode correctionDicNode;
241 DicNode dicNode;
242 traverseSession->getDicTraverseCache()->popActive(&dicNode);
243 if (dicNode.isTotalInputSizeExceedingLimit()) {
247 const int point0Index = dicNode.getInputIndex(0);
249 TRAVERSAL->canDoLookAheadCorrection(traverseSession, &dicNode);
253 const bool isCompletion = dicNode.isCompletion(inputSize);
256 TRAVERSAL->shouldNodeLevelCache(traverseSession, &dicNode);
259 dicNode.dump("PUSH_CACHE");
261 traverseSession->getDicTraverseCache()->copyPushContinue(&dicNode);
262 dicNode.setCached();
265 if (dicNode.isInDigraph()) {
267 processDicNodeAsDigraph(traverseSession, &dicNode);
273 processDicNodeAsTransposition(traverseSession, &dicNode);
274 processDicNodeAsInsertion(traverseSession, &dicNode);
280 const bool allowsErrorCorrections = TRAVERSAL->allowsErrorCorrections(&dicNode);
283 && TRAVERSAL->isSpaceSubstitutionTerminal(traverseSession, &dicNode)) {
284 createNextWordDicNode(traverseSession, &dicNode, true /* spaceSubstitution */);
288 &dicNode, traverseSession->getOffsetDict(), &childDicNodes);
292 DicNode *const childDicNode = childDicNodes[i];
304 if (TRAVERSAL->isOmission(traverseSession, &dicNode, childDicNode,
312 traverseSession, &dicNode, childDicNode);
321 processDicNodeAsAdditionalProximityChar(traverseSession, &dicNode,
327 processDicNodeAsSubstitution(traverseSession, &dicNode, childDicNode);
341 dicNode);
348 DicTraverseSession *traverseSession, DicNode *dicNode) const {
349 if (dicNode->getCompoundDistance() >= static_cast<float>(MAX_VALUE_FOR_WEIGHTING)) {
352 if (!dicNode->isTerminalWordNode()) {
356 && dicNode->getInputIndex(0) < traverseSession->getInputSize()) {
360 if (dicNode->shouldBeFilterdBySafetyNetForBigram()) {
364 DicNode terminalDicNode;
365 DicNodeUtils::initByCopy(dicNode, &terminalDicNode);
372 * Adds the expanded dicNode to the next search priority queue. Also creates an additional next word
373 * (by the space omission error correction) search path if input dicNode is on a terminal node.
376 DicTraverseSession *traverseSession, DicNode *dicNode) const {
377 processTerminalDicNode(traverseSession, dicNode);
378 if (dicNode->getCompoundDistance() < static_cast<float>(MAX_VALUE_FOR_WEIGHTING)) {
379 if (TRAVERSAL->isSpaceOmissionTerminal(traverseSession, dicNode)) {
380 createNextWordDicNode(traverseSession, dicNode, false /* spaceSubstitution */);
382 const int allowsLookAhead = !(dicNode->hasMultipleWords()
383 && dicNode->isCompletion(traverseSession->getInputSize()));
384 if (dicNode->hasChildren() && allowsLookAhead) {
385 traverseSession->getDicTraverseCache()->copyPushNextActive(dicNode);
388 DicNode::managedDelete(dicNode);
392 DicNode *childDicNode) const {
398 DicNode *dicNode, DicNode *childDicNode) const {
402 traverseSession, dicNode, childDicNode, 0 /* multiBigramMap */);
408 DicNode *dicNode, DicNode *childDicNode) const {
410 dicNode, childDicNode, 0 /* multiBigramMap */);
419 DicNode *childDicNode) const {
426 * Handle the dicNode as an omission error (e.g., ths => this). Skip the current letter and consider
433 DicTraverseSession *traverseSession, DicNode *dicNode) const {
435 DicNodeUtils::getAllChildDicNodes(dicNode, traverseSession->getOffsetDict(), &childDicNodes);
439 DicNode *const childDicNode = childDicNodes[i];
442 dicNode, childDicNode, 0 /* multiBigramMap */);
445 if (!TRAVERSAL->isPossibleOmissionChildNode(traverseSession, dicNode, childDicNode)) {
453 * Handle the dicNode as an insertion error (e.g., thiis => this). Skip the current touch point and
457 DicNode *dicNode) const {
458 const int16_t pointIndex = dicNode->getInputIndex(0);
460 DicNodeUtils::getProximityChildDicNodes(dicNode, traverseSession->getOffsetDict(),
464 DicNode *const childDicNode = childDicNodes[i];
466 dicNode, childDicNode, 0 /* multiBigramMap */);
472 * Handle the dicNode as a transposition error (e.g., thsi => this). Swap the next two touch points.
475 DicNode *dicNode) const {
476 const int16_t pointIndex = dicNode->getInputIndex(0);
478 DicNodeUtils::getProximityChildDicNodes(dicNode, traverseSession->getOffsetDict(),
489 DicNode *const childDicNode2 = childDicNodes2[j];
495 DicNode::managedDelete(childDicNodes1[i]);
502 void Suggest::weightChildNode(DicTraverseSession *traverseSession, DicNode *dicNode) const {
504 if (dicNode->isCompletion(inputSize)) {
506 0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */);
509 0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */);
514 * Creates a new dicNode that represents a space insertion at the end of the input dicNode. Also
515 * incorporates the unigram / bigram score for the ending word into the new dicNode.
517 void Suggest::createNextWordDicNode(DicTraverseSession *traverseSession, DicNode *dicNode,
519 if (!TRAVERSAL->isGoodToTraverseNextWord(dicNode)) {
524 DicNode newDicNode;
526 traverseSession->getOffsetDict(), dicNode, &newDicNode);
529 Weighting::addCostAndForwardInputIndex(WEIGHTING, correctionType, traverseSession, dicNode,