-- Path.mesa
-- Last changed by Doug Wyatt, September 15, 1980 4:33 PM

DIRECTORY
Vector USING [Vec],
Cubic USING [Coeffs],
Area USING [Handle],
Pipe USING [Handle],
Clipper USING [Handle];

Path: DEFINITIONS = {

Handle: TYPE = LONG POINTER TO Object;

EnterPoint: PROCEDURE[self: Handle, v: Vector.Vec] = INLINE {
self.procs.EnterPoint[self,@v]
};
EnterCubic: PROCEDURE[self: Handle, c: Cubic.Coeffs] = INLINE {
self.procs.EnterCubic[self,@c]
};
Close: PROCEDURE[self: Handle] = INLINE {
self.procs.Close[self]
};
Boundary: PROCEDURE[self: Handle] RETURNS[Area.Handle] = INLINE {
RETURN[self.procs.Boundary[self]]
};
Generate: PROCEDURE[self: Handle,
clipper: Clipper.Handle, pipe: Pipe.Handle] = INLINE {
self.procs.Generate[self,clipper,pipe]
};
Free: PROCEDURE[selfPtr: LONG POINTER TO Handle] = INLINE {
self: Handle=selfPtr↑; selfPtr↑←NIL; self.procs.Free[self]
};

Object: PRIVATE TYPE = RECORD [
procs: LONG POINTER TO READONLY Procs,
data: LONG POINTER TO Data
];
Procs: PRIVATE TYPE = RECORD [
EnterPoint: PROCEDURE[self: Handle, v: POINTER TO Vector.Vec],
EnterCubic: PROCEDURE[self: Handle, c: POINTER TO Cubic.Coeffs],
Close: PROCEDURE[self: Handle],
Boundary: PROCEDURE[self: Handle] RETURNS[Area.Handle],
Generate: PROCEDURE[self: Handle,
clipper: Clipper.Handle, pipe: Pipe.Handle],
Free: PROCEDURE[self: Handle]
];
Data: PRIVATE TYPE;

}.