-- file CompilerOps.Mesa
-- last modified by Satterthwaite, March 13, 1979  11:01 AM

DIRECTORY
  SegmentDefs: FROM "segmentdefs" USING [FileHandle, FileSegmentHandle],
  StreamDefs: FROM "streamdefs" USING [StreamHandle];

CompilerOps: DEFINITIONS =
  BEGIN

 -- interface procedures

  StreamSpec: TYPE = RECORD [
    name: STRING,
    stream: StreamDefs.StreamHandle];

  Transaction: TYPE = RECORD [
   -- input
    source: StreamSpec,
    error: StreamSpec,
    object: StreamSpec,
    switches: PACKED ARRAY CHARACTER ['a..'z] OF BOOLEAN,
    debugPass: CARDINAL,
   -- output
    sourceTokens: CARDINAL,
    nErrors, nWarnings: CARDINAL,
    objectBytes, objectFrameSize, linkCount: CARDINAL];

  Compile: PROCEDURE [POINTER TO Transaction];
  NoSource: ERROR;
  Punt: ERROR;

 -- module interfaces

  TableId: TYPE = [0..3);

  Sequencer: PROGRAM [
      explicitSwapping: BOOLEAN,
      scratchFile: SegmentDefs.FileHandle,
      tableSegment: ARRAY TableId OF SegmentDefs.FileSegmentHandle];
  Interface: PROGRAM [
      explicitSwapping: BOOLEAN,
      tableSegment: ARRAY TableId OF SegmentDefs.FileSegmentHandle];

  END.