NAME

EO::Hierarchy - hierarchical data structures

SYNOPSIS

my $foo = EO::Hierarchy->new;
$foo->at( 'bar', 'baz' );
$foo->add_child( 'frob' );
$foo->at( 'frob' )->at( 'bar' ); ## eq 'baz'

## or

my $foo = EO::Hierarchy->new;
$foo->delegate( EO::Array->new );
$foo->at( 0, 'baz' );
$foo->add_child( 1 );
$foo->at( 1 )->at( 0 ); ## eq 'baz'

DESCRIPTION

EO::Hierarchy delegates to a collection object to provide heritable data structures. It should be noted that these data structures can appear recursive without being so. This is demonstrable with the following code example:

my $obj = EO::Hierarchy->new;
$obj->add_child( 'foo' );
my $recurse = $obj->at('foo');
print "appears recursive" if $recurse == $recurse->at('foo')

Handily the above code sample also displays a mechanism for testing it.

METHODS

EO::Hierarchy inherits from EO and shares all of its methods. EO::Hierarchy uses the EO::delegate pattern and shares the functionality of it. It provides a default delegation to an EO::Hash object which is constructed as a result of creating an EO::Hierarchy object.

add_child( KEY )

Adds a child into the data structure at the key KEY. The child is also a EO::Hierarchy object that inherits its data from the parent. If you don't want an inheriting child then you should use the at method, as you would with a normal EO::Collection object.

AUTHOR

James A. Duncan <jduncan@fotango.com>

COPYRIGHT

Copyright 2005 Fotango Ltd. All Rights Reserved.