Lines Matching refs:NodeRef

190 // Leaves store ((KeyT, KeyT), ValT) pairs, branches use (NodeRef, KeyT).
436 // PointerIntPair used by NodeRef.
466 //--- IntervalMapImpl::NodeRef ---//
478 // A NodeRef doesn't know whether it references a leaf node or a branch node.
482 // of 0 in a NodeRef. The valid range of sizes is 1-64.
486 class NodeRef {
495 /// NodeRef - Create a null ref.
496 NodeRef() {}
501 /// NodeRef - Create a reference to the node p with n elements.
503 NodeRef(NodeT *p, unsigned n) : pip(p, n - 1) {
514 /// This depends on branch nodes storing the NodeRef array as their first
516 NodeRef &subtree(unsigned i) const {
517 return reinterpret_cast<NodeRef*>(pip.getPointer())[i];
526 bool operator==(const NodeRef &RHS) const {
533 bool operator!=(const NodeRef &RHS) const {
697 class BranchNode : public NodeBase<NodeRef, KeyT, N> {
700 const NodeRef &subtree(unsigned i) const { return this->first[i]; }
703 NodeRef &subtree(unsigned i) { return this->first[i]; }
737 NodeRef safeLookup(KeyT x) const {
746 void insert(unsigned i, unsigned Size, NodeRef Node, KeyT Stop) {
778 Entry(NodeRef Node, unsigned Offset)
781 NodeRef &subtree(unsigned i) const {
782 return reinterpret_cast<NodeRef*>(node)[i];
818 NodeRef &subtree(unsigned Level) const {
831 void push(NodeRef Node, unsigned Offset) {
866 /// getLeftSibling - Get the left sibling node at Level, or a null NodeRef.
868 /// @return Left sibling, or NodeRef().
869 NodeRef getLeftSibling(unsigned Level) const;
883 /// getLeftSibling - Get the left sibling node at Level, or a null NodeRef.
885 /// @return Left sibling, or NodeRef().
886 NodeRef getRightSibling(unsigned Level) const;
943 (sizeof(KeyT) + sizeof(IntervalMapImpl::NodeRef)),
1048 void visitNodes(void (IntervalMap::*f)(IntervalMapImpl::NodeRef,
1050 void deleteNode(IntervalMapImpl::NodeRef Node, unsigned Level);
1156 IntervalMapImpl::NodeRef NR = rootBranch().safeLookup(x);
1185 NodeRef node[Nodes];
1189 node[n] = NodeRef(L, size[n]);
1226 NodeRef Node[Nodes];
1230 Node[n] = NodeRef(B, Size[n]);
1246 visitNodes(void (IntervalMap::*f)(IntervalMapImpl::NodeRef, unsigned Height)) {
1249 SmallVector<IntervalMapImpl::NodeRef, 4> Refs, NextRefs;
1273 deleteNode(IntervalMapImpl::NodeRef Node, unsigned Level) {
1457 IntervalMapImpl::NodeRef NR = path.subtree(path.height());
1526 bool insertNode(unsigned Level, IntervalMapImpl::NodeRef Node, KeyT Stop);
1625 } else if (NodeRef NR = P.getLeftSibling(P.height())) {
1654 } else if (NodeRef NR = P.getRightSibling(P.height())) {
1735 iterator::insertNode(unsigned Level, IntervalMapImpl::NodeRef Node, KeyT Stop) {
1816 if (NodeRef Sib = P.getLeftSibling(P.height())) {
1975 NodeRef LeftSib = P.getLeftSibling(Level);
1986 NodeRef RightSib = P.getRightSibling(Level);
2020 SplitRoot = insertNode(Level, NodeRef(Node[Pos], NewSize[Pos]), Stop);