DIRECTORY
Alloc: TYPE USING [Handle],
BcdDefs: TYPE USING [MTHandle, SGRecord, VersionStamp],
FileParms: TYPE USING [ActualId],
OSMiscOps: TYPE USING [Stamp],
Rope: TYPE USING [ROPE],
Symbols: TYPE USING [ISEIndex, CSEIndex, CTXIndex, CBTIndex],
SymbolSegment: TYPE USING [FGTEntry],
SymbolTable: TYPE USING [Base],
Tree: TYPE USING [Link];
ComData:
PROGRAM =
PUBLIC {
OPEN Symbols;
basic types (initialized in Pass1)
typeINT, typeCARDINAL: CSEIndex;
typeBOOL, typeCHAR, typeREAL: CSEIndex;
typeSTRING, typeStringBody: CSEIndex;
typeATOM, typeAtomRecord: CSEIndex;
typeRefANY, typeListANY: CSEIndex;
typeLOCK, typeCONDITION: CSEIndex;
global info describing module
interface: BOOL; -- interface module
monitored: BOOL;
stopping: BOOL;
outerCtx: CTXIndex; -- predefined identifiers
moduleCtx: CTXIndex; -- module identifiers
importCtx: CTXIndex; -- import id context
exportCtx: CTXIndex; -- export id context
mainCtx: CTXIndex; -- main program's context
nBodies: CARDINAL;
nInnerBodies: CARDINAL;
nSigCodes: CARDINAL;
defBodyLimit: CARDINAL;
linkCount: CARDINAL; -- global control links (externals, etc)
shared instance of SymbolTable
ownSymbols: SymbolTable.Base;
type identifiers (initialized in Pass1)
idANY: ISEIndex;
idINT, idCARDINAL, idCHAR, idBOOL, idREAL, idSTRING: ISEIndex;
idTEXT: ISEIndex;
idLOCK: ISEIndex;
idATOM: ISEIndex;
anonymous entry for undeclared ids
symbolic constants
tC0, tC1: Tree.Link;
idUNWIND: ISEIndex;
scratch storage
compilation options
switches: PACKED ARRAY CHAR['a..'z] OF BOOL;
input
source: FileParms.ActualId;
sourceTokens: CARDINAL;
pattern: FileParms.ActualId; -- old bcd to match
matched: BOOL;
variables used for error reporting
nErrors: CARDINAL;
nWarnings: CARDINAL;
bodyIndex: CBTIndex; -- current body
textIndex: CARDINAL; -- start index of line with error
output
compilerVersion: BcdDefs.VersionStamp;
objectFile: Rope.ROPE;
objectVersion: BcdDefs.VersionStamp;
objectStamp: OSMiscOps.Stamp;
globalFrameSize: CARDINAL;
objectBytes: CARDINAL;
fgTable: LONG DESCRIPTOR FOR ARRAY OF SymbolSegment.FGTEntry ← NIL;
bcdSeg, codeSeg, symSeg: BcdDefs.SGRecord;
mtRoot: BcdDefs.MTHandle ← NIL;
mtRootSize: CARDINAL;
fixupLoc: LONG CARDINAL;
}.