<> <> <> DIRECTORY Basics USING [bytesPerWord], BcdDefs USING [BCD, Link, MTIndex, MTRecord, SGIndex, SGRecord, VersionStamp], ConvertUnsafe USING [SubString], Literals USING [LitDescriptor, LTIndex, LTNull, LTRecord, MSTIndex, STIndex, STNull], IO USING [STREAM], Rope USING [ROPE], SymbolTable USING [Base], Symbols 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 USING [Link, NodeName]; ListerUtils: DEFINITIONS = BEGIN <> BCD: TYPE = BcdDefs.BCD; 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[STNull]; MTIndex: TYPE = BcdDefs.MTIndex; MTRecord: TYPE = BcdDefs.MTRecord; Name: TYPE = Symbols.Name; nullName: Name = Symbols.nullName; NodeName: TYPE = Tree.NodeName; RefBCD: TYPE = REF 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; STNull: STIndex = Literals.STNull; 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: PUBLIC 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: PUBLIC PROC [t: Tree.Link.literal, stream: STREAM, stb: SymbolTableBase]; <> PrintBcdLink: PUBLIC PROC [link: BcdDefs.Link, stream: STREAM]; <> PrintTreeLink: PUBLIC PROC [link: Tree.Link, stream: STREAM]; <> PrintName: PUBLIC PROC [name: Name, stream: STREAM, stb: SymbolTableBase]; <> WriteNodeName: PUBLIC PROC [n: NodeName, stream: STREAM]; <> WriteTypeName: PUBLIC PROC [n: TypeClass, stream: STREAM]; <> WriteModeName: PUBLIC PROC [n: TransferMode, stream: STREAM]; <> OutCtx: PUBLIC PROC [message: Rope.ROPE, ctx: CTXIndex, stream: STREAM]; <> OutArgType: PUBLIC PROC [message: ROPE, sei: CSEIndex, stream: STREAM, stb: SymbolTableBase]; <> PrintVersion: PUBLIC PROC [stamp: VersionStamp, stream: STREAM, useTime: BOOL _ FALSE]; <> PrintStringFromTable: PUBLIC PROC [index: CARDINAL, stream: STREAM, stb: SymbolTableBase]; <> PrintString: PUBLIC PROC [str: LONG STRING, stream: STREAM]; <> PrintSubString: PUBLIC PROC [ss: SubString, stream: STREAM]; <> PrintIndex: PUBLIC PROC [index: UNSPECIFIED, stream: STREAM]; <> Indent: PUBLIC PROC [stream: STREAM, nBlanks: NAT]; <> DescriptorValue: PUBLIC PROC [stb: SymbolTableBase, lti: LTIndex] RETURNS [LitDescriptor]; <> MasterString: PUBLIC PROC [stb: SymbolTableBase, sti: STIndex] RETURNS [MSTIndex _ MSTNull]; <> ShortName: PUBLIC PROC [rope: ROPE] RETURNS [ROPE]; <> END.