DIRECTORY BcdDefs USING[VersionStamp], ConvertUnsafe USING[SubString], PrincOps USING[EPRange, MaxNGfi], RCMap USING[Index], Rope USING[ROPE], RTSymbolDefs USING[SymbolTableBase, SymbolRecordIndex, SymbolIdIndex, SymbolContextIndex, SymbolIndex, SymbolNameIndex, SymbolConstructorIndex, SymbolTableHandle, SymbolModuleIndex, ExtensionClass, TreeLink, BodyIndex, BlockContextLevel, CallableBodyIndex], SafeStorage USING[Type]; RTSymbolOps: DEFINITIONS = BEGIN OPEN Rope, RTSymbolDefs; EnumerateRecordIseis: PROC [ stb: SymbolTableBase, rsei: SymbolRecordIndex, p: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [stop: BOOL], level: CARDINAL _ 0] RETURNS [stopped: BOOL]; EnumerateCtxIseis: PROC [ stb: SymbolTableBase, ctx: SymbolContextIndex, proc: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [stop: BOOL], reallyComplete: BOOL _ FALSE] RETURNS [stopped: BOOL]; CountComponents: PROC [stb: SymbolTableBase, rsei: SymbolRecordIndex] RETURNS [n: NAT]; IsRC: PROC [stb: SymbolTableBase, seIndex: SymbolIndex, checkCommon: BOOL _ TRUE] RETURNS [BOOL]; IsUnion: PROC [stb: SymbolTableBase, seIndex: SymbolIndex] RETURNS [BOOL]; IsSequence: PROC [stb: SymbolTableBase, seIndex: SymbolIndex] RETURNS [BOOL]; PeelAllButLast: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [SymbolIdIndex]; SETypeXferMode: PROC [stb: SymbolTableBase, sei: SymbolIndex] RETURNS [Xfm]; Xfm: TYPE = {none, proc, signalOrError, other}; SETagIDP: PROC [stb: SymbolTableBase, sei: SymbolIndex] RETURNS [BOOL]; SEUnderType: PROC [stb: SymbolTableBase, sei: SymbolIndex] RETURNS [SymbolConstructorIndex]; ISEType: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [SymbolIndex]; BodyType: PROC [stb: SymbolTableBase, bti: BodyIndex] RETURNS [SymbolIndex]; CallableBodyEntryIndex: PROC [stb: SymbolTableBase, cbti: CallableBodyIndex] RETURNS [[0..PrincOps.EPRange*PrincOps.MaxNGfi)]; SEBitsForType: PROC [stb: SymbolTableBase, sei: SymbolIndex] RETURNS [INT]; IDCardinalValue: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [CARDINAL]; IDCardinalInfo: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [CARDINAL]; BodyLevel: PROC [stb: SymbolTableBase, bti: BodyIndex] RETURNS [BlockContextLevel]; ParentBody: PROC [stb: SymbolTableBase, bti: BodyIndex] RETURNS [BodyIndex]; BodyName: PROC [stb: SymbolTableBase, cbti: CallableBodyIndex] RETURNS [SymbolNameIndex]; RootBodyType: PROC [stb: SymbolTableBase] RETURNS [SymbolIndex]; ISEInfo: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [SymbolIndex]; ISECtx: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [SymbolContextIndex]; ISEFindExtension: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [ExtensionClass, TreeLink]; STBDirectoryCtx: PROC [stb: SymbolTableBase] RETURNS [SymbolContextIndex]; STBVersion: PROC [stb: SymbolTableBase] RETURNS [BcdDefs.VersionStamp]; STBSourceVersion: PROC [stb: SymbolTableBase] RETURNS [BcdDefs.VersionStamp]; ISEName: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [SymbolNameIndex]; ISEPublic: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [BOOL]; ISEExtended: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [BOOL]; ISEConstant: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [BOOL]; ISEImmutable: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [BOOL]; IsTypeSEI: PROC [sei: SymbolIndex] RETURNS [BOOL]; IsTransferConstructorSEI: PROC [stb: SymbolTableBase, sei: SymbolConstructorIndex] RETURNS [BOOL]; RSEVariant: PROC [stb: SymbolTableBase, rsei: SymbolRecordIndex] RETURNS [BOOL]; STBDirectoryCTX: PROC [stb: SymbolTableBase] RETURNS [SymbolContextIndex]; FirstCtxSe: PROC [stb: SymbolTableBase, ctx: SymbolContextIndex] RETURNS [SymbolIdIndex]; NextSe: PROC [stb: SymbolTableBase, isei: SymbolIdIndex] RETURNS [SymbolIdIndex]; NullISEI: PROC [isei: SymbolIdIndex] RETURNS [BOOL]; NullSEI: PROC [sei: SymbolIndex] RETURNS [BOOL]; NullBTI: PROC [bti: BodyIndex] RETURNS [BOOL]; CallableBTI: PROC [stb: SymbolTableBase, bti: BodyIndex] RETURNS [BOOL]; IsRootBTI: PROC [bti: BodyIndex] RETURNS [BOOL]; NullName: PROC [hti: SymbolNameIndex] RETURNS [BOOL]; NullCtx: PROC [ctx: SymbolContextIndex] RETURNS [BOOL]; NullStb: PROC [stb: SymbolTableBase] RETURNS [BOOL]; NullSth: PROC [sth: SymbolTableHandle] RETURNS [BOOL]; NullModuleIndex: PROC [mdi: SymbolModuleIndex] RETURNS [BOOL]; SubStringForName: PROC [stb: SymbolTableBase, hti: SymbolNameIndex] RETURNS [ConvertUnsafe.SubString]; STBToModuleName: PROC [stb: SymbolTableBase] RETURNS [ROPE]; AcquireType: PROC [stb: SymbolTableBase, seIndex: SymbolIndex, canonicalize: BOOL _ FALSE, rcmi: RCMap.Index _ LAST[RCMap.Index]] RETURNS [type: SafeStorage.Type]; AcquireSequenceType: PROC [stb: SymbolTableBase, sei: SymbolIndex, recordSTB: SymbolTableBase, recordSEIndex: SymbolRecordIndex] RETURNS [type: SafeStorage.Type]; AcquireRope: PROC [stb: SymbolTableBase, hti: SymbolNameIndex] RETURNS [ROPE]; AcquireAtom: PROC [stb: SymbolTableBase, hti: SymbolNameIndex] RETURNS [atom: ATOM]; END. RRTSymbolOps.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Rovner On July 6, 1983 3:27 pm Russ Atkinson (RRA) February 11, 1985 12:09:30 pm PST An interface to operations that actually deal with the actual bits in an actual symbol table. Bifurcation for symbol table bootstrapping occurs below this (and the RTSymbols and RTSymbolDefs) level of abstraction. PROCS for walking symbol table entries (exported by RTWalkSymbolsImpl) EnumerateRecordIseis invokes p once for each record field of (stb, rsei). It deals with incomplete contexts (opening other symbol tables if necesary) and with the linked nature of the symbol table's representation of bound variant records (it enumerates common parts in addition to the variant part). EnumerateRecordIseis uses EnumerateCtxIseis If rsei identifies a variant record then if level = 0 then the union or sequence isei will be included in the enumeration else the union or sequence isei will not be included in the enumeration EnumerateCtxIseis invokes proc once for each entry in the specified context. It deals with incomplete contexts (opening other symbol tables if necesary). It is called by EnumerateRecordIseis. It uses Outer. "reallyComplete" is used to circumvent an inadequacy in the symbol table's knowledge about the completeness of a context (i.e. whether it has been completely copied from the original symbol table), thus avoiding unneccessary access to the original symbol table via Outer. remove layers of type identifier re-definition until either a name change or default initialization is specified Is this SymbolIndex a SymbolIdIndex? PROCs for acquiring Types, ROPEs, ATOMs (exported by RTTSupportImpl) If rcmi = LAST[RCMap.Index] THEN compute the rcmap. sei is the index for the sequence part, recordSTB and recordSEIndex are the symbol table and index for the containing record Κ„˜codešœ™Kšœ Οmœ1™K˜šŸœžœ.žœ˜fK˜—KšŸœžœžœžœ˜