FakeHash
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
FakeHash.pm view on Meta::CPAN
printf $fh "circle at B%02d.c rad 0.1 filled\n", $bucket_no;
printf $fh "arrow from B%02d.c right boxwid/2 + $bs\n", $bucket_no;
}
}
# this method assumes that the current 'pic' position is already
# correct, which might not be true if one of the other methods is
# overriden. Fix it.
sub draw_node {
my ($self, $fh, $bucket_no, $node_index, $node) = @_;
my ($k, $v, $h, $next) = @$node;
my ($wd, $ht) = @{$self->draw_param('KVP')};
print $fh "boxwid:=$wd; boxht:=$ht\n";
printf $fh qq{N%02d%02d: box "%s" "%s" "%u(%u)"\n}, $bucket_no, $node_index, $k, $v, $h, $h&($self->size * 2 - 1);
}
sub draw_start {
my ($self, $fh) = @_;
print $fh ".PS\n";
}
sub draw_end {
my ($self, $fh) = @_;
print $fh ".PE\n";
}
=head1 NAME
FakeHash::Node - Class used internally by C<FakeHash> to represent key-value pairs
=head1 SYNOPSIS
$key = $node->key;
$value = $node->value;
$hash = $node->hash;
$next = $node->next;
=head1 DESCRIPTION
C<FakeHash::Node> is used internally by C<FakeHash> for various
purposes. For example, the C<FakeHash::iterate> function invokes a
user-supplied callback for each key-value pair, passing it a series of
C<FakeHash::Node> objects that represent the key-value pairs.
The C<key> and C<value> methods retrieve the key and value of a node.
The C<hash> method retrieves the key's hash value.
C<$node-E<gt>next> method retrieves the node that follows C<$node> in
its bucket, or an undefined value if C<$node> is last in its bucket.
If any of these methods is passed an additional argument, it will set
the corresponding value. It will return the old value in any case.
=cut
package FakeHash::Node;
sub new {
my ($class, @data) = @_;
bless \@data => $class;
}
sub _access {
my $self = shift;
my $index = shift;
my $oldval = $self->[$index];
$self->[$index] = shift if @_;
$oldval;
}
sub key {
my $self = shift;
$self->_access(0, @_);
}
sub value {
my $self = shift;
$self->_access(1, @_);
}
sub hash {
my $self = shift;
$self->_access(2, @_);
}
sub next {
my $self = shift;
$self->_access(3, @_);
}
1;
=head1 AUTHOR
Mark-Jason Dominus (C<mjd-perl-fakehash+@plover.com>)
=head1 COPYRIGHT
C<FakeHash.pm> is a Perl module that simulates the behavior of a Perl hash
variable. C<FakeHash::DrawHash> renders a diagram of a simulated hash.
Copyright (C) 200 Mark-Jason Dominus
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., 675
Mass Ave, Cambridge, MA 02139, USA.
=cut
view all matches for this distributionview release on metacpan - search on metacpan
( run in 6.742 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-f5108d614456 )