Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / man / man3 / ExtUtils::Constant.3
CommitLineData
920dae64
AT
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
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 "ExtUtils::Constant 3"
132.TH ExtUtils::Constant 3 "2001-09-21" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134ExtUtils::Constant \- generate XS code to import C header constants
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 7
138\& use ExtUtils::Constant qw (WriteConstants);
139\& WriteConstants(
140\& NAME => 'Foo',
141\& NAMES => [qw(FOO BAR BAZ)],
142\& );
143\& # Generates wrapper code to make the values of the constants FOO BAR BAZ
144\& # available to perl
145.Ve
146.SH "DESCRIPTION"
147.IX Header "DESCRIPTION"
148ExtUtils::Constant facilitates generating C and \s-1XS\s0 wrapper code to allow
149perl modules to \s-1AUTOLOAD\s0 constants defined in C library header files.
150It is principally used by the \f(CW\*(C`h2xs\*(C'\fR utility, on which this code is based.
151It doesn't contain the routines to scan header files to extract these
152constants.
153.SH "USAGE"
154.IX Header "USAGE"
155Generally one only needs to call the \f(CW\*(C`WriteConstants\*(C'\fR function, and then
156.PP
157.Vb 1
158\& #include "const-c.inc"
159.Ve
160.PP
161in the C section of \f(CW\*(C`Foo.xs\*(C'\fR
162.PP
163.Vb 1
164\& INCLUDE: const-xs.inc
165.Ve
166.PP
167in the \s-1XS\s0 section of \f(CW\*(C`Foo.xs\*(C'\fR.
168.PP
169For greater flexibility use \f(CW\*(C`constant_types()\*(C'\fR, \f(CW\*(C`C_constant\*(C'\fR and
170\&\f(CW\*(C`XS_constant\*(C'\fR, with which \f(CW\*(C`WriteConstants\*(C'\fR is implemented.
171.PP
172Currently this module understands the following types. h2xs may only know
173a subset. The sizes of the numeric types are chosen by the \f(CW\*(C`Configure\*(C'\fR
174script at compile time.
175.IP "\s-1IV\s0" 4
176.IX Item "IV"
177signed integer, at least 32 bits.
178.IP "\s-1UV\s0" 4
179.IX Item "UV"
180unsigned integer, the same size as \fI\s-1IV\s0\fR
181.IP "\s-1NV\s0" 4
182.IX Item "NV"
183floating point type, probably \f(CW\*(C`double\*(C'\fR, possibly \f(CW\*(C`long double\*(C'\fR
184.IP "\s-1PV\s0" 4
185.IX Item "PV"
186\&\s-1NUL\s0 terminated string, length will be determined with \f(CW\*(C`strlen\*(C'\fR
187.IP "\s-1PVN\s0" 4
188.IX Item "PVN"
189A fixed length thing, given as a [pointer, length] pair. If you know the
190length of a string at compile time you may use this instead of \fI\s-1PV\s0\fR
191.IP "\s-1SV\s0" 4
192.IX Item "SV"
193A \fBmortal\fR \s-1SV\s0.
194.IP "\s-1YES\s0" 4
195.IX Item "YES"
196Truth. (\f(CW\*(C`PL_sv_yes\*(C'\fR) The value is not needed (and ignored).
197.IP "\s-1NO\s0" 4
198.IX Item "NO"
199Defined Falsehood. (\f(CW\*(C`PL_sv_no\*(C'\fR) The value is not needed (and ignored).
200.IP "\s-1UNDEF\s0" 4
201.IX Item "UNDEF"
202\&\f(CW\*(C`undef\*(C'\fR. The value of the macro is not needed.
203.SH "FUNCTIONS"
204.IX Header "FUNCTIONS"
205.IP "constant_types" 4
206.IX Item "constant_types"
207A function returning a single scalar with \f(CW\*(C`#define\*(C'\fR definitions for the
208constants used internally between the generated C and \s-1XS\s0 functions.
209.IP "XS_constant \s-1PACKAGE\s0, \s-1TYPES\s0, \s-1SUBNAME\s0, C_SUBNAME" 4
210.IX Item "XS_constant PACKAGE, TYPES, SUBNAME, C_SUBNAME"
211A function to generate the \s-1XS\s0 code to implement the perl subroutine
212\&\fI\s-1PACKAGE\s0\fR::constant used by \fI\s-1PACKAGE\s0\fR::AUTOLOAD to load constants.
213This \s-1XS\s0 code is a wrapper around a C subroutine usually generated by
214\&\f(CW\*(C`C_constant\*(C'\fR, and usually named \f(CW\*(C`constant\*(C'\fR.
215.Sp
216\&\fI\s-1TYPES\s0\fR should be given either as a comma separated list of types that the
217C subroutine \f(CW\*(C`constant\*(C'\fR will generate or as a reference to a hash. It should
218be the same list of types as \f(CW\*(C`C_constant\*(C'\fR was given.
219[Otherwise \f(CW\*(C`XS_constant\*(C'\fR and \f(CW\*(C`C_constant\*(C'\fR may have different ideas about
220the number of parameters passed to the C function \f(CW\*(C`constant\*(C'\fR]
221.Sp
222You can call the perl visible subroutine something other than \f(CW\*(C`constant\*(C'\fR if
223you give the parameter \fI\s-1SUBNAME\s0\fR. The C subroutine it calls defaults to
224the name of the perl visible subroutine, unless you give the parameter
225\&\fIC_SUBNAME\fR.
226.IP "autoload \s-1PACKAGE\s0, \s-1VERSION\s0, \s-1AUTOLOADER\s0" 4
227.IX Item "autoload PACKAGE, VERSION, AUTOLOADER"
228A function to generate the \s-1AUTOLOAD\s0 subroutine for the module \fI\s-1PACKAGE\s0\fR
229\&\fI\s-1VERSION\s0\fR is the perl version the code should be backwards compatible with.
230It defaults to the version of perl running the subroutine. If \fI\s-1AUTOLOADER\s0\fR
231is true, the \s-1AUTOLOAD\s0 subroutine falls back on AutoLoader::AUTOLOAD for all
232names that the \fIconstant()\fR routine doesn't recognise.
233.IP "WriteMakefileSnippet" 4
234.IX Item "WriteMakefileSnippet"
235WriteMakefileSnippet \s-1ATTRIBUTE\s0 => \s-1VALUE\s0 [, ...]
236.Sp
237A function to generate perl code for Makefile.PL that will regenerate
238the constant subroutines. Parameters are named as passed to \f(CW\*(C`WriteConstants\*(C'\fR,
239with the addition of \f(CW\*(C`INDENT\*(C'\fR to specify the number of leading spaces
240(default 2).
241.Sp
242Currently only \f(CW\*(C`INDENT\*(C'\fR, \f(CW\*(C`NAME\*(C'\fR, \f(CW\*(C`DEFAULT_TYPE\*(C'\fR, \f(CW\*(C`NAMES\*(C'\fR, \f(CW\*(C`C_FILE\*(C'\fR and
243\&\f(CW\*(C`XS_FILE\*(C'\fR are recognised.
244.IP "WriteConstants \s-1ATTRIBUTE\s0 => \s-1VALUE\s0 [, ...]" 4
245.IX Item "WriteConstants ATTRIBUTE => VALUE [, ...]"
246Writes a file of C code and a file of \s-1XS\s0 code which you should \f(CW\*(C`#include\*(C'\fR
247and \f(CW\*(C`INCLUDE\*(C'\fR in the C and \s-1XS\s0 sections respectively of your module's \s-1XS\s0
248code. You probably want to do this in your \f(CW\*(C`Makefile.PL\*(C'\fR, so that you can
249easily edit the list of constants without touching the rest of your module.
250The attributes supported are
251.RS 4
252.IP "\s-1NAME\s0" 4
253.IX Item "NAME"
254Name of the module. This must be specified
255.IP "\s-1DEFAULT_TYPE\s0" 4
256.IX Item "DEFAULT_TYPE"
257The default type for the constants. If not specified \f(CW\*(C`IV\*(C'\fR is assumed.
258.IP "\s-1BREAKOUT_AT\s0" 4
259.IX Item "BREAKOUT_AT"
260The names of the constants are grouped by length. Generate child subroutines
261for each group with this number or more names in.
262.IP "\s-1NAMES\s0" 4
263.IX Item "NAMES"
264An array of constants' names, either scalars containing names, or hashrefs
265as detailed in \*(L"C_constant\*(R".
266.IP "C_FILE" 4
267.IX Item "C_FILE"
268The name of the file to write containing the C code. The default is
269\&\f(CW\*(C`const\-c.inc\*(C'\fR. The \f(CW\*(C`\-\*(C'\fR in the name ensures that the file can't be
270mistaken for anything related to a legitimate perl package name, and
271not naming the file \f(CW\*(C`.c\*(C'\fR avoids having to override Makefile.PL's
272\&\f(CW\*(C`.xs\*(C'\fR to \f(CW\*(C`.c\*(C'\fR rules.
273.IP "\s-1XS_FILE\s0" 4
274.IX Item "XS_FILE"
275The name of the file to write containing the \s-1XS\s0 code. The default is
276\&\f(CW\*(C`const\-xs.inc\*(C'\fR.
277.IP "\s-1SUBNAME\s0" 4
278.IX Item "SUBNAME"
279The perl visible name of the \s-1XS\s0 subroutine generated which will return the
280constants. The default is \f(CW\*(C`constant\*(C'\fR.
281.IP "C_SUBNAME" 4
282.IX Item "C_SUBNAME"
283The name of the C subroutine generated which will return the constants.
284The default is \fI\s-1SUBNAME\s0\fR. Child subroutines have \f(CW\*(C`_\*(C'\fR and the name
285length appended, so constants with 10 character names would be in
286\&\f(CW\*(C`constant_10\*(C'\fR with the default \fI\s-1XS_SUBNAME\s0\fR.
287.RE
288.RS 4
289.RE
290.SH "AUTHOR"
291.IX Header "AUTHOR"
292Nicholas Clark <nick@ccl4.org> based on the code in \f(CW\*(C`h2xs\*(C'\fR by Larry Wall and
293others