MobUtilDefs.Mesa
Copyright Ó 1985, 1989, 1991 by Xerox Corporation. All rights reserved.
Satterthwaite on November 5, 1985 2:38:10 pm PST
Lewis on 16-Dec-80 10:42:45
Maxwell, August 4, 1983 9:30 am
Paul Rovner, September 9, 1983 9:12 am
Russ Atkinson (RRA) March 7, 1985 0:06:04 am PST
Andy Litman March 4, 1988 7:52:58 pm PST
JKF July 22, 1989 3:57:14 pm PDT
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];
mob-specific operations
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];
other operations
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];
administrative procedures
Init: PROC[ownTable: Alloc.Handle];
Reset: PROC;
}.