-- Boxer.mesa -- Last changed by Doug Wyatt, September 15, 1980 5:56 PM DIRECTORY Vector USING [Vec], Area USING [Rec, Handle]; Boxer: DEFINITIONS = { Handle: TYPE = LONG POINTER TO Object; sink: READONLY Handle; New: PROC RETURNS[Handle]; Put: PROC[self: Handle, v: Vector.Vec] = INLINE { self.procs.Put[self,v] }; Include: PROC[self: Handle, area: Area.Handle] = INLINE { self.procs.Include[self,area] }; Expand: PROC[self: Handle, slop: REAL] = INLINE { self.procs.Expand[self,slop] }; Rectangle: PROC[self: Handle] RETURNS[Area.Rec] = INLINE { RETURN[self.procs.Rectangle[self]] }; Copy: PROC[self: Handle] RETURNS[Handle] = INLINE { RETURN[self.procs.Copy[self]] }; Free: PROC[selfPtr: LONG POINTER TO Handle] = INLINE { self: Handle=selfPtr^; selfPtr^_sink; self.procs.Free[self] }; Object: PRIVATE TYPE = RECORD [ procs: LONG POINTER TO READONLY Procs, data: LONG POINTER TO Data ]; Procs: PRIVATE TYPE = RECORD [ Put: PROC[self: Handle, v: Vector.Vec], Include: PROC[self: Handle, area: Area.Handle], Expand: PROC[self: Handle, slop: REAL], Rectangle: PROC[self: Handle] RETURNS[Area.Rec], Copy: PROC[self: Handle] RETURNS[Handle], Free: PROC[self: Handle] ]; Data: PRIVATE TYPE; BoxerImpl: PROGRAM; }.(670)