For active options with the data flavor, and for
active and enabled options with the booldata
flavor, the configuration tools will normally generate two
#define's in the package's configuration header
file. These take the following forms:
#define <name> <value>
#define <name>_<value>
The define_format property can be used to control exactly what
appears as the value for the first of these
#define's. For example, the following can be used
to output some configuration data as a C string:
The implementation of define_format involves concatenating the Tcl
command format, the format string, and the string
representation of the option's value, and evaluating this in a Tcl
interpreter. Therefore the format string will be processed twice by a
Tcl parser, and appropriate care has to be taken with quoting.
The second #define will be generated only if is a
valid C preprocessor macro symbol, and is not affected by the
define_format property. Also, the property is only relevant for
options with the data or
booldata flavor, and cannot be used in
conjunction with the no_define property since it makes no sense to
specify the format if no #define is generated.
Caution
Because the Tcl interpreter's format command is
used, this property is subject to any problems with the implementation
of this in the Tcl library. Generally there should be no problems with
string data or with integers up to 32 bits, but there may well be
problems if 64-bit data is involved. This issue may be addressed in a
future release.
Example
cdl_option CYGNUM_UITRON_VER_ID {
display "OS identification"
flavor data
legal_values 0 to 0xFFFF
default_value 0
define_format "0x%04x"
description "
This value is returned in the 'id'
field of the T_VER structure in
response to a get_ver() system call."
}