NAME

Algorithm::Dependency::Objects - An implementation of an Object Dependency Algorithm

SYNOPSIS

use Algorithm::Dependency::Objects;

my $o = Algorithm::Dependency::Objects->new(
	objects => \@objects,
	selected => \@selected, # objects which are already taken care of
);

my @needed = $o->schedule( $objects[0] );

# need to take care of @needed for $objecs[0] to be resolved

DESCRIPTION

This modules is a re-implementation of Algorithm::Dependency using only objects instead of object ids, making use of Set::Object for book-keeping.

METHODS

new

Duh.

objects
selected

Returns the Set::Object representing this collection. Objects is an enumeration of all the object who we're dependo-frobnicating, and selected is those that don't need to be run.

depends
schedule
schedule_all

See Algorithm::Dependency's corresponding methods.

verify_input_set $object_set

Make sure that the dependencies of every object in the set are also in the set.

handle_missing_objects $missing_set, $input_set

Called by verify_input_set when objects are missing from the input set.

You can override this method to simply return

$input_set->union($missing_set);

making all dependencies of the input objects implicit input objects themselves.

unknown_object $object

Called when a new object pops out of the blue in the middle of processing (it means get_deps is returning inconsistent values).

get_deps $object

Extract the dependencies out of an object. Calls depends on the object.

can_get_deps $object

Default implementation is

$object->can("depends");
assert_can_get_deps $object_set

Croaks if can_get_deps doesn't return true for every object in the set.

SEE ALSO

Adam Kennedy's excellent Algorithm::Dependency module, upon which this is based.

BUGS

None that we are aware of. Of course, if you find a bug, let us know, and we will be sure to fix it.

CODE COVERAGE

We use Devel::Cover to test the code coverage of our tests, below is the Devel::Cover report on this module test suite.

AUTHORS

Yuval Kogman

Stevan Little

COPYRIGHT AND LICENSE

Copyright (C) 2005 Yuval Kogman, Stevan Little

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.