<> <> <> DIRECTORY Rope USING[ROPE], IO USING[STREAM]; 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]] ]; <<---------------------------------------------------------->> <> maxNRefs: CARDINAL = 5; Gacha8linesPerPage: CARDINAL = 74; Gacha8charsPerLine: CARDINAL = 88; tabPosition: CARDINAL; <> SetMCrossOutputStream: PROC[fileName: Rope.ROPE]; DestroyMCrossOutputStream: PROC; OutputLine: PROC [s: Rope.ROPE]; OutputString: PROC [s: Rope.ROPE]; OutputChar: PROC [ch: CHARACTER]; OutputRefCoord: PROC [coord: Coord]; PrintXREF: PROC[tsStream: IO.STREAM]; END.