Oberon || Library || Module Index || Search Engine || Definition || Module
CONST missingValue = 0; CONST invalidValue = 1; CONST unknownOption = 2; CONST unexpectedArgs = 3; CONST helpRequested = 4; CONST errors = 5; TYPE ErrorEvent = POINTER TO ErrorEventRec; TYPE ErrorEventRec = RECORD (Events.EventRec) args: Args.Arguments; code: SHORTINT; (* missingValue..unexpectedArgs *) name: ARRAY 80 OF CHAR; END; VAR error: Events.EventType; VAR errormsg: ARRAY errors OF Events.Message;
PROCEDURE Include(scanners: Args.ScannerList; priority: Args.Priority);
Include adds the scanner of this module to scanners with the given priority. Multiple invocations of Include for different scanner lists are permitted. Actual scans by this module are later on triggered by invocations of Args.Scan with a scanner list that includes this implementation.
During its initialization, UnixCommandLine includes itself to Args.systemScanners at Args.highPriority.
MODULE ArgsDemo; IMPORT Args, Conclusions, Errors, IntArgs, RelatedEvents, StringArgs, UnixCommandLine; VAR args: Args.Arguments; PROCEDURE FetchArgs(VAR args: Args.Arguments); BEGIN Args.Create(args); RelatedEvents.QueueEvents(args); Args.Define(args, "copies", "#", IntArgs.type, "number of copies"); Args.Define(args, "file", "f", StringArgs.type, "file to be printed"); Args.Define(args, "printer", "p", StringArgs.type, "name of the printer"); Args.Scan(args, Args.systemScanners); IF RelatedEvents.EventsPending(args) THEN Conclusions.Conclude(args, Errors.fatal, ""); END; END FetchArgs; BEGIN FetchArgs(args); END ArgsDemo.
Oberon || Library || Module Index || Search Engine || Definition || Module