Data::Grove::Parent is an extension to Data::Grove that adds
Parent and Raw properties to Data::Grove objects and methods
for returning the root node of a grove, a list of nodes between and
including the root node and the current node, and a method that
creates parented nodes.
Data::Grove::Parent works by creating a Perl tied object that
contains a parent reference (Parent) and a reference to the
original Data::Grove object (Raw). Tying-magic is used so that
every time you reference the Data::Grove::Parent object it actually
references the underlying raw object.
When you retrieve a list or a property of the Raw object,
Data::Grove::Parent automatically adds magic to the returned list or
node. This means you only call add_magic() once to create the first
Data::Grove::Parent object and then use the grove objects like you
The most obvious use of this is so you dont have to call a
delete method when you want to release a grove or part of a
grove; since Data::Grove and Data::Grove::Parent objects have no
cyclic references, Perl can garbage collect them normally.
A secondary use is to allow you to reuse grove or property set
fragments in multiple trees. WARNING: Data::Grove currently does not
protect you from creating your <B>ownB> cyclic references! This could
lead to infinite loops if you dont take care to avoid them.