Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / Heap / Elem / Num.pm
CommitLineData
86530b38
AT
1package Heap::Elem::Num;
2
3use strict;
4use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
5
6require Exporter;
7require AutoLoader;
8
9@ISA = qw(Exporter AutoLoader Heap::Elem);
10
11# No names exported.
12@EXPORT = ( );
13
14# Available for export: NumElem (to allocate a new Heap::Elem::Num value)
15@EXPORT_OK = qw( NumElem );
16
17$VERSION = '0.70';
18
19
20# Preloaded methods go here.
21
22sub new {
23 my $class = shift;
24 $class = ref($class) || $class;
25
26 # two slot array, 0 for the numeric value, 1 for use by Heap
27 my $self = [ shift, undef ];
28
29 return bless $self, $class;
30}
31
32sub NumElem { # exportable synonym for new
33 Heap::Elem::Num->new(@_);
34}
35
36# get or set value slot
37sub val {
38 my $self = shift;
39 @_ ? ($self->[0] = shift) : $self->[0];
40}
41
42# get or set heap slot
43sub heap {
44 my $self = shift;
45 @_ ? ($self->[1] = shift) : $self->[1];
46}
47
48# compare two Num elems
49sub cmp {
50 my $self = shift;
51 my $other = shift;
52 return $self->[0] <=> $other->[0];
53}
54
55# Autoload methods go after =cut, and are processed by the autosplit program.
56
571;
58__END__
59
60=head1 NAME
61
62Heap::Elem::Num - Perl extension for Numeric Heap Elements
63
64=head1 SYNOPSIS
65
66 use Heap::Elem::Num( NumElem );
67 use Heap::Fibonacci;
68
69 my $heap = Heap::Fibonacci->new;
70 my $elem;
71
72 foreach $i ( 1..100 ) {
73 $elem = NumElem( $i );
74 $heap->add( $elem );
75 }
76
77 while( defined( $elem = $heap->extract_top ) ) {
78 print "Smallest is ", $elem->val, "\n";
79 }
80
81=head1 DESCRIPTION
82
83Heap::Elem::Num is used to wrap numeric values into an element
84that can be managed on a heap. The top of the heap will have
85the smallest element still remaining. (See L<Heap::Elem::NumRev>
86if you want the heap to always return the largest element.)
87
88The details of the Elem interface are described in L<Heap::Elem>.
89
90The details of using a Heap interface are described in L<Heap>.
91
92=head1 AUTHOR
93
94John Macdonald, jmm@perlwolf.com
95
96=head1 COPYRIGHT
97
98Copyright 1998-2003, O'Reilly & Associates.
99
100This code is distributed under the same copyright terms as perl itself.
101
102=head1 SEE ALSO
103
104Heap(3), Heap::Elem(3), Heap::Elem::NumRev(3).
105
106=cut