Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / man / man3 / Devel::SelfStubber.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 "Devel::SelfStubber 3"
132.TH Devel::SelfStubber 3 "2002-06-01" "perl v5.8.0" "Perl Programmers Reference Guide"
133.SH "NAME"
134Devel::SelfStubber \- generate stubs for a SelfLoading module
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137To generate just the stubs:
138.PP
139.Vb 2
140\& use Devel::SelfStubber;
141\& Devel::SelfStubber->stub('MODULENAME','MY_LIB_DIR');
142.Ve
143.PP
144or to generate the whole module with stubs inserted correctly
145.PP
146.Vb 3
147\& use Devel::SelfStubber;
148\& $Devel::SelfStubber::JUST_STUBS=0;
149\& Devel::SelfStubber->stub('MODULENAME','MY_LIB_DIR');
150.Ve
151.PP
152\&\s-1MODULENAME\s0 is the Perl module name, e.g. Devel::SelfStubber,
153\&\s-1NOT\s0 'Devel/SelfStubber' or 'Devel/SelfStubber.pm'.
154.PP
155\&\s-1MY_LIB_DIR\s0 defaults to '.' if not present.
156.SH "DESCRIPTION"
157.IX Header "DESCRIPTION"
158Devel::SelfStubber prints the stubs you need to put in the module
159before the _\|_DATA_\|_ token (or you can get it to print the entire
160module with stubs correctly placed). The stubs ensure that if
161a method is called, it will get loaded. They are needed specifically
162for inherited autoloaded methods.
163.PP
164This is best explained using the following example:
165.PP
166Assume four classes, A,B,C & D.
167.PP
168A is the root class, B is a subclass of A, C is a subclass of B,
169and D is another subclass of A.
170.PP
171.Vb 5
172\& A
173\& / \e
174\& B D
175\& /
176\& C
177.Ve
178.PP
179If D calls an autoloaded method 'foo' which is defined in class A,
180then the method is loaded into class A, then executed. If C then
181calls method 'foo', and that method was reimplemented in class
182B, but set to be autoloaded, then the lookup mechanism never gets to
183the \s-1AUTOLOAD\s0 mechanism in B because it first finds the method
184already loaded in A, and so erroneously uses that. If the method
185foo had been stubbed in B, then the lookup mechanism would have
186found the stub, and correctly loaded and used the sub from B.
187.PP
188So, for classes and subclasses to have inheritance correctly
189work with autoloading, you need to ensure stubs are loaded.
190.PP
191The SelfLoader can load stubs automatically at module initialization
192with the statement 'SelfLoader\->\fIload_stubs()\fR';, but you may wish to
193avoid having the stub loading overhead associated with your
194initialization (though note that the SelfLoader::load_stubs method
195will be called sooner or later \- at latest when the first sub
196is being autoloaded). In this case, you can put the sub stubs
197before the _\|_DATA_\|_ token. This can be done manually, but this
198module allows automatic generation of the stubs.
199.PP
200By default it just prints the stubs, but you can set the
201global \f(CW$Devel::SelfStubber::JUST_STUBS\fR to 0 and it will
202print out the entire module with the stubs positioned correctly.
203.PP
204At the very least, this is useful to see what the SelfLoader
205thinks are stubs \- in order to ensure future versions of the
206SelfStubber remain in step with the SelfLoader, the
207SelfStubber actually uses the SelfLoader to determine which
208stubs are needed.