DIRECTORY ConvertUnsafe USING [SubString], IO USING [STREAM], Literals USING [Base, LitDescriptor, LTIndex, LTNull, LTRecord, MSTIndex, STIndex, STNull], MobDefs USING [Base, Link, Mob, MobBase, MTIndex, MTRecord, SGIndex, SGRecord, VersionStamp], Rope USING [ROPE], Symbols USING [Base, BitAddress, BodyRecord, BTIndex, ContextLevel, CSEIndex, CTXIndex, CTXNull, CTXRecord, ISEIndex, ISENull, lG, lL, lZ, MDIndex, Name, nullName, RootBti, SEIndex, SENull, SERecord, TransferMode, TypeClass, typeTYPE], SymbolTable USING [Base], Tree USING [Link, NodeName]; MobListerUtils: DEFINITIONS = BEGIN BitAddress: TYPE = Symbols.BitAddress; BTIndex: TYPE = Symbols.BTIndex; BTRecord: TYPE = Symbols.BodyRecord; 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 = MobDefs.MTIndex; MTRecord: TYPE = MobDefs.MTRecord; Name: TYPE = Symbols.Name; nullName: Name = Symbols.nullName; NodeName: TYPE = Tree.NodeName; RefMob: TYPE = REF MobDefs.Mob; 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 = MobDefs.SGIndex; SGRecord: TYPE = MobDefs.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 = MobDefs.VersionStamp; MobErr: ERROR [err: Rope.ROPE]; InitMobTab: PROC; ReadMob: PROC [name: Rope.ROPE] RETURNS [mob: MobDefs.MobBase]; FreeMob: PROC [mob: MobDefs.MobBase]; 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[lti: Literals.LTIndex, stream: STREAM, stb: SymbolTableBase]; PrintStringLiteral: PROC[sti: Literals.STIndex, stream: STREAM, stb: SymbolTableBase]; PrintMobLink: PROC[link: MobDefs.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]; PrintLongIndex: PROC[index: Symbols.Base RELATIVE LONG POINTER, 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. μ MobListerUtils.mesa Copyright Σ 1985, 1991 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 Andy Litman March 3, 1988 3:35:27 pm PST JKF January 11, 1989 8:20:38 am PST T Y P E S & C O N S T A N T S 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. must call Init to before calling ReadMob. can raise MobErr can raise MobErr 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 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 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. Κš•NewlineDelimiter –(cedarcode) style™codešœ™Kšœ Οeœ6™BKšœ(Οk™+Kšœ(ž™+Kšœ%ž™(Kšžœ ™#—K˜šž ˜ Kšœžœ ˜ Kšžœžœžœ˜Kšœ žœM˜[KšœžœP˜]Kšœžœžœ˜Kšœžœή˜λKšœ žœ˜Kšœžœ˜—K˜KšΟnœž œž˜#K˜šœ™K˜Kšœ žœ˜&Kšœ žœ˜ Kšœ žœ˜$šœ žœ˜"Kšœ&˜&—šœžœ˜*Kšœ˜Kšœ˜Kšœ˜—šœ žœ˜"KšŸœ˜$—Kšœ žœ˜$šœ žœ˜"KšŸœ˜$—Kšœ žœ˜šœ žœ˜!KšŸœ˜"—Kšœ žœ˜#Kšœžœ˜-Kšœ žœ˜ šœ žœ˜#KšŸœ žœ˜.—Kšœ žœ˜ Kšœ žœ˜"šœžœ˜Kšœ"˜"—Kšœ žœ˜Kšœžœžœ ˜Kšœ žœžœ ˜!Kšœ žœžœ ˜!KšŸœ˜#Kšžœžœžœ˜šœ žœ˜ KšŸœ˜!—Kšœ žœ˜"Kšœ žœ˜ Kšœ žœ˜"Kšœ žœ˜!Kšžœžœžœžœ˜Kšœ žœ˜*Kšœžœ˜)Kšœžœ˜*Kšœ žœ˜$Kšœžœ˜*K˜—šœ™KšœPžœQ™§K˜KšŸœžœ žœ˜—˜šŸ œžœ˜Kšœ)™)K˜—šŸœžœ žœžœ˜?Kšœ™—K˜šŸœžœ˜%Kšœ™K™—š Ÿœžœžœžœ žœ˜mKšœ…žœ™ŠK˜—šŸœžœžœ˜DKšœ0™0K˜—šŸ œžœžœ˜DKšœC™CK˜—šŸ œžœžœ žœ˜[KšœQ™QK˜—šŸ œžœžœ žœ˜UKšœ@™@—K˜šŸ œžœ žœ˜PKšœ™K˜—šŸœžœ žœ˜VKšœ™—K˜šŸ œžœžœ˜7KšœF™FK˜—šŸ œžœžœ˜5Kšœm™mK˜—šŸ œžœžœ˜BKšœ™K˜—šŸ œžœžœ˜1Kšœ*™*K˜—šŸ œžœžœ˜2Kšœ+™+K˜—šŸ œžœžœ˜5Kšœ.™.K˜—šŸœžœžœžœ˜@Kšœ+™+K˜—šŸ œžœ žœžœ˜UšœPžœžœ™\K˜——š Ÿ œžœžœ žœžœ˜OKšœ~™~K˜—šŸœžœžœ žœ˜RKšœ%™%K˜—š Ÿ œžœžœžœ žœ˜4Kšœ™K˜—šŸœžœžœ˜4Kšœ™K˜—šŸ œžœž œ žœ˜5Kšœ4™4K˜—š Ÿœžœžœžœžœ žœ˜PKšœ4™4—K™šŸœžœ žœ žœ˜+Kšœ)™)K˜—šŸœžœ%žœ˜Qšœ>™>K˜——šŸ œžœ%žœ˜SKšœ-™-K˜—š Ÿ œžœžœžœžœ˜*KšœF™FK˜——Kšžœ˜K˜—…—ξt