-- MCrossRefDefs.mesa
-- wsh&kap 16-Mar-80 13:13
-- pdr July 1, 1982 5:45 pm
DIRECTORY
Rope USING[ROPE],
IO USING[Handle];
MCrossRefDefs: DEFINITIONS =
BEGIN
TokenType: TYPE = {reserved, identifier, none};
TokenHandle: TYPE = REF Token;
Token: TYPE =
RECORD[next: TokenHandle ← NIL, -- for sorting
name: ATOM ← NIL,
type: TokenType ← none,
fileNHead: fileNHandle ← NIL,
fileNTail: fileNHandle ← NIL
];
fileNHandle: TYPE = REF fileN;
fileN: TYPE =
RECORD[next: fileNHandle ← NIL,
name: ATOM ← NIL,
xrefHead: XRefHandle ← NIL,
xrefTail: XRefHandle ← NIL
];
LineNumberRange: TYPE = [0..77777B];
Coord: TYPE = MACHINE DEPENDENT RECORD
[ defn: BOOLEAN,
ln: LineNumberRange
];
XRefHandle: TYPE = REF XRef;
XRef: TYPE =
RECORD[next: XRefHandle ← NIL,
nRefs: CARDINAL ← 0,
coords: ARRAY [1..maxNRefs] OF Coord ← ALL[[defn: FALSE, ln: 0]]
];
------------------------------------------------------------
-- constants
maxNRefs: CARDINAL = 5;
Gacha8linesPerPage: CARDINAL = 74;
Gacha8charsPerLine: CARDINAL = 88;
tabPosition: CARDINAL;
-- procedures
SetMCrossOutputStream: PROCEDURE[fileName: Rope.ROPE];
DestroyMCrossOutputStream: PROCEDURE;
OutputLine: PROCEDURE [s: Rope.ROPE];
OutputString: PROCEDURE [s: Rope.ROPE];
OutputChar: PROCEDURE [ch: CHARACTER];
OutputRefCoord: PROCEDURE [coord: Coord];
PrintXREF: PROCEDURE[tsStream: IO.Handle];
END.