-- PPUtil.Mesa
-- Russ Atkinson, August 6, 1982 11:10 am

DIRECTORY
PPOps USING [TableId],
PPTree USING [Link],
PrintTV USING [NullPutClosure, PutClosure],
Rope USING [ROPE];

PPUtil: CEDAR DEFINITIONS = BEGIN OPEN Tree: PPTree, PrintTV, Rope;

-- binary table management

TableId: TYPE = PPOps.TableId;

AcquireTable: UNSAFE PROC [PPOps.TableId] RETURNS [LONG POINTER];
ReleaseTable: PROC [PPOps.TableId];

-- compiler passes

PassIndex: TYPE = {utilities, pass1, pass2, pass3, pass3p, pass4, pass5, debug};

PrefillSymbols: PROC;

P1Unit: PROC RETURNS [BOOL];

-- debugging

PrintTree: SAFE PROC [t: Tree.Link, put: PutClosure ← NullPutClosure];

-- printing
PrettyPrint: SAFE PROC
[root: Tree.Link, put: PutClosure ← NullPutClosure];

-- utility output

SetOutput: PROC
[put: PutClosure ← NullPutClosure] RETURNS [success: BOOL];
-- sets output procedure for output
-- waits if already set, of course

ShowCR: PROC [];

ShowDecimal: PROC [x: INT];

ShowOctal: PROC [x: INT];

ShowRope: PROC [r: ROPENIL];

ShowChar: PROC [CHAR];

ShowCharB: PROC [CHAR] RETURNS [BOOL];

-- swapping control

MakeSwappable: PROC [module: PROGRAM, pass: PassIndex];

Pass1: PROGRAM;

END.