[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.6.1 Data for Option Processing

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 configuration 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 a configuration file.

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, an enumeration or a bit mask, 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 are subject to change.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated by Bruce Korb on August 30, 2014 using texi2html 1.82.