-- SMOps.mesa
-- last edit by Schmidt, May 17, 1983 4:35 pm
-- last edit by Satterthwaite, July 25, 1983 12:07 pm
-- object record for Cedar modeller
DIRECTORY
IO: TYPE USING [STREAM],
SMCommentTableOps: TYPE USING [CommentM],
SMLDriver: TYPE USING [LS],
SMTree: TYPE Tree USING [Info, Link],
SMTreeOps: TYPE --TreeOps-- USING [TM];
SMOps: CEDAR DEFINITIONS ~ {
OPEN Tree~~SMTree, TreeOps~~SMTreeOps;
-- A ModelState object contains the global state of an instance of a modeller.
-- In addition to this record, other modules with global state use monitors to
-- protect multiple use.
-- Examples:
-- SMReaderImpl (protects SMParserImpl, SMScannerImpl, SMTreeBuildImpl),
-- SMCompImpl (protects compiler)
-- SMFIImpl, SMProjImpl (protect caches)
-- this object cannot hold things that are not compatible with multiple
-- levels of models for an instance of the modeller, e.g. the source file input stream
MS: TYPE~REF ModelState;
ModelState: TYPE~RECORD[
in: IO.STREAM←NIL, -- input stream for typeScript
out: IO.STREAM←NIL, -- output stream for typeScript
msgOut: IO.STREAM←NIL, -- output stream for compiler progress messages
--
z: ZONE←NIL, -- use this zone to allocate all REF's
--
loc: Tree.Info, -- location in source
errors: BOOL←FALSE, -- cumulative error flag
debugFlag: BOOL←FALSE,
--
tree: Tree.Link←NIL, -- the root node of the (source) parse tree
val: Tree.Link←NIL, -- the root node of the evaluated tree
-- state information used by SMTreeImpl
tm: TreeOps.TM←NIL,
-- state information used by SMCommentTableImpl
comments: SMCommentTableOps.CommentM←NIL,
-- state information used by the modeller loader
ls: SMLDriver.LS←NIL
];
-- procedures
NewModel: PROC[in, out, msgout: IO.STREAM] RETURNS[m: MS];
}.