data::grove(3)

NAME

Data::Grove -- support for deeply nested structures

SYNOPSIS

use Data::Grove;
$object = MyPackage->new;
package MyPackage;
@ISA = qw{Data::Grove};

DESCRIPTION

"Data::Grove" provides support for deeply nested tree or
graph structures. "Data::Grove" is intended primarily for
Perl module authors writing modules with many types or
classes of objects that need to be manipulated and
extended in a consistent and flexible way.

"Data::Grove" is best used by creating a core set of
``data'' classes and then incrementally adding functional
ity to the core data classes by using ``extension'' mod
ules. One reason for this design is so that the data
classes can be swapped out and the extension modules can
work with new data sources. For example, these other data
sources could be disk-based, network-based or built on top
of a relational database.

Two extension modules that come with "Data::Grove" are
"Data::Grove::Parent" and "Data::Grove::Visitor".
"Data::Grove::Parent" adds a `"Parent"' property to grove
objects and implements a `"root"' method to grove objects
to return the root node of the tree from anywhere in the
tree and a `"rootpath"' method to return a list of nodes
between the root node and ``this'' node.
"Data::Grove::Visitor" adds callback methods `"accept"'
and `"accept_name"' that call your handler or receiver
module back by object type name or the object's name.

"Data::Grove" objects do not contain parent references,
Perl garbage collection will delete them when no longer
referenced and sub-structures can be shared among several
structures. "Data::Grove::Parent" is used to create tem
porary objects with parent pointers.

Properties of data classes are accessed directly using
Perl's hash functions (i.e. `"$object->{Property}"').
Extension modules may also define properties that they
support or use, for example Data::Grove::Parent adds
`"Parent"' and `"Raw"' properties and Visitor depends on
`"Name"' and `"Content"' properties.

See the module "XML::Grove" for an example implementation
of "Data::Grove".

METHODS

new( PROPERTIES )
Return a new object blessed into the SubClass, with
the given properties. PROPERTIES may either be a list
of key/value pairs, a single hash containing key/value
pairs, or an existing "Data::Grove" object. If an
existing "Data::Grove" is passed to `"new()"', a shal
low copy of that object will be returned. A shallow
copy means that you are returned a new object, but all
of the objects underneath still refer to the original
objects.

AUTHOR

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

SEE ALSO

perl(1)
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout