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

7.3.4.7 Option Argument Handling

AutoOpts will automatically generate a callback procedure for options with enumerated keyword arguments and numeric arguments with range checking. If you have specified such an option, you may not specify any of the attributes listed here.

Otherwise, you may pick zero or one of the following attributes. The first two attributes interact with the documentation and settable attributes, See section 7.3.4.3 Special Option Handling.

`flag-code'
statements to execute when the option is encountered. The generated procedure will look like this:

 
static void
doOpt<name>( tOptions* pOptions, tOptDesc* pOptDesc )
{
<flag_code>
}

Only certain fields within the tOptions and tOptDesc structures may be accessed. See section 7.4.1 Data for Option Processing.

`extract-code'
This is effectively identical to flag_code, except that the source is kept in the output file instead of the definitions file. A long comment is used to demarcate the code. You must not modify that marker. Before regenerating the option code file, the old file is renamed from MUMBLE.c to MUMBLE.c.save. The template will be looking there for the text to copy into the new output file.

`call-proc'
external procedure to call when option is encountered. The calling sequence must conform to the sequence defined above for the generated procedure, doOpt<name>. It has the same restrictions regarding the fields within the structures passed in as arguments. See section 7.4.1 Data for Option Processing.

`flag-proc'
Name of another option whose flag_code can be executed when this option is encountered.

`stack-arg'
Call a special library routine to stack the option's arguments. Special macros in the interface file are provided for determining how many of the options were found (STACKCT_OPT(NAME)) and to obtain a pointer to a list of pointers to the argument values (STACKLST_OPT(NAME)). Obviously, for a stackable argument, the max attribute needs to be set higher than 1.

If two options are equivalenced (see section 7.3.4.3 Special Option Handling) and specify this attribute, then the "equivalenced-to" option will add entries to the stack, and the "equivalencing" option, if specified, will remove entries that match the regular expression argument. The pattern, ".*" will efficiently remove all the entries in the stack. It would not be useful to have more than two options in this equivalence class.

If the stacked option has a disablement prefix, then the entire stack of arguments will be cleared even more efficiently than the ".*" regular expression. A stacked, equivalencing option with a disablement prefix will cause undefined results.

If all of this is confusing, then don't mess with equivalenced stacked option arguments. If you really want to know, the AutoGen --define option (see section 5.20 define option (-D)) has a stacked argument, and --undefine (see section 5.21 undefine option (-U)) is equivalenced to it.


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

This document was generated by Bruce Korb on May 5, 2003 using texi2html

Viewable With Any Browser   AutoGen Home