Record Examples

Naturally, all examples given for list are also valid for record, but in order to make them appear in the resulting option record, we have to specify some additional things. This section illustrates this.

Basics

For example, with the mode as specified earlier, the argument list --mode=dump would result in the following option record:

optRec(1: [mode#dump])

In order to make it appear, we add the keyword single to the specification, stating at the same time that this option can be given at most once:

mode(single
     type: atom(help core outputcode
                feedtoemulator dump executable))

Then the option record for --mode=dump would look like this:

optRec(1: nil mode: dump)

Default or Required

Since the mode gives the basic mode of operation for ozc, we would be lost if was not given in the arguments, because it would not appear in the option record. To enforce its presence, we can either supply a default:

mode(single type: atom(...) default: feedtoemulator)

or make it a required option:

mode(single type: atom(...) optional: false)

Multiple Occurrences

The keyword single stated that an option may appear at most once in the option record. For some options, this in inadequate. If we want an option to be allowed to occur multiply in the argument list, we have to specify what this means. For instance,

verbose(rightmost char: &v type: bool)

means that all but the last occurrences of verbose are ignored. By the way, in ozc, verbose actually has a non-boolean default:

verbose(rightmost char: &v type: bool default: auto)

This allows for three modes of operation: The default is to only output messages if they are ``interesting''. When being --verbose, also uninteresting messages are output, whereas being --quiet, even the interesting messages are suppressed.

Collecting in Lists

It is also possible to state that one wished all occurrences of the same option to be collected in a list. This does not occur in ozc, so we give a fictitious example here:

cattle(multiple type: list(atom) default: nil)

Giving this argument several times, say, --cattle=angus,belgianred, --cattle=charolais, and --cattle=dexter,highland on one command line would result in the following option record:

optRec(1: nil
       cattle: [angus belgianred charolais dexter highland])


Denys Duchier, Leif Kornstaedt, Martin Homik, Tobias Müller, Christian Schulte and Peter Van Roy
Version 1.4.0 (20080702)