C_constant
C_constantpackage
,subname
,default_type
,types
,indent
,breakout, item ...
Returns a list of C subroutine definitions that return the
value and type of constants when passed the name by the XS
wrapper. item...
gives a list of
constant names. These can be strings, which are taken as a C macro
name, or references to a hash with the following keys:
name
The name of the constant, as seen by the Perl code.
type
The type of the constant (IV
, NV
, etc.).
value
A C expression for the value of the constant, or a
list of C expressions if the type is aggregate. Defaults to
name
if not given.
macro
The C preprocessor macro to use in the #ifdef
. Defaults to name
and is primarily used if
value
is an enum
. If a reference or an array
is passed, then the first element is used in place of the
#ifdef
line, and the
second element is used in place of the #endif
. This allows preprocessor
constructions such as:
#if defined (foo) #if !defined (bar) ... #endif #endif
which are used to determine if a constant will be defined.
A macro
of 1
signals that the constant is
always defined, so the #if/#endif
test is omitted.
default
Default value to use (instead of croak
ing with “your vendor has not
defined . . . ) if the macro isn’t defined. Specifies a
reference to an array with type followed by value(s).
pre
C code to use before the assignment of the value of
the constant. This allows you to use temporary variables to
extract a value from part of a struct
and return this as value
. This C code is placed at
the start of a block, so you can declare variables in
it.
post
C code to place between the assignment of value
(temporary) and the return
from the function. This allows you to clear up anything in
pre
. Rarely
needed.
def_pre
def_post
Equivalents of pre
and post
for the default
value.
utf8
Generated internally. Is 0
or undefined if name is 7-bit
ASCII, no
if the name is
8-bit (and so should match only if SvUTF8()
is false), and yes
if the name is utf8
-encoded.
3.144.105.2