Go to the first, previous, next, last section, table of contents.
This section describes the data that may be accessed from within the
option processing callback routines. The following fields may be used
in the following ways and may be used for read only. The first set is
addressed from the tOptDesc*
pointer:
- `optIndex'
-
- `optValue'
-
These may be used by option procedures to determine which option they
are working on (in case they handle several options).
- `optActualIndex'
-
- `optActualValue'
-
These may be used by option procedures to determine which option was
used to set the current option. This may be different from the above if
the options are members of an equivalence class.
- `optOccCt'
-
If AutoOpts is processing command line arguments, then this value will
contain the current occurrence count. During the option preset phase
(reading rc/ini files and examining environment variables), the value is
zero.
- `fOptState'
-
The field may be tested for the following bit values
(prefix each name with
OPTST_
, e.g. OPTST_INIT
):
- `INIT'
-
Initial compiled value. As a bit test, it will always yield FALSE.
- `SET'
-
The option was set via the
SET_OPT()
macro.
- `PRESET'
-
The option was set via an RC/INI file, or a call to the
optionLoadLine()
routine.
- `DEFINED'
-
The option was set via a command line option.
- `SET_MASK'
-
This is a mask of flags that show the set state, one of the
above four values.
- `EQUIVALENCE'
-
This bit is set when the option was selected by an equivalenced option.
- `DISABLED'
-
This bit is set if the option is to be disabled.
(Meaning it was a long option prefixed by the disablement prefix, or
the option has not been specified yet and initializes as
disabled
.)
As an example of how this might be used, in AutoGen I want to allow
template writers to specify that the template output can be left
in a writable or read-only state. To support this, there is a Guile
function named set-writable
(see section `set-writable' - Make the output file be writable).
Also, I provide for command options --writable
and
--not-writable
. I give precedence to command line and RC
file options, thus:
switch (STATE_OPT( WRITABLE )) {
case OPTST_DEFINED:
case OPTST_PRESET:
fprintf( stderr, zOverrideWarn, pCurTemplate->pzFileName,
pCurMacro->lineNo );
break;
default:
if (gh_boolean_p( set ) && (set == SCM_BOOL_F))
CLEAR_OPT( WRITABLE );
else
SET_OPT_WRITABLE;
}
- `pzLastArg'
-
Pointer to the latest argument string. BEWARE If the argument type is
numeric or an enumeration, then this will be the argument value and
not a pointer to a string.
The following two fields are addressed from the tOptions*
pointer:
- `pzProgName'
-
Points to a NUL-terminated string containing the current program
name, as retrieved from the argument vector.
- `pzProgPath'
-
Points to a NUL-terminated string containing the full path of
the current program, as retrieved from the argument vector.
(If available on your system.)
Note these fields get filled in during the first call to
optionProcess()
. All other fields are private, for the exclusive
use of AutoOpts code and is subject to change.
Go to the first, previous, next, last section, table of contents.