-- TexMainDefs.mesa

-- last written by Doug Wyatt, November 26, 1979  5:04 PM

DIRECTORY
	TexDefs: FROM "TexDefs",
	TexGlueDefs: FROM "TexGlueDefs",
	TexMathDefs: FROM "TexMathDefs",
	TexNodeDefs: FROM "TexNodeDefs",
	TexTableDefs: FROM "TexTableDefs",
	TexTokenDefs: FROM "TexTokenDefs";

TexMainDefs: DEFINITIONS =
BEGIN OPEN TexNodeDefs,TexDefs;

VHead: TYPE = RECORD
	[
	vlist: NodeListPtr,
	prevdepth: Dimn
	];

VHeadPtr: TYPE = POINTER TO VHead;

HHead: TYPE = RECORD
	[
	hlist: NodeListPtr,
	spacefactor: TexTableDefs.SpaceFactor
	];

HHeadPtr: TYPE = POINTER TO HHead;

pflag: Dimn=FIRST[Dimn];

-- from TexMain
Unimplemented: SIGNAL;
Continue: SIGNAL;
Reswitch: SIGNAL;
Undefined: SIGNAL;
CantDoThat: SIGNAL[mode: ModeType, restricted: BOOLEAN];
FallThru: SIGNAL;
MainControl: PROCEDURE;
DoIfEven: PROCEDURE[t: IfType];
DoIfT: PROCEDURE;
TrueEnd: PROCEDURE;
FalseEnd: PROCEDURE;
DoFntFam: PROCEDURE[mfont: TexMathDefs.MFont];
ScanMovedBox: PROCEDURE[neg: BOOLEAN] RETURNS[BoxNodePtr];
ScanGlueSpec: PROCEDURE RETURNS[TexGlueDefs.GluePtr];
ScanLeaders: PROCEDURE RETURNS[NodePtr];
SkipGlue: PROCEDURE[gluetype: TexGlueDefs.GlueType] RETURNS[NodePtr];
ScanRuleNode: PROCEDURE RETURNS[NodePtr];
GetBox: PROCEDURE[type: BoxType] RETURNS[p: BoxNodePtr];
HangVals: PROCEDURE[hang: HangSpec, width: Dimn]
	RETURNS[begin: CARDINAL, width0,width1,indent0,indent1: Dimn];
DoTopBotIns: PROCEDURE[tb: TopBotType, dir: Direction,
	Store: PROCEDURE[NodePtr]];
ScanPenltyNode: PROCEDURE RETURNS[NodePtr];
DoChng: PROCEDURE[ChngType];
DoSetCount,DoAdvCount,DoCount: PROCEDURE;
DoSave: PROCEDURE;
DoTopBotMark: PROCEDURE[t: MarkType];
CommonCmd: PROCEDURE;
CheckAlignment: PROCEDURE;
MissingBrace: PROCEDURE;
MissingMathbr: PROCEDURE;
MissingRight: PROCEDURE;
MissingRB: PROCEDURE;

-- from TexVMode
VAppend: PROCEDURE[vh: VHeadPtr, b: BoxNodePtr];
VMode: PROCEDURE[vhead: VHeadPtr, restricted: BOOLEAN];
SetOutputRoutine: PROCEDURE[TexTokenDefs.TokenListPtr];
RunOutputRoutine: PROCEDURE RETURNS[BoxNodePtr];

-- from TexHMode
HAppend: PROCEDURE[hh: HHeadPtr, b: BoxNodePtr];
HMode: PROCEDURE[hhead: HHeadPtr, restricted: BOOLEAN];
InterLineGlue: PROCEDURE[delta: Dimn, p: TexGlueDefs.GluePtr]
	RETURNS[TexGlueDefs.GluePtr];

-- from TexMMode
GetFormula: PROCEDURE[flist: NodeListPtr];
GetDisplay: PROCEDURE[dlist: NodeListPtr] RETURNS[eqno: BoxNodePtr];
MathQuad: PROCEDURE RETURNS[Dimn];

-- from TexPage
AddToPage: PROCEDURE[list: NodeListPtr];
Page: PROCEDURE RETURNS[page: BoxNodePtr];
Mark: PROCEDURE[t: MarkType] RETURNS[TexTokenDefs.TokenListPtr];
FlushOutput: PROCEDURE[maxdeadcycles: CARDINAL];

TexControl: PROGRAM;
TexMain: PROGRAM;
TexPage: PROGRAM;
TexVMode: PROGRAM;
TexHMode: PROGRAM;
TexMMode: PROGRAM;

END.