106c3fb27SDimitry Andric //===- llvm/ADT/SuffixTreeNode.cpp - Nodes for SuffixTrees --------*- C++ 206c3fb27SDimitry Andric //-*-===// 306c3fb27SDimitry Andric // 406c3fb27SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 506c3fb27SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 606c3fb27SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 706c3fb27SDimitry Andric // 806c3fb27SDimitry Andric //===----------------------------------------------------------------------===// 906c3fb27SDimitry Andric // 1006c3fb27SDimitry Andric // This file defines nodes for use within a SuffixTree. 1106c3fb27SDimitry Andric // 1206c3fb27SDimitry Andric //===----------------------------------------------------------------------===// 1306c3fb27SDimitry Andric 1406c3fb27SDimitry Andric #include "llvm/Support/SuffixTreeNode.h" 1506c3fb27SDimitry Andric #include "llvm/Support/Casting.h" 1606c3fb27SDimitry Andric 1706c3fb27SDimitry Andric using namespace llvm; 1806c3fb27SDimitry Andric 1906c3fb27SDimitry Andric unsigned SuffixTreeNode::getStartIdx() const { return StartIdx; } 2006c3fb27SDimitry Andric void SuffixTreeNode::incrementStartIdx(unsigned Inc) { StartIdx += Inc; } 2106c3fb27SDimitry Andric void SuffixTreeNode::setConcatLen(unsigned Len) { ConcatLen = Len; } 2206c3fb27SDimitry Andric unsigned SuffixTreeNode::getConcatLen() const { return ConcatLen; } 2306c3fb27SDimitry Andric 2406c3fb27SDimitry Andric bool SuffixTreeInternalNode::isRoot() const { 2506c3fb27SDimitry Andric return getStartIdx() == EmptyIdx; 2606c3fb27SDimitry Andric } 2706c3fb27SDimitry Andric unsigned SuffixTreeInternalNode::getEndIdx() const { return EndIdx; } 2806c3fb27SDimitry Andric void SuffixTreeInternalNode::setLink(SuffixTreeInternalNode *L) { 2906c3fb27SDimitry Andric assert(L && "Cannot set a null link?"); 3006c3fb27SDimitry Andric Link = L; 3106c3fb27SDimitry Andric } 3206c3fb27SDimitry Andric SuffixTreeInternalNode *SuffixTreeInternalNode::getLink() const { return Link; } 3306c3fb27SDimitry Andric 3406c3fb27SDimitry Andric unsigned SuffixTreeLeafNode::getEndIdx() const { 3506c3fb27SDimitry Andric assert(EndIdx && "EndIdx is empty?"); 3606c3fb27SDimitry Andric return *EndIdx; 3706c3fb27SDimitry Andric } 3806c3fb27SDimitry Andric 3906c3fb27SDimitry Andric unsigned SuffixTreeLeafNode::getSuffixIdx() const { return SuffixIdx; } 4006c3fb27SDimitry Andric void SuffixTreeLeafNode::setSuffixIdx(unsigned Idx) { SuffixIdx = Idx; } 41*0fca6ea1SDimitry Andric 42*0fca6ea1SDimitry Andric unsigned SuffixTreeNode::getLeftLeafIdx() const { return LeftLeafIdx; } 43*0fca6ea1SDimitry Andric unsigned SuffixTreeNode::getRightLeafIdx() const { return RightLeafIdx; } 44*0fca6ea1SDimitry Andric void SuffixTreeNode::setLeftLeafIdx(unsigned Idx) { LeftLeafIdx = Idx; } 45*0fca6ea1SDimitry Andric void SuffixTreeNode::setRightLeafIdx(unsigned Idx) { RightLeafIdx = Idx; } 46