LLVM 20.0.0git
|
#include "llvm/ADT/IntervalMap.h"
Public Member Functions | |
template<typename NodeT > | |
NodeT & | node (unsigned Level) const |
unsigned | size (unsigned Level) const |
unsigned | offset (unsigned Level) const |
unsigned & | offset (unsigned Level) |
template<typename NodeT > | |
NodeT & | leaf () const |
unsigned | leafSize () const |
unsigned | leafOffset () const |
unsigned & | leafOffset () |
bool | valid () const |
valid - Return true if path is at a valid node, not at end(). | |
unsigned | height () const |
height - Return the height of the tree corresponding to this path. | |
NodeRef & | subtree (unsigned Level) const |
subtree - Get the subtree referenced from Level. | |
void | reset (unsigned Level) |
reset - Reset cached information about node(Level) from subtree(Level -1). | |
void | push (NodeRef Node, unsigned Offset) |
push - Add entry to path. | |
void | pop () |
pop - Remove the last path entry. | |
void | setSize (unsigned Level, unsigned Size) |
setSize - Set the size of a node both in the path and in the tree. | |
void | setRoot (void *Node, unsigned Size, unsigned Offset) |
setRoot - Clear the path and set a new root node. | |
void | replaceRoot (void *Root, unsigned Size, IdxPair Offsets) |
replaceRoot - Replace the current root node with two new entries after the tree height has increased. | |
NodeRef | getLeftSibling (unsigned Level) const |
getLeftSibling - Get the left sibling node at Level, or a null NodeRef. | |
void | moveLeft (unsigned Level) |
moveLeft - Move path to the left sibling at Level. | |
void | fillLeft (unsigned Height) |
fillLeft - Grow path to Height by taking leftmost branches. | |
NodeRef | getRightSibling (unsigned Level) const |
getLeftSibling - Get the left sibling node at Level, or a null NodeRef. | |
void | moveRight (unsigned Level) |
moveRight - Move path to the left sibling at Level. | |
bool | atBegin () const |
atBegin - Return true if path is at begin(). | |
bool | atLastEntry (unsigned Level) const |
atLastEntry - Return true if the path is at the last entry of the node at Level. | |
void | legalizeForInsert (unsigned Level) |
legalizeForInsert - Prepare the path for an insertion at Level. | |
Definition at line 773 of file IntervalMap.h.
|
inline |
atBegin - Return true if path is at begin().
Definition at line 900 of file IntervalMap.h.
References offset(), and llvm::SmallVectorBase< Size_T >::size().
Referenced by llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::atBegin().
atLastEntry - Return true if the path is at the last entry of the node at Level.
Level | Node to examine. |
Definition at line 910 of file IntervalMap.h.
References llvm::SmallVectorBase< Size_T >::size().
Referenced by getRightSibling(), and moveRight().
|
inline |
fillLeft - Grow path to Height by taking leftmost branches.
Height | The target height. |
Definition at line 884 of file IntervalMap.h.
References height(), push(), and subtree().
Referenced by llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::goToBegin().
getLeftSibling - Get the left sibling node at Level, or a null NodeRef.
Level | Get the sibling to node(Level). |
Definition at line 25 of file IntervalMap.cpp.
References offset(), llvm::IntervalMapImpl::NodeRef::size(), and llvm::IntervalMapImpl::NodeRef::subtree().
getLeftSibling - Get the left sibling node at Level, or a null NodeRef.
Level | Get the sibling to node(Level). |
Definition at line 75 of file IntervalMap.cpp.
References atLastEntry(), offset(), and llvm::IntervalMapImpl::NodeRef::subtree().
|
inline |
height - Return the height of the tree corresponding to this path.
This matches map->height in a full path.
Definition at line 819 of file IntervalMap.h.
References llvm::SmallVectorBase< Size_T >::size().
Referenced by fillLeft(), and moveLeft().
|
inline |
Definition at line 805 of file IntervalMap.h.
References llvm::SmallVectorTemplateCommon< T, typename >::back().
Referenced by llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::unsafeStart(), llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::unsafeStop(), and llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::unsafeValue().
|
inline |
Definition at line 810 of file IntervalMap.h.
References llvm::SmallVectorTemplateCommon< T, typename >::back().
|
inline |
Definition at line 809 of file IntervalMap.h.
References llvm::SmallVectorTemplateCommon< T, typename >::back().
Referenced by llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::advanceTo(), llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::operator++(), llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::operator--(), llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::operator==(), llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::unsafeStart(), llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::unsafeStop(), and llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::unsafeValue().
|
inline |
Definition at line 808 of file IntervalMap.h.
References llvm::SmallVectorTemplateCommon< T, typename >::back().
Referenced by llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::operator++().
|
inline |
legalizeForInsert - Prepare the path for an insertion at Level.
When the path is at end(), node(Level) may not be a legal node. legalizeForInsert ensures that node(Level) is real by moving back to the last node at Level, and setting offset(Level) to size(Level) if required.
Level | The level where an insertion is about to take place. |
Definition at line 919 of file IntervalMap.h.
References moveLeft(), and valid().
void llvm::IntervalMapImpl::Path::moveLeft | ( | unsigned | Level | ) |
moveLeft - Move path to the left sibling at Level.
Leave nodes below Level unaltered.
Level | Move node(Level). |
Definition at line 48 of file IntervalMap.cpp.
References assert(), height(), offset(), llvm::SmallVectorImpl< T >::resize(), llvm::IntervalMapImpl::NodeRef::size(), llvm::IntervalMapImpl::NodeRef::subtree(), subtree(), and valid().
Referenced by legalizeForInsert(), and llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::operator--().
void llvm::IntervalMapImpl::Path::moveRight | ( | unsigned | Level | ) |
moveRight - Move path to the left sibling at Level.
Leave nodes below Level unaltered.
Level | Move node(Level). |
Definition at line 98 of file IntervalMap.cpp.
References assert(), atLastEntry(), offset(), size(), llvm::IntervalMapImpl::NodeRef::subtree(), and subtree().
Referenced by llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::operator++().
|
inline |
Definition at line 797 of file IntervalMap.h.
Definition at line 802 of file IntervalMap.h.
Definition at line 801 of file IntervalMap.h.
Referenced by atBegin(), getLeftSibling(), getRightSibling(), moveLeft(), moveRight(), reset(), and subtree().
|
inline |
pop - Remove the last path entry.
Definition at line 842 of file IntervalMap.h.
References llvm::SmallVectorTemplateBase< T, bool >::pop_back().
push - Add entry to path.
Definition at line 837 of file IntervalMap.h.
References llvm::Offset, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by fillLeft().
replaceRoot - Replace the current root node with two new entries after the tree height has increased.
Root | The new root node. |
Size | Number of entries in the new root. |
Offsets | Offsets into the root and first branch nodes. |
Definition at line 19 of file IntervalMap.cpp.
References assert(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorBase< Size_T >::empty(), llvm::SmallVectorTemplateCommon< T, typename >::front(), llvm::SmallVectorImpl< T >::insert(), Size, and subtree().
|
inline |
reset - Reset cached information about node(Level) from subtree(Level -1).
Level | 1..height. The node to update after parent node changed. |
Definition at line 830 of file IntervalMap.h.
setRoot - Clear the path and set a new root node.
Node | New root node. |
Size | New root size. |
Offset | Offset into root node. |
Definition at line 860 of file IntervalMap.h.
References llvm::SmallVectorImpl< T >::clear(), llvm::Offset, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and Size.
Referenced by llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::setRoot().
setSize - Set the size of a node both in the path and in the tree.
Level | 0..height. Note that setting the root size won't change map->rootSize. |
Size | New node size. |
Definition at line 850 of file IntervalMap.h.
References llvm::IntervalMapImpl::NodeRef::setSize(), llvm::SmallVectorBase< Size_T >::size(), Size, and subtree().
Definition at line 800 of file IntervalMap.h.
References llvm::SmallVectorBase< Size_T >::size().
Referenced by moveRight().
subtree - Get the subtree referenced from Level.
When the path is consistent, node(Level + 1) == subtree(Level).
Level | 0..height-1. The leaves have no subtrees. |
Definition at line 824 of file IntervalMap.h.
References offset().
Referenced by fillLeft(), moveLeft(), moveRight(), replaceRoot(), reset(), and setSize().
|
inline |
valid - Return true if path is at a valid node, not at end().
Definition at line 813 of file IntervalMap.h.
References llvm::SmallVectorBase< Size_T >::empty(), and llvm::SmallVectorTemplateCommon< T, typename >::front().
Referenced by legalizeForInsert(), moveLeft(), and llvm::IntervalMap< KeyT, ValT, N, Traits >::const_iterator::valid().