DIRECTORY Alloc USING [Handle], ConvertUnsafe USING [SubString], MobDefs USING [Link, VersionStamp], SmallCards, Symbols, SymbolTable, Target: TYPE MachineParms USING [PackedBitCount, packedFieldSize], Tree USING [Index, Info, Link, Map]; SymbolOps: DEFINITIONS = { OPEN SmallCards, Symbols; STB: TYPE = REF SymbolTable.SymbolTableBaseRep; SubString: TYPE = ConvertUnsafe.SubString; UNSPEC: TYPE = Symbols.UNSPEC; DecodeBitAddr: PROC [ba: UNSPEC] RETURNS [BitAddress] = INLINE { RETURN [LOOPHOLE[ba, BitAddress]]; }; DecodeBti: PROC [bti: UNSPEC] RETURNS [CBTIndex] = INLINE { RETURN [LOOPHOLE[bti, CBTIndex]]; }; DecodeCard: PROC [n: UNSPEC] RETURNS [CARD] = INLINE { RETURN [LOOPHOLE[n, CARD]]; }; DecodeInt: PROC [n: UNSPEC] RETURNS [INT] = INLINE { RETURN [LOOPHOLE[n, INT]]; }; DecodeReal: PROC [n: UNSPEC] RETURNS [REAL] = INLINE { RETURN [LOOPHOLE[n, REAL]]; }; DecodeLink: PROC [l: UNSPEC] RETURNS [MobDefs.Link] = INLINE { RETURN [LOOPHOLE[l, MobDefs.Link]]; }; DecodeTreeIndex: PROC [node: UNSPEC] RETURNS [Tree.Index] = INLINE { RETURN [LOOPHOLE[node, Tree.Index]]; }; DecodeType: PROC [t: UNSPEC] RETURNS [Type] = INLINE { RETURN [LOOPHOLE[t, Type]]; }; EncodeBitAddr: PROC [ba: BitAddress] RETURNS [UNSPEC] = INLINE { RETURN [LOOPHOLE[ba, UNSPEC]]; }; EncodeBti: PROC [bti: CBTIndex] RETURNS [UNSPEC] = INLINE { RETURN [LOOPHOLE[bti, UNSPEC]]; }; EncodeCard: PROC [n: CARD] RETURNS [UNSPEC] = INLINE { RETURN [LOOPHOLE[n, UNSPEC]]; }; EncodeInt: PROC [n: INT] RETURNS [UNSPEC] = INLINE { RETURN [LOOPHOLE[n, UNSPEC]]; }; EncodeReal: PROC [r: REAL] RETURNS [UNSPEC] = INLINE { RETURN [LOOPHOLE[r, UNSPEC]]; }; EncodeLink: PROC [l: MobDefs.Link] RETURNS [UNSPEC] = INLINE { RETURN [LOOPHOLE[l, UNSPEC]]; }; EncodeTreeIndex: PROC [node: Tree.Index] RETURNS [UNSPEC] = INLINE { RETURN [LOOPHOLE[node, UNSPEC]]; }; EncodeType: PROC [t: Type] RETURNS [UNSPEC] = INLINE { RETURN [LOOPHOLE[t, UNSPEC]]; }; ToBti: PROC [bti: Tree.Info] RETURNS [BTIndex] = INLINE { RETURN [LOOPHOLE[bti, BTIndex]]; }; ToCtx: PROC [ctx: Tree.Info] RETURNS [CTXIndex] = INLINE { RETURN [LOOPHOLE[ctx, CTXIndex]]; }; ToType: PROC [type: Tree.Info] RETURNS [Type] = INLINE { RETURN [LOOPHOLE[type, Type]]; }; FromBti: PROC [bti: BTIndex] RETURNS [Tree.Info] = INLINE { RETURN [LOOPHOLE[bti, Tree.Info]]; }; FromCtx: PROC [ctx: CTXIndex] RETURNS [Tree.Info] = INLINE { RETURN [LOOPHOLE[ctx, Tree.Info]]; }; FromType: PROC [type: Type] RETURNS [Tree.Info] = INLINE { RETURN [LOOPHOLE[type, Tree.Info]]; }; FindString: PROC [stb: STB, s: SubString] RETURNS [Name]; HashValue: PROC [stb: STB, s: SubString] RETURNS [HVIndex]; SubStringForName: PROC [stb: STB, name: Name] RETURNS [SubString]; CtxLevel: PROC [STB, CTXIndex] RETURNS [ContextLevel]; CtxEntries: PROC [STB, CTXIndex] RETURNS [CARDINAL]; FirstCtxSe: PROC [STB, CTXIndex] RETURNS [ISEIndex]; NextSe: PROC [STB, ISEIndex] RETURNS [ISEIndex]; SearchContext: PROC [stb: STB, name: Name, ctx: CTXIndex] RETURNS [ISEIndex]; SeiForValue: PROC [stb: STB, value: UNSPEC, ctx: CTXIndex] RETURNS [ISEIndex]; FindMdi: PROC [STB, MobDefs.VersionStamp] RETURNS [MDIndex]; ArgCtx: PROC [STB, CSEIndex] RETURNS [CTXIndex]; ArgRecord: PROC [STB, CSEIndex] RETURNS [RecordSEIndex]; ClusterSe: PROC [STB, Type] RETURNS [Type]; EqTypes: PROC [STB, Type, Type] RETURNS [BOOL]; NormalType: PROC [STB, Type] RETURNS [CSEIndex]; RecordLink: PROC [STB, RecordSEIndex] RETURNS [RecordSEIndex]; RecordRoot: PROC [STB, RecordSEIndex] RETURNS [RecordSEIndex]; ReferentType: PROC [STB, Type] RETURNS [Type]; TransferTypes: PROC [STB, Type] RETURNS [typeIn, typeOut: RecordSEIndex]; TypeForm: PROC [STB, Type] RETURNS [TypeClass]; TypeLink: PROC [STB, Type] RETURNS [Type]; TypeRoot: PROC [STB, Type] RETURNS [Type]; UnderType: PROC [STB, Type] RETURNS [CSEIndex]; XferMode: PROC [STB, Type] RETURNS [TransferMode]; AUsForType: PROC [STB, Type] RETURNS [CARD]; BitsForType: PROC [STB, Type] RETURNS [BitCount]; BitsPerElement: PROC [stb: STB, type: Type, packed: BOOL] RETURNS [BitCount]; Cardinality: PROC [STB, Type] RETURNS [CARD]; FindExtension: PROC [stb: STB, sei: ISEIndex] RETURNS [type: ExtensionType, tree: Tree.Link]; FnField: PROC [STB, ISEIndex] RETURNS [offset: BitAddress, size: BitCount]; LinkMode: PROC [stb: STB, sei: ISEIndex] RETURNS [Linkage]; NameForSe: PROC [STB, ISEIndex] RETURNS [Name]; PackedSize: ARRAY Target.PackedBitCount OF NAT = Target.packedFieldSize; RecField: PROC [STB, ISEIndex] RETURNS [offset: BitAddress, size: BitCount]; RCType: PROC [STB, Type] RETURNS [RefClass]; VariantField: PROC [STB, CSEIndex] RETURNS [ISEIndex]; EnumerateBodies: PROC [stb: STB, root: BTIndex, proc: BodyVisitor] RETURNS [BTIndex]; BodyVisitor: TYPE = PROC [BTIndex] RETURNS [stop: BOOL ¬ FALSE]; ParentBti: PROC [stb: STB, bti: BTIndex] RETURNS [BTIndex]; SiblingBti: PROC [stb: STB, bti: BTIndex] RETURNS [BTIndex]; SonBti: PROC [stb: STB, bti: BTIndex] RETURNS [BTIndex]; BitsForRange: PROC [CARD] RETURNS [BitCount]; Initialize: PROC [Alloc.Handle, UNCOUNTED ZONE]; Reset: PROC; Finalize: PROC; own: STB; EnterString: PROC [ConvertUnsafe.SubString] RETURNS [Name]; HashBlock: PROC RETURNS [LONG POINTER TO HashVector]; NextLevel: PROC [ContextLevel] RETURNS [ContextLevel]; SetCtxLevel: PROC [CTXIndex, ContextLevel]; BlockLevel: PROC [ContextLevel] RETURNS [ContextLevel]; NewCtx: PROC [ContextLevel] RETURNS [CTXIndex]; SetMainCtx: PROC [CTXIndex]; ResetCtxList: PROC [CTXIndex]; FirstVisibleSe: PROC [CTXIndex] RETURNS [ISEIndex]; NextVisibleSe: PROC [ISEIndex] RETURNS [ISEIndex]; VisibleCtxEntries: PROC [CTXIndex] RETURNS [CARDINAL]; CtxVariant: PROC [CTXIndex] RETURNS [ISEIndex]; StaticNestError: SIGNAL; MakeCtxSe: PROC [name: Name, ctx: CTXIndex] RETURNS [ISEIndex]; MakeNonCtxSe: PROC [CARDINAL] RETURNS [CSEIndex]; MakeSeChain: PROC [CTXIndex, CARDINAL, BOOL] RETURNS [ISEIndex]; FillCtxSe: PROC [ISEIndex, Name, BOOL]; NameClash: SIGNAL [name: Name]; EnterExtension: PROC [sei: ISEIndex, type: ExtensionType, tree: Tree.Link]; SetSeLink: PROC [sei, next: ISEIndex]; LinkBti: PROC [bti, parent: BTIndex]; DelinkBti: PROC [BTIndex]; CopyArgSe: PROC [copy, master: ISEIndex]; CopyBasicType: PROC [CSEIndex] RETURNS [CSEIndex]; CopyXferType: PROC [CSEIndex, Tree.Map] RETURNS [CSEIndex]; ConstantId: PROC [ISEIndex] RETURNS [BOOL]; }. l SymbolOps.mesa Copyright Σ 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved. Russ Atkinson (RRA) March 1, 1988 6:18:30 pm PST Satterthwaite, June 18, 1986 10:12:35 am PDT Sweet June 4, 1986 10:11:29 am PDT from/to UNSPEC and Tree.Info implemented by SymbolOpsImpl hash manipulation context management module management type manipulation information returning procedures body table management utilities not requiring a symbol table initialization, etc. Same as ComData.ownSymbols hash manipulation context management body table utilities copying within current table attribute extraction Κ ₯–(cedarcode) style•NewlineDelimiter ™headšœ™Icodešœ ΟeœI™TJ™0LšΟy,™,Lšž"™"—˜šΟk ˜ LšœŸœ ˜LšœŸœ ˜ LšœŸœ˜#Lšœ ˜ Lšœ˜Lšœ ˜ LšœŸœŸœ#˜BLšœŸœ˜$——šΟn œŸ œ˜LšŸœ˜L˜LšŸœŸœŸœ ˜/Lšœ Ÿœ˜*LšŸœŸœ Ÿœ˜L˜—head2™š   œŸœŸœŸœŸœ˜@LšŸœŸœ˜"Lšœ˜L˜—š   œŸœŸœŸœŸœ˜;LšŸœŸœ˜!Lšœ˜L˜—š   œŸœŸœŸœŸœŸœ˜6LšŸœŸœŸœ˜Lšœ˜L˜—š   œŸœŸœŸœŸœŸœ˜4LšŸœŸœŸœ˜Lšœ˜L˜—š   œŸœŸœŸœŸœŸœ˜6LšŸœŸœŸœ˜Lšœ˜L˜—š   œŸœŸœŸœŸœ˜>LšŸœŸœ˜#Lšœ˜L˜—š  œŸœŸœŸœŸœ˜DLšŸœŸœ˜$Lšœ˜L˜—š   œŸœŸœŸœ Ÿœ˜6LšŸœŸœ ˜Lšœ˜L™—š   œŸœŸœŸœŸœ˜@LšŸœŸœŸœ˜Lšœ˜L˜—š   œŸœŸœŸœŸœ˜;LšŸœŸœŸœ˜Lšœ˜L˜—š   œŸœŸœŸœŸœŸœ˜6LšŸœŸœŸœ˜Lšœ˜L˜—š   œŸœŸœŸœŸœŸœ˜4LšŸœŸœŸœ˜Lšœ˜L˜—š   œŸœŸœŸœŸœŸœ˜6LšŸœŸœŸœ˜Lšœ˜L˜—š   œŸœŸœŸœŸœ˜>LšŸœŸœŸœ˜Lšœ˜L˜—š  œŸœŸœŸœŸœ˜DLšŸœŸœŸœ˜ Lšœ˜L˜—š   œŸœ ŸœŸœŸœ˜6LšŸœŸœŸœ˜Lšœ˜L™—š œŸœŸœ Ÿœ˜9LšŸœŸœ˜ Lšœ˜L˜—š œŸœŸœŸœ˜:LšŸœŸœ˜!Lšœ˜L˜—š œŸœŸœ Ÿœ˜8LšŸœŸœ˜Lšœ˜L˜—š œŸœŸœŸœ˜;LšŸœŸœ˜"Lšœ˜L˜—š œŸœŸœŸœ˜Lš  œŸœŸœŸœ˜>Lš  œŸœŸœŸœ˜.Lš  œŸœŸœŸœ"˜ILš œŸœŸœŸœ ˜/Lš œŸœŸœŸœ˜*Lš œŸœŸœŸœ˜*Lš  œŸœŸœŸœ ˜/Lš œŸœŸœŸœ˜2L˜—šœ ™ Lš   œŸœŸœŸœŸœ˜,Lš  œŸœŸœŸœ ˜1Lš  œŸœŸœŸœŸœ ˜MLš   œŸœŸœŸœŸœ˜-Lš  œŸœŸœŸœ(˜]Lš œŸœŸœ Ÿœ&˜KLš œŸœŸœŸœ ˜;Lš  œŸœŸœ Ÿœ˜/Lš  œŸœŸœŸœ˜HLš œŸœŸœ Ÿœ&˜LLš œŸœŸœŸœ ˜,Lš  œŸœŸœ Ÿœ ˜6L˜—šœ™š œŸœŸœ$Ÿœ ˜ULš œ ŸœŸœ ŸœŸœŸœ˜@—Lš  œŸœŸœŸœ ˜;Lš  œŸœŸœŸœ ˜