Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / man / man3 / Heap::Elem.3
CommitLineData
86530b38
AT
1.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "Elem 3"
132.TH Elem 3 "2003-12-04" "perl v5.8.0" "User Contributed Perl Documentation"
133.SH "NAME"
134Heap::Elem \- Perl extension for elements to be put in Heaps
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 1
138\& use Heap::Elem::SomeInheritor;
139.Ve
140.PP
141.Vb 1
142\& use Heap::SomeHeapClass;
143.Ve
144.PP
145.Vb 2
146\& $elem = Heap::Elem::SomeInheritor->new( $value );
147\& $heap = Heap::SomeHeapClass->new;
148.Ve
149.PP
150.Vb 1
151\& $heap->add($elem);
152.Ve
153.SH "DESCRIPTION"
154.IX Header "DESCRIPTION"
155This is an inheritable class for Heap Elements. It provides
156the interface documentation and some inheritable methods.
157Only a child classes can be used \- this class is not complete.
158.SH "METHODS"
159.IX Header "METHODS"
160.IP "$elem = Heap::Elem::SomeInheritor\->new( [args] );" 4
161.IX Item "$elem = Heap::Elem::SomeInheritor->new( [args] );"
162Creates a new Elem.
163.ie n .IP "$elem\->heap( $val\fR ); \f(CW$elem\->heap;" 4
164.el .IP "$elem\->heap( \f(CW$val\fR ); \f(CW$elem\fR\->heap;" 4
165.IX Item "$elem->heap( $val ); $elem->heap;"
166Provides a method for use by the Heap processing routines.
167If a value argument is provided, it will be saved. The
168new saved value is always returned. If no value argument
169is provided, the old saved value is returned.
170.Sp
171The Heap processing routines use this method to map an element
172into its internal structure. This is needed to support the
173Heap methods that affect elements that are not are the top
174of the heap \- \fIdecrease_key\fR and \fIdelete\fR.
175.Sp
176The Heap processing routines will ensure that this value is
177undef when this elem is removed from a heap, and is not undef
178after it is inserted into a heap. This means that you can
179check whether an element is currently contained within a heap
180or not. (It cannot be used to determine which heap an element
181is contained in, if you have multiple heaps. Keeping that
182information accurate would make the operation of merging two
183heaps into a single one take longer \- it would have to traverse
184all of the elements in the merged heap to update them; for
185Binomial and Fibonacci heaps that would turn an O(1) operation
186into an O(n) one.)
187.IP "$elem1\->cmp($elem2)" 4
188.IX Item "$elem1->cmp($elem2)"
189A routine to compare two elements. It must return a negative
190value if this element should go higher on the heap than \fI$elem2\fR,
1910 if they are equal, or a positive value if this element should
192go lower on the heap than \fI$elem2\fR. Just as with sort, the
193Perl operators <=> and cmp cause the smaller value to be returned
194first; similarly you can negate the meaning to reverse the order
195\&\- causing the heap to always return the largest element instead
196of the smallest.
197.SH "INHERITING"
198.IX Header "INHERITING"
199This class can be inherited to provide an oject with the
200ability to be heaped. If the object is implemented as
201a hash, and if it can deal with a key of \fIheap\fR, leaving
202it unchanged for use by the heap routines, then the following
203implemetation will work.
204.PP
205.Vb 1
206\& package myObject;
207.Ve
208.PP
209.Vb 1
210\& require Exporter;
211.Ve
212.PP
213.Vb 1
214\& @ISA = qw(Heap::Elem);
215.Ve
216.PP
217.Vb 3
218\& sub new {
219\& my $self = shift;
220\& my $class = ref($self) || $self;
221.Ve
222.PP
223.Vb 1
224\& my $self = SUPER::new($class);
225.Ve
226.PP
227.Vb 2
228\& # set $self->{key} = $value;
229\& }
230.Ve
231.PP
232.Vb 3
233\& sub cmp {
234\& my $self = shift;
235\& my $other = shift;
236.Ve
237.PP
238.Vb 2
239\& $self->{key} cmp $other->{key};
240\& }
241.Ve
242.PP
243.Vb 1
244\& # other methods for the rest of myObject's functionality
245.Ve
246.SH "AUTHOR"
247.IX Header "AUTHOR"
248John Macdonald, jmm@perlwolf.com
249.SH "COPYRIGHT"
250.IX Header "COPYRIGHT"
251Copyright 1998\-2003, O'Reilly & Associates.
252.PP
253This code is distributed under the same copyright terms as perl itself.
254.SH "SEE ALSO"
255.IX Header "SEE ALSO"
256\&\fIHeap\fR\|(3), \fIHeap::Elem::Num\fR\|(3), \fIHeap::Elem::NumRev\fR\|(3),
257\&\fIHeap::Elem::Str\fR\|(3), \fIHeap::Elem::StrRev\fR\|(3).