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. šFile ParserTypeDefs.mesa March 5, 1980 4:57 PM September 5, 1980 4:18 PM by MN Last Edited by: McCreight, January 27, 1985 5:44:38 pm PST Should be called once before using any of the path procedures below The following routines support access to Paths, which are essentially queues. AllocatePath returns a brand new, empty path. FreePath frees all storage used by a path (a path that has been freed can no longer be used, i.e. you must use AllocatePath to get another). AppendPoint and RemovePoint add and delete points from their respective ends. The following routines support access to TLists, which are essentially queues. AllocateTList returns a brand new, empty TList. FreeTList frees all storage used by a TList (a TList that has been freed can no longer be used, i.e. you must use AllocateTList to get another). AppendTList and RemoveTList add and delete LinkedTEntries from their respective ends. ʆ˜Jšœ™Jšœ™Jšœ ™ Jšœ:™:J˜JšœÏkœ˜#˜Jš˜J˜Jšœœœœ˜ Jš œ œœœ œ˜&Jšœœœ ˜Jšœ œœ"œ˜EJ˜Jš œœœœÏc!œœ˜?Jšœœœ œ˜#Jš œ œœ œœ˜)Jšœ œœœ˜)Jšœœœœ˜(Jšœœœ œ˜#Jšœ œœœ˜+Jšœœœ œ˜ Jš œ œœœœœ˜GJ˜JšœC™CJšÏn œ œœœ˜$JšŸ œ œœœ˜&J˜JšœÙ™ÙJ˜JšŸ œ œœ˜'JšŸœ œ˜J˜JšŸ œ œ˜%JšŸ œ œœœ ˜4JšŸœ œ˜#J˜JšŸ œ œœœ˜0J˜Jšœè™èJ˜JšŸ œ œœ ˜)JšŸ œ œ ˜J˜JšŸ œ œ˜'JšŸ œ œ œœ ˜6J˜JšŸ œ œ œœ˜2J˜Jšœ˜J˜——…—ž ¾