Data::Grove::Parent






Data::Grove::Parent − provide parent properties to
Data::Grove objects


 use Data::Grove::Parent;

      $root = $object‐>root;
 $rootpath = $object‐>rootpath;
 $tied = $object‐>add_magic([ $parent ]);

      $node = Data::Grove::Parent‐>new($hash [, $parent]);
 $node_list = Data::Grove::ParentList‐>new($array [, $parent]);

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 normally
would.

     The most obvious use of this is so you don’t 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 own cyclic references!  This could lead to infinite
loops if you don’t take care to avoid them.



$object−>root()

$object−>rootpath()
    ‘"root()"’ returns the root node if ‘$object’ is a
    ‘"Data::Grove::Parent"’ object.  ‘"rootpath()"’ returns
    an array of all the nodes between and including the root
    node and ‘$object’.









                             ‐2‐


$tied = $object−>add_magic([ $parent ])
    ‘"add_magic()"’ returns a "Data::Grove::Parent" object
    with ‘$object’ as it’s ‘"Raw"’ object.  If ‘$parent’ is
    given, that becomes the tied object’s parent object.

Ken MacLeod, ken@bitsko.slc.ut.us

perl(1), Data::Grove(3)