<> <> <> <> ParserTypeDefs: CEDAR DEFINITIONS = BEGIN Point: TYPE = RECORD [x,y: INT]; PointList: TYPE = LIST OF Point _ NIL; Path: TYPE = REF PathRecord; PathRecord: TYPE = RECORD [first, last: PointList, length: CARDINAL]; TEntry: TYPE = REF ANY -- {Mirror, Translate, Rotate} -- _ NIL; Mirror: TYPE = REF MirrorRec _ NIL; MirrorRec: TYPE = RECORD [coords: {X,Y}]; Translate: TYPE = REF TranslateRec _ NIL; TranslateRec: TYPE = RECORD [x, y: INT]; Rotate: TYPE = REF RotateRec _ NIL; RotateRec: TYPE = RECORD [xRot, yRot: INT]; TList: TYPE = REF TRecord _ NIL; TRecord: TYPE = RECORD [first, last: LIST OF TEntry, length: CARDINAL]; <> InitTypes: PROCEDURE RETURNS [BOOL]; FinishTypes: PROCEDURE RETURNS [BOOL]; <> AllocatePath: PROCEDURE RETURNS [Path]; FreePath: PROCEDURE [Path]; AppendPoint: PROCEDURE [Path, Point]; RemovePoint: PROCEDURE [Path] RETURNS [BOOL, Point]; CopyPath: PROCEDURE[from,to: Path]; PathLength: PROCEDURE [Path] RETURNS [CARDINAL]; <> AllocateTList: PROCEDURE RETURNS [TList]; FreeTList: PROCEDURE [TList]; AppendTList: PROCEDURE [TList, TEntry]; RemoveTList: PROCEDURE [TList] RETURNS [BOOL, TEntry]; TListLength: PROCEDURE [TList] RETURNS [CARDINAL]; END.