Algorithm::Dependency::Objects - An implementation of an Object Dependency
Algorithm
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
This modules is a re-implementation of Algorithm::Dependency using only objects
instead of object ids, making use of Set::Object for book-keeping.
- 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.
Adam Kennedy's excellent Algorithm::Dependency module, upon which this is based.
None that we are aware of. Of course, if you find a bug, let us know, and we
will be sure to fix it.
We use Devel::Cover to test the code coverage of our tests, below is the
Devel::Cover report on this module test suite.
Yuval Kogman
Stevan Little
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.