-- TexIODefs.mesa

-- last written by Doug Wyatt, November 11, 1979  12:32 AM

DIRECTORY
	TexDefs: FROM "TexDefs",
	TexMathDefs: FROM "TexMathDefs",
	StreamDefs: FROM "StreamDefs";

TexIODefs: DEFINITIONS =
BEGIN OPEN TexMathDefs,TexDefs;

FF: CHARACTER=14C;
CR: CHARACTER=15C;
LF: CHARACTER=12C;
SP: CHARACTER=' ;

StreamHandle: TYPE = StreamDefs.StreamHandle;

GetStream: PROCEDURE RETURNS[StreamHandle];
SetStream: PROCEDURE[StreamHandle];
UseDisplay: PROCEDURE; -- use the default display stream

Wc: PROCEDURE[c: CHARACTER]; -- write a character
Cr,Sp,Esc: PROCEDURE; -- write a carriage return or space or escape char
SetEsc: PROCEDURE[c: CHARACTER]; -- set the escape character used by Esc
Ws: PROCEDURE[s: STRING]; -- write a string
Wn: PROCEDURE[n: INTEGER]; -- write a signed decimal number
Wnf: PROCEDURE[n: CARDINAL, f: CARDINAL]; -- unsigned decimal, f columns
Wo: PROCEDURE[o: CARDINAL]; -- write an unsigned octal number
Wss: PROCEDURE[s: STRING, i1,i2: CARDINAL]; -- write a substring

Loc: PROCEDURE RETURNS[CARDINAL];
Tab: PROCEDURE[CARDINAL];

-- Pc, Ps, Pn, Po, Pss are the same as Wc, Ws, Wn, Wo, Wss except that they
-- first print a "newline" character

Pc: PROCEDURE[c: CHARACTER] = INLINE BEGIN Cr;Wc[c] END;
Ps: PROCEDURE[s: STRING] = INLINE BEGIN Cr;Ws[s] END;
Pn: PROCEDURE[n: INTEGER] = INLINE BEGIN Cr;Wn[n] END;
Po: PROCEDURE[o: CARDINAL] = INLINE BEGIN Cr;Wo[o] END;
Pss: PROCEDURE[s: STRING, i1,i2: CARDINAL] = INLINE BEGIN Cr;Wss[s,i1,i2] END;


-- procedures for writing various Tex objects

WFont: PROCEDURE[f: Font];
WFChar: PROCEDURE[fc: FChar];
WMFont: PROCEDURE[m: MFont];
WMChar: PROCEDURE[mchar: MChar];
WMCharOctal: PROCEDURE[mchar: MChar];
WDimn: PROCEDURE[d: Dimn]; -- write value of d in points


-- input procedures

ReadChar: PROCEDURE RETURNS[CHARACTER];
ReadLine: PROCEDURE[STRING];


TexIO: PROGRAM;

END.