<> <> <> <> <<>> DIRECTORY CD, CDObjectProcs, CDStretchyExtras; CDStretchyExtrasImpl: CEDAR PROGRAM IMPORTS CDObjectProcs EXPORTS CDStretchyExtras = BEGIN MatchProc: TYPE = CDStretchyExtras.MatchProc; <<--PROC [me: CD.ObPtr, r: CD.DesignRect, layer: CD.Layer, prim: BOOL, horz: BOOL] RETURNS [BOOL];>> Match: PUBLIC PROC[me: CD.ObPtr, r: CD.DesignRect, layer: CD.Layer, prim: BOOL, horz: BOOL] RETURNS [BOOL] = BEGIN match: BOOL _ FALSE; refP: REF = CDObjectProcs.FetchFurther[me.p, furtherKey]; IF refP#NIL THEN WITH refP SELECT FROM mp: REF MatchProc => match _ mp^[me, r, layer, prim, horz]; ENDCASE => NULL; RETURN [match] END; HasMatchProc: PUBLIC PROC [me: CD.ObPtr] RETURNS [BOOL] = BEGIN RETURN [CDObjectProcs.FetchFurther[me.p, furtherKey]#NIL]; END; furtherKey: ATOM = $StretchyExtras; InstallMatch: PUBLIC PROC [type: REF CD.ObjectProcs, match: MatchProc] = BEGIN CDObjectProcs.StoreFurther[type, furtherKey, NEW[MatchProc_match]]; END; CDObjectProcs.RegisterFurther[furtherKey]; END.