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.