/usr/local/CPAN/Heap-Simple-Perl/Heap/Simple/Function.pm
package Heap::Simple::Function;
$VERSION = "0.04";
use strict;
use Carp;
sub _elements {
my ($class, $heap, $name, $elements) = @_;
if (!defined $elements->[1]) {
$class->isa("Heap::Simple::Wrapper") ||
croak "missing key function for $elements->[0]";
return $name, "0";
}
$heap->[0]{index} = $elements->[1];
return $name;
}
sub _ELEMENTS_PREPARE {
return "my \$el_fun = \$heap->[0]{index};";
}
sub _KEY {
return "\$el_fun->($_[1])";
}
sub _QUICK_KEY {
return "\$heap->[0]{index}->($_[1])";
}
sub key_function {
return shift->[0]{index};
}
sub key {
return $_[0][0]{index}->($_[1]);
}
sub elements {
return wantarray ? (Function => shift->[0]{index}) : "Function";
}
1;