OBJTREE__DEFINE
NAME: ObjTree
PURPOSE: A Object Based data Tree
CATEGORY: Object-Based Data Manipulation
Methods
CHILDREN(): Return this node's child object(s).
SIBLING(): Return this node's sibling object(s)
SETVALUE: Sets Object Data Values -- use ADD unless custom addition.
KEYWORDS: Each keyword sets the corresponding member data with the
passed value, which can either be an object list or pointer to one.
CHILDREN: The node's children
SIBLINGS: The node's siblings ... points also to parent's
children list.
LEAFS, list: return a list of all leafs below this node.
FAMILY, list: return a list of all of this node's descendents.
VISIT, method: Recursively call method method on all descendents,
passing it any extra keywords (which might be required to effect
any modification of the node data).
LEAFVISIT, method: Same as visit, but only for leafs.
ADD, entry: Add the object entry to this node.
Keywords
SIBLING: Add entry as a sibling instead of default child.
NOTE: An added sibling is always younger than any existing siblings.
An added child inherits is made the sibling of any existing children.
DELETE: Delete this node, and all of its desendents (recursively).
NOTE: If this node has a parent, its child reference is assigned
to the next younger sibling, if no older siblings exist. If no other
siblings exist at all, the parent's child reference is cleared.
PRUNE: Delete the entire tree *except* this node and its descendents,
leaving this node as the root of the Tree.
CLEANUP: (Automotically called)
NOTES: Each node in the tree is represented by a single instance
of this class. This tree has these properties: A node's list of
children is the same list as its children's list of siblings.. not
a copy, the *same* list -- modifying the children list at the same
time modifies the children's sibling list. New generations can
only be added at extremities of the tree, i.e. at those nodes
which don't yet have children. Otherwise, new children will join
those children already living. You may use SetValue to circumvent
these limits, but beware: inbred trees may result.
Modification History
11/13/98 -- Added Leafs and LeafVisit. JDS
6/4/98 -- Removed Gen, changed ModPro to a Call_Method in Method. JDS
5/12/98 -- JD Smith