<> <> <> <> DIRECTORY Basics: TYPE USING [bytesPerWord], BcdDefs: TYPE USING [BCD, Link, MTIndex, MTRecord, SGIndex, SGRecord, VersionStamp], ConvertUnsafe: TYPE USING [SubString], Literals: TYPE USING [LitDescriptor, LTIndex, LTNull, LTRecord, MSTIndex, STIndex, STNull], IO: TYPE USING [STREAM], Rope: TYPE USING [ROPE], SymbolTable: TYPE USING [Base], Symbols: TYPE USING [BitAddress, BodyRecord, BTIndex, ContextLevel, CSEIndex, CTXIndex, CTXNull, CTXRecord, ISEIndex, ISENull, lG, lL, lZ, MDIndex, Name, nullName, RootBti, SEIndex, SENull, SERecord, TransferMode, TypeClass, typeTYPE], Tree: TYPE USING [Link, NodeName]; ListerUtils: DEFINITIONS = BEGIN <> BitAddress: TYPE = Symbols.BitAddress; BTIndex: TYPE = Symbols.BTIndex; BTRecord: TYPE = Symbols.BodyRecord; bytesPerWord: NAT = Basics.bytesPerWord; CSEIndex: TYPE = Symbols.CSEIndex; typeTYPE: CSEIndex = Symbols.typeTYPE; ContextLevel: TYPE = Symbols.ContextLevel; lZ: ContextLevel = Symbols.lZ; lG: ContextLevel = Symbols.lG; lL: ContextLevel = Symbols.lL; CTXIndex: TYPE = Symbols.CTXIndex; CTXNull: CTXIndex = Symbols.CTXNull; CTXRecord: TYPE = Symbols.CTXRecord; ISEIndex: TYPE = Symbols.ISEIndex; ISENull: ISEIndex = Symbols.ISENull; ISERecord: TYPE = SERecord.id; LTIndex: TYPE = Literals.LTIndex; LTNull: LTIndex = Literals.LTNull; LTRecord: TYPE = Literals.LTRecord; LitDescriptor: TYPE = Literals.LitDescriptor; MDIndex: TYPE = Symbols.MDIndex; MSTIndex: TYPE = Literals.MSTIndex; MSTNull: MSTIndex = LOOPHOLE[Literals.STNull]; MTIndex: TYPE = BcdDefs.MTIndex; MTRecord: TYPE = BcdDefs.MTRecord; Name: TYPE = Symbols.Name; nullName: Name = Symbols.nullName; NodeName: TYPE = Tree.NodeName; RefBCD: TYPE = REF BcdDefs.BCD; RefMTRecord: TYPE = REF MTRecord; RefSGRecord: TYPE = REF SGRecord; RootBti: BTIndex = Symbols.RootBti; ROPE: TYPE = Rope.ROPE; SEIndex: TYPE = Symbols.SEIndex; SENull: SEIndex = Symbols.SENull; SERecord: TYPE = Symbols.SERecord; SGIndex: TYPE = BcdDefs.SGIndex; SGRecord: TYPE = BcdDefs.SGRecord; STIndex: TYPE = Literals.STIndex; STREAM: TYPE = IO.STREAM; SubString: TYPE = ConvertUnsafe.SubString; SymbolTableBase: TYPE = SymbolTable.Base; TransferMode: TYPE = Symbols.TransferMode; TypeClass: TYPE = Symbols.TypeClass; VersionStamp: TYPE = BcdDefs.VersionStamp; <> <<>> OpCodeEntry: TYPE = RECORD[name: ROPE, push,pop,length: [0..8)]; OpCodeArray: TYPE = REF OpCodeArrayRep; OpCodeArrayRep: TYPE = ARRAY [0..256) OF OpCodeEntry; GetOpCodeArray: PROC RETURNS[OpCodeArray]; <<>> <> ReadBcd: PROC[fileName: ROPE] RETURNS[RefBCD]; <> <<>> ReadMtr: PROC[inStream: STREAM, bcd: RefBCD, mti: MTIndex] RETURNS[RefMTRecord]; <> <<>> ReadSgr: PROC[inStream: STREAM, bcd: RefBCD, sgi: SGIndex] RETURNS[RefSGRecord]; <> <<>> WithSegment: PROC[inStream: STREAM, bcd: RefBCD, sgi: SGIndex, inner: PROC[LONG POINTER]]; <> <<>> WithPages: PROC[inStream: STREAM, bcd: RefBCD, start,pages: CARDINAL, inner: PROC[LONG POINTER]]; <> <<>> <> <> PrintSE: PROC[sei: ISEIndex, nBlanks: CARDINAL, definitionsOnly: BOOL, stream: STREAM, stb: SymbolTableBase]; <> PrintSei: PROC[sei: ISEIndex, stream: STREAM, stb: SymbolTableBase]; <> PrintType: PROC[sei: SEIndex, stream: STREAM, stb: SymbolTableBase]; <> PrintTypeInfo: PROC[sei: SEIndex, nBlanks: CARDINAL, stream: STREAM, stb: SymbolTableBase]; <> PrintTree: PROC[tree: Tree.Link, nBlanks: NAT, stream: STREAM, stb: SymbolTableBase]; <> PrintLiteral: PROC[t: Tree.Link.literal, stream: STREAM, stb: SymbolTableBase]; <> PrintBcdLink: PROC[link: BcdDefs.Link, stream: STREAM]; <> PrintTreeLink: PROC[link: Tree.Link, stream: STREAM]; <> PrintName: PROC[name: Name, stream: STREAM, stb: SymbolTableBase]; <> WriteNodeName: PROC[n: NodeName, stream: STREAM]; <> WriteTypeName: PROC[n: TypeClass, stream: STREAM]; <> WriteModeName: PROC[n: TransferMode, stream: STREAM]; <> OutCtx: PROC[message: Rope.ROPE, ctx: CTXIndex, stream: STREAM]; <> OutArgType: PROC[message: ROPE, sei: CSEIndex, stream: STREAM, stb: SymbolTableBase]; <> PrintVersion: PROC[stamp: VersionStamp, stream: STREAM, useTime: BOOL _ FALSE]; <> PrintStringFromTable: PROC[index: CARDINAL, stream: STREAM, stb: SymbolTableBase]; <> PrintString: PROC[str: LONG STRING, stream: STREAM]; <> PrintSubString: PROC[ss: SubString, stream: STREAM]; <> PrintIndex: PROC[index: UNSPECIFIED, stream: STREAM]; <> Indent: PROC[stream: STREAM, nBlanks: NAT]; <> DescriptorValue: PROC[stb: SymbolTableBase, lti: LTIndex] RETURNS[LitDescriptor]; <> MasterString: PROC[stb: SymbolTableBase, sti: STIndex] RETURNS[MSTIndex _ MSTNull]; <> ShortName: PROC[rope: ROPE] RETURNS[ROPE]; <> END.