Add IteratorBase::type
This commit is contained in:
@@ -1887,10 +1887,12 @@ void downsize(Node *self, WriteContext *writeContext) {
|
||||
|
||||
template <class T> struct Iterator;
|
||||
|
||||
// Higher-level handle to a position in the tree
|
||||
// Higher-level handle to a position in the tree. Can represent the position of
|
||||
// an entry associated with a node or a leaf.
|
||||
struct IteratorBase {
|
||||
|
||||
explicit IteratorBase(Node *node) : node(node) {}
|
||||
explicit IteratorBase(Node *node)
|
||||
: node(node), type(node ? node->getType() : Type_Node0) {}
|
||||
|
||||
bool entryPresent() { return node->entryPresent; }
|
||||
Entry getEntry() {
|
||||
@@ -1938,6 +1940,7 @@ struct IteratorBase {
|
||||
|
||||
protected:
|
||||
Node *node;
|
||||
Type type;
|
||||
// index into children array of particular leaf type
|
||||
int index;
|
||||
};
|
||||
@@ -1964,7 +1967,7 @@ template <class T> struct Iterator : IteratorBase {
|
||||
};
|
||||
|
||||
TrivialSpan IteratorBase::partialKey() {
|
||||
switch (node->getType()) {
|
||||
switch (type) {
|
||||
case Type_Node0:
|
||||
return as<Node0>().partialKey();
|
||||
case Type_Node3:
|
||||
@@ -1981,7 +1984,7 @@ TrivialSpan IteratorBase::partialKey() {
|
||||
}
|
||||
|
||||
IteratorBase IteratorBase::getFirstChild() {
|
||||
switch (node->getType()) {
|
||||
switch (type) {
|
||||
case Type_Node0:
|
||||
return as<Node0>().getFirstChild();
|
||||
case Type_Node3:
|
||||
@@ -1999,7 +2002,7 @@ IteratorBase IteratorBase::getFirstChild() {
|
||||
|
||||
IteratorBase::ChildAndMaxVersion
|
||||
IteratorBase::getChildAndMaxVersion(int index) {
|
||||
switch (node->getType()) {
|
||||
switch (type) {
|
||||
case Type_Node0:
|
||||
return as<Node0>().getChildAndMaxVersion(index);
|
||||
case Type_Node3:
|
||||
@@ -2016,7 +2019,7 @@ IteratorBase::getChildAndMaxVersion(int index) {
|
||||
}
|
||||
|
||||
IteratorBase IteratorBase::getChildGeq(int index) {
|
||||
switch (node->getType()) {
|
||||
switch (type) {
|
||||
case Type_Node0:
|
||||
return as<Node0>().getChildGeq(index);
|
||||
case Type_Node3:
|
||||
|
Reference in New Issue
Block a user