ROPE: TYPE ~ Rope.ROPE;
STREAM: TYPE ~ IO.STREAM;
Rubout: ERROR;
GetID: PROC [in, out: STREAM, default: ROPE, init: ROPE ← NIL, echo: BOOL ← TRUE]
RETURNS [id: ROPE, c: CHAR];
CommandList: TYPE = LIST OF CommandInfo;
CommandProc: TYPE = PROC [in, out: STREAM];
CommandInfo: TYPE = RECORD [commandProc: CommandProc, fullName: ROPE ← NIL];
RegisterCommand:
PROC [info: CommandInfo];
Registers a new command. This registry is NOT protected against concurrent access.
GetCommandList: PROC RETURNS [CommandList];
GetCommand: PROC [in, out: STREAM] RETURNS [found: CommandInfo];
GetArg: PROC [in, out: STREAM, prompt, default: ROPE, help: PROC]
RETURNS [value: ROPE ← NIL];
Confirm: PROC [in, out: STREAM] RETURNS [BOOL];
GetNumber: PROC [in, out: STREAM, default: INT, max: INT ← LAST[INT], prompt, help: ROPE] RETURNS [size: INT ← 0];
TalkToUser: PROC[in, out: STREAM];
END.