-- MDMain.Mesa
-- last edit by Schmidt, January 6, 1983 1:53 pm
-- last edit by Satterthwaite, January 31, 1983 2:58 pm
-- Pilot 6.0/ Mesa 7.0
-- definitions file for the main procedures of the modeller

DIRECTORY
  IO: TYPE USING [Handle],
  Rope: TYPE USING [Text],
  Subr: TYPE USING [TTYProcs],
  TypeScript: TYPE USING [TS];
			
MDMain: DEFINITIONS = {

-- each one of these procedures acquires the MONITOR LOCK
-- so only one of them can be in the MONITOR at a time


Transaction: TYPE = RECORD [
  filename: Rope.Text,
  noninteractive: BOOL,
  ttyprintwindow: Subr.TTYProcs,
  ttyTypeScript: TypeScript.TS,
  ttyin, ttyout: IO.Handle,
  msgout, debugout: IO.Handle];

-- attach modeller to Tioga Editor
AttachSymbiote: PROC[msgout: IO.Handle];

-- Begin compile, load, and start
Begin: PROC[action: REF Transaction, confirm: REF BOOL];

-- useful for debugging, just generates a config
Bind: PROC;

-- take the model and compile and bind it if necessary
-- if uniquename is TRUE then the binder will generate a bcd name
-- that is different from others on the local disk
-- if dontconfirm is TRUE, then don't ask the user
-- to confirm compiles and binds
Compile: PROC[
   action: REF Transaction,
   uniquename, tryreplacement: BOOL,
   confirm: REF BOOL];

-- compile with repl, load with repl
Continue: PROC[confirm: REF BOOL];

-- call this procedure to either write a character in the debugging messages
-- subwindow, if it exists, or throw the character away
DebugWP: PROC[ch: CHAR];

-- detach modeller from Tioga Editor
DetachSymbiote: PROC[msgout: IO.Handle];

-- makes the modeller look like a loader, loads the bcds
Loader: PROC[tryreplacement: BOOL];

-- just make the model "filename"
-- ttyprintwindow is the window to print on
MakeModel: PROC[action: REF Transaction];

-- notice "filename"
Notice: PROC[filename: Rope.Text];

-- look thru the model, do a notice on all the files
NoticeAll: PROC;

-- transfer back any files that have been changed, write new model
Permanent: PROC;

-- will print the line between the commands
PrintSeparatorLine: PROC;

-- just like StartModelling but does a StopModelling first
ReStartModelling: PROC[action: REF Transaction];

-- set nested model to search from
SetWorkingModel: PROC[modelname: Rope.Text];

-- having loaded the bcds with Loader, this will start the bcds
Start: PROC;

-- Start modelling on "filename"
-- ttyprintwindow is the window to print on
-- msgwindow is for compiler and binder status messages
StartModelling: PROC[action: REF Transaction];

-- stop modelling on this model
StopModelling: PROC;

-- write out model if its been changed, to local disk
Temporary: PROC;

-- print out model on screen
Type: PROC[modelname: Rope.Text, default: BOOL];

-- unloads what Loader loads
UnLoader: PROC;


-- VARIABLES
modellerIsIdle: VAR BOOL;

-- PROGRAMs
MDMainImpl: PROGRAM;

}.