Provided by: libxml-perl_0.08-3_all bug


       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.


           `"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'.

       $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,


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