<> <> <> <> <> <> <> DIRECTORY LongString: TYPE USING [SubString], Segments: TYPE USING [Address], Streams: TYPE USING [Handle]; MBCommandUtil: DEFINITIONS = BEGIN CommandPtr: TYPE = LONG POINTER TO CommandObject; CommandObject: TYPE = RECORD [ getChar: PROCEDURE RETURNS [CHARACTER], token: PRIVATE CHARACTER _ 0C, c: PRIVATE CHARACTER _ ' , reset: PRIVATE BOOLEAN _ FALSE, idString: PRIVATE LONG STRING _ NIL ]; PairList: TYPE [SIZE[Segments.Address]]; Create: PROC [get: PROCEDURE RETURNS [CHARACTER]] RETURNS [CommandPtr]; Destroy: PROC [cmd: CommandPtr]; CopyString: PROC [s: LONG STRING, extra: CARDINAL _ 0] RETURNS [LONG STRING]; Echo: PROC [ d: Streams.Handle, operator: LONG STRING, argList, resultList: PairList, switches: LONG STRING]; FreePairList: PROC [PairList] RETURNS [PairList]; FreeString: PROC [LONG STRING] RETURNS [LONG STRING]; GetNthPair: PROC [list: PairList, n: CARDINAL, delete: BOOLEAN _ FALSE] RETURNS [key,value: LONG STRING]; GetNth: PROC [list: PairList, n: CARDINAL, delete: BOOLEAN _ FALSE] RETURNS [LONG STRING] = INLINE {RETURN [GetNthPair[list, n, delete].value]}; KeyValue: PROC [key: LongString.SubString, list: PairList, delete: BOOLEAN _ FALSE] RETURNS [LONG STRING]; ListLength: PROC [list: PairList] RETURNS [CARDINAL]; Parse: PROC [ cmd: CommandPtr, opX, argX, resultX: CARDINAL _ 0, allowNoTagParm: BOOLEAN _ FALSE] RETURNS [operator: LONG STRING, argList, resultList: PairList, switches: LONG STRING]; Failed: ERROR; SetExtension: PROC [root, defaultExt: LONG STRING] RETURNS [name: LONG STRING]; END.