Manipulating vdsNodePath structures.

Macros for examining and changing the path to a vdsNode.

Copy one vdsNodePath structure into another
Look up a particular branch within a vdsNodePath
Set a particular branch within a vdsNodePath
These preprocessor macros manipulate vdsNodePath, the bit vector that encapsulates the path from the root of a vertex tree to a node.

Details: For a binary tree, each bit represents a branch. For an 8-way tree, 3 bits represent a branch. And so on. The least significant bit(s) represent the branch from the root node to the level-1 node, the next least significant bit(s) represent the next branch, and so on; the most significant meaningful bit(s) represent the final branch to the leaf node. The root node has a depth of 0 and none of the bits mean anything (but all must be set to zero, see below).

Note 1: Defining VDS_64_BITS enforces 64-bit paths. This enables much larger vertex trees but may be slower on some architectures.

Note 2: For convenience, the depth of the node (and thus the node path length) is currently stored separately, and all unused bits must be set to zero (this eases path comparisons).
See Also:

alphabetic index hierarchy of classes