reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
355 if (Active.Len == 0) { 357 Active.Idx = EndIdx; 360 assert(Active.Idx <= EndIdx && "Start index can't be after end index!"); 363 unsigned FirstChar = Str[Active.Idx]; 366 if (Active.Node->Children.count(FirstChar) == 0) { 368 insertLeaf(*Active.Node, EndIdx, FirstChar); 373 NeedsLink->Link = Active.Node; 379 SuffixTreeNode *NextNode = Active.Node->Children[FirstChar]; 385 if (Active.Len >= SubstringLen) { 388 Active.Idx += SubstringLen; 389 Active.Len -= SubstringLen; 390 Active.Node = NextNode; 399 if (Str[NextNode->StartIdx + Active.Len] == LastChar) { 403 if (NeedsLink && !Active.Node->isRoot()) { 404 NeedsLink->Link = Active.Node; 408 Active.Len++; 427 insertInternalNode(Active.Node, NextNode->StartIdx, 428 NextNode->StartIdx + Active.Len - 1, FirstChar); 436 NextNode->StartIdx += Active.Len; 450 if (Active.Node->isRoot()) { 451 if (Active.Len > 0) { 452 Active.Len--; 453 Active.Idx = EndIdx - SuffixesToAdd + 1; 457 Active.Node = Active.Node->Link; 457 Active.Node = Active.Node->Link; 470 Active.Node = Root; 475 Active.Node = Root;