// The most significant bit represents whether or not the node ID is used as // an offset. Note that the MSB is independent of the other bits. bool is_offset() const { return (value_ & IS_OFFSET_FLAG) == IS_OFFSET_FLAG;
}
// A phantom node is a node that has never been used, and such a node is also // called an empty element. Phantom nodes form a doubly linked list in each // block, and the linked list is represented by next() and prev(). bool is_phantom() const { return (value_ & IS_PHANTOM_FLAG) == IS_PHANTOM_FLAG;
}
// A label is attached to each non-phantom node. A label is represented by // a byte except for a terminal label '\256'. Note that a phantom node always // returns an invalid label with its phantom bit flag so as to reject invalid // transitions.
UInt32 label() const { return value_ & (IS_PHANTOM_FLAG | LABEL_MASK);
}
// A non-phantom node has the labels of the first child and the next sibling. // Note that INVALID_LABEL is stored if the node has no child nodes or has // no more siblings.
UInt32 child() const { return (value_ >> CHILD_SHIFT) & LABEL_MASK;
}
UInt32 sibling() const { return (value_ >> SIBLING_SHIFT) & LABEL_MASK;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.