Name

C_constant

Synopsis

C_constant package, 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 croaking 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 ...

Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.