xref: /llvm-project/llvm/lib/Support/SuffixTreeNode.cpp (revision d44ea7186befe38eb2b3804b15cd1ee1777458ed)
16cf993e5SJessica Paquette //===- llvm/ADT/SuffixTreeNode.cpp - Nodes for SuffixTrees --------*- C++
26cf993e5SJessica Paquette //-*-===//
36cf993e5SJessica Paquette //
46cf993e5SJessica Paquette // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
56cf993e5SJessica Paquette // See https://llvm.org/LICENSE.txt for license information.
66cf993e5SJessica Paquette // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
76cf993e5SJessica Paquette //
86cf993e5SJessica Paquette //===----------------------------------------------------------------------===//
96cf993e5SJessica Paquette //
106cf993e5SJessica Paquette // This file defines nodes for use within a SuffixTree.
116cf993e5SJessica Paquette //
126cf993e5SJessica Paquette //===----------------------------------------------------------------------===//
136cf993e5SJessica Paquette 
146cf993e5SJessica Paquette #include "llvm/Support/SuffixTreeNode.h"
156cf993e5SJessica Paquette 
166cf993e5SJessica Paquette using namespace llvm;
176cf993e5SJessica Paquette 
186cf993e5SJessica Paquette unsigned SuffixTreeNode::getStartIdx() const { return StartIdx; }
196cf993e5SJessica Paquette void SuffixTreeNode::incrementStartIdx(unsigned Inc) { StartIdx += Inc; }
206cf993e5SJessica Paquette void SuffixTreeNode::setConcatLen(unsigned Len) { ConcatLen = Len; }
216cf993e5SJessica Paquette unsigned SuffixTreeNode::getConcatLen() const { return ConcatLen; }
226cf993e5SJessica Paquette 
236cf993e5SJessica Paquette bool SuffixTreeInternalNode::isRoot() const {
246cf993e5SJessica Paquette   return getStartIdx() == EmptyIdx;
256cf993e5SJessica Paquette }
266cf993e5SJessica Paquette unsigned SuffixTreeInternalNode::getEndIdx() const { return EndIdx; }
276cf993e5SJessica Paquette void SuffixTreeInternalNode::setLink(SuffixTreeInternalNode *L) {
286cf993e5SJessica Paquette   assert(L && "Cannot set a null link?");
296cf993e5SJessica Paquette   Link = L;
306cf993e5SJessica Paquette }
316cf993e5SJessica Paquette SuffixTreeInternalNode *SuffixTreeInternalNode::getLink() const { return Link; }
326cf993e5SJessica Paquette 
336cf993e5SJessica Paquette unsigned SuffixTreeLeafNode::getEndIdx() const {
346cf993e5SJessica Paquette   assert(EndIdx && "EndIdx is empty?");
356cf993e5SJessica Paquette   return *EndIdx;
366cf993e5SJessica Paquette }
376cf993e5SJessica Paquette 
386cf993e5SJessica Paquette unsigned SuffixTreeLeafNode::getSuffixIdx() const { return SuffixIdx; }
396cf993e5SJessica Paquette void SuffixTreeLeafNode::setSuffixIdx(unsigned Idx) { SuffixIdx = Idx; }
40*d9a00ed3SXuan Zhang 
41*d9a00ed3SXuan Zhang unsigned SuffixTreeNode::getLeftLeafIdx() const { return LeftLeafIdx; }
42*d9a00ed3SXuan Zhang unsigned SuffixTreeNode::getRightLeafIdx() const { return RightLeafIdx; }
43*d9a00ed3SXuan Zhang void SuffixTreeNode::setLeftLeafIdx(unsigned Idx) { LeftLeafIdx = Idx; }
44*d9a00ed3SXuan Zhang void SuffixTreeNode::setRightLeafIdx(unsigned Idx) { RightLeafIdx = Idx; }
45