<<>> <> <> <> <> <> <> <> <> <> DIRECTORY Alloc USING [Handle], MobDefs, CountedVM USING [Handle], ConvertUnsafe USING [SubString], IO USING [STREAM], MobSymbols USING [CXIndex, HTIndex, STIndex], MobTree USING [Link], Table USING [Base], Rope USING [ROPE]; MobUtilDefs: DEFINITIONS = { OPEN MobDefs; HTIndex: TYPE~MobSymbols.HTIndex; MobHandle: TYPE = REF MobObject; MobObject: TYPE = RECORD [ bHeader: MobDefs.MobBase, countedVMHandle: CountedVM.Handle, bases: MobBases, limits: MobLimits]; MobBasePtr: TYPE~REF MobBases; MobBases: TYPE~RECORD [ ctb, mtb, lfb, rfb, tfb, etb, itb, sgb, ftb, evb, tyb, tmb, ntb, spb, fpb: Table.Base, ssb: LONG STRING]; MobLimits: TYPE~RECORD [ ft: FTIndex, ct: CTIndex, mt: MTIndex, et: EXPIndex, it: IMPIndex, sg: SGIndex, nt: NTIndex, tm: TMIndex, sp: SPIndex, fp: FPIndex]; nullBases: MobBases = [NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL]; nullLimits: MobUtilDefs.MobLimits = [FTNull, CTNull, MTNull, EXPNull, IMPNull, SGNull, NTNull, TMNull, SPNull, FPNull]; MobReaderErr: ERROR [err: Rope.ROPE]; <> ReadMob: PROC [stream: IO.STREAM] RETURNS [h: MobHandle]; FreeMob: PROC [h: MobHandle]; EnterConfig: PROC[mobh: MobHandle, oldCti: CTIndex, name: HTIndex] RETURNS[cti: CTIndex]; EnterExport: PROC[mobh: MobHandle, oldEti: EXPIndex, copyName: BOOL] RETURNS[eti: EXPIndex]; EnterFramePack: PROC[mobh: MobHandle, oldFpi: FPIndex] RETURNS[fpi: FPIndex]; EnterImport: PROC[mobh: MobHandle, oldIti: IMPIndex, copyName: BOOL] RETURNS[iti: IMPIndex]; EnterModule: PROC[mobh: MobHandle, oldMti: MTIndex, name: HTIndex] RETURNS[mti: MTIndex]; EnterSpace: PROC[mobh: MobHandle, oldSpi: SPIndex] RETURNS[spi: SPIndex]; EnterType: PROC[mobh: MobHandle, oldTypi: TYPIndex] RETURNS[typi: TYPIndex]; EnterTypeMap: PROC[mobh: MobHandle, oldTmi: TMIndex] RETURNS[tmi: TMIndex]; HtiForName: PROC[mobh: MobHandle, n: NameRecord] RETURNS[HTIndex]; MapName: PROC[mobh: MobHandle, n: NameRecord] RETURNS[NameRecord]; MergeFile: PROC[mobh: MobHandle, oldFti: FTIndex] RETURNS[fti: FTIndex]; <> EnterName: PROC[ss: ConvertUnsafe.SubString] RETURNS[NameRecord]; NameForHti: PROC[hti: HTIndex] RETURNS[NameRecord]; NameForSti: PROC[sti: MobSymbols.STIndex] RETURNS[NameRecord]; EnterFile: PROC[name: LONG STRING] RETURNS[fti: FTIndex]; SetFileVersion: PROC[fti: FTIndex, v: MobDefs.VersionStamp]; FileForVersion: PROC[v: MobDefs.VersionStamp] RETURNS[fti: FTIndex]; EqVersions: PROC[fti1, fti2: FTIndex] RETURNS[BOOL]; EquivalentVersions: PROC[v1, v2: MobDefs.VersionStamp] RETURNS[BOOL]; GftOverflow: SIGNAL; GetGfi: PROC[n: CARDINAL] RETURNS[gfi: ModuleIndex]; GetDummyGfi: PROC[n: CARDINAL] RETURNS[gfi: CARDINAL]; NewContext: PROC RETURNS[cxi: MobSymbols.CXIndex]; ContextForTree: PROC[t: MobTree.Link] RETURNS[MobSymbols.CXIndex]; NewSemanticEntry: PROC[hti: HTIndex] RETURNS[sti: MobSymbols.STIndex]; CreateInstanceName: PROC[hti: HTIndex, item: Namee]; InstanceName: PROC[item: Namee] RETURNS[NameRecord]; EnterSegment: PROC[seg: SGRecord] RETURNS[sgi: SGIndex]; <> Init: PROC[ownTable: Alloc.Handle]; Reset: PROC; }.