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. RListerUtils.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Russ Atkinson, March 7, 1985 4:08:25 am PST Satterthwaite March 10, 1986 5:30:25 pm PST T Y P E S & C O N S T A N T S OpCode types & procedures Bcd acquisition procedures Reads the given BCD. Allows FS.Error to fall through to the caller. Reads the given module record. Reads the given segment record. Reads the given segment, invoking the inner procedure with a pointer to it. Reads the given pages, invoking the inner procedure with a pointer to them. Utility procedures Some of these utility routines were cloned from various places to allow stream: STREAM and stb: SymbolTableBase as arguments, so we don't have to use global variables. Prints out the information for the given sei. The indentation level is given by nBlanks. For a definitions file, definitionsOnly = TRUE. Just prints out the name for the given ISEIndex. Prints out the short form of the type, including its base ISEIndex. Prints out the long form of the type. The indentation level is given by nBlanks. Prints out the tree. The indentation level is given by nBlanks. Prints out the literal. Prints the link, distinguishing between proc, type, and var varieties. Prints the link in short form, distinguishing between subtree (default), hash, symbol, and literal varieties. Prints the name. Prints the NodeName in its readable form. Prints the TypeClass in its readable form. Prints the TransferMode in its readable form. Prints the ctx in short form (" ctx: %g"). Prints the message and sei in short form ("%g: %g"). Special consideration for NIL and ANY. Prints the version stamp. If useTime, then the time associated with the stamp is also printed (useful only for source files). Prints the string at the given index. Prints the given long string. Prints the given substring. Prints the given index as a decimal unsigned number. Prints a '\n, followed by nBlanks blanks. Gets the literal descriptor associated with the given LTIndex. Gets the master string for the given STIndex. Strips off version and directory information from the given file name. Κς˜codešœ™Kšœ Οmœ1™™>K˜——šŸ œžœ%žœ˜SKšœ-™-K˜—š Ÿ œžœžœžœžœ˜*KšœF™FK˜——Kšžœ˜K˜—…—` €