-- file CompilerOps.Mesa
-- last modified by Satterthwaite, June 7, 1983 10:08 am
-- last modified by Russ Atkinson, 28-Aug-81 12:26:43
DIRECTORY
File: TYPE USING [Capability],
FileSegment: TYPE USING [Span],
FileParms: TYPE USING [ActualId, Ops],
Stream: TYPE USING [Handle],
Strings: TYPE USING [String],
TimeStamp: TYPE USING [Stamp];
CompilerOps: DEFINITIONS = {
-- transaction definitions
LetterSwitches: TYPE = PACKED ARRAY CHAR['a..'z] OF BOOL;
Transaction: TYPE = RECORD [
-- action
op: {compile, replace} ← $compile,
-- input
source: FileParms.ActualId,
sourceStream: Stream.Handle,
fileParms: FileParms.Ops,
switches: LetterSwitches,
pattern: FileParms.ActualId,
objectName: Strings.String,
objectFile: File.Capability,
debugPass: CARDINAL←CARDINAL.LAST,
-- output
objectVersion: TimeStamp.Stamp,
interface: BOOL,
matched: BOOL,
sourceTokens: CARDINAL,
nErrors, nWarnings: CARDINAL,
objectBytes, objectFrameSize, linkCount: CARDINAL,
bcdPages, codePages, symbolPages: FileSegment.Span,
-- interaction
getStream: PROC [StreamId] RETURNS [Stream.Handle],
startPass: PROC [CARDINAL] RETURNS [goOn: BOOL]];
StreamId: TYPE = MACHINE DEPENDENT {source, object, log, (255)};
-- inquiries
DefaultSwitches: PROC RETURNS [LetterSwitches];
CompilerVersion: PROC RETURNS [TimeStamp.Stamp];
AppendHerald: PROC [Strings.String];
-- operations
Start: PROC [scratchZone: UNCOUNTED ZONE];
DoTransaction: PROC [POINTER TO Transaction]; -- really a VAR
Stop: PROC;
Punt: ERROR;
}.