CDCallSpecific.mesa a Chipndale module
by Ch. Jacobi September 20, 1983 12:35 pm
last edited Christian Jacobi May 8, 1984 9:31:22 am PDT
CDCallSpecific: CEDAR DEFINITIONS =
BEGIN
CallProc:
TYPE =
PROC [design:
CD.Design, aptr:
CD.ApplicationPtr, x:
REF]
RETURNS [done: BOOL←TRUE, removeMe: BOOL←FALSE, include: CD.ApplicationList←NIL,
repaintMe: BOOL←FALSE, repaintInclude: BOOL←FALSE];
--x: passed through
--done: if not done, this call will not be counted
--removeMe: aptr is removed from the design
--include: this list is included into the design
CallForThis:
PROC [design:
CD.Design, aptr:
CD.ApplicationPtr,
objectSpecific: REF←NIL, whatElse: CallProc←NIL, x: REF←NIL]
RETURNS [NAT];
--aptr MUST be part of design
CallForAll:
PROC [design:
CD.Design,
objectSpecific: REF←NIL, whatElse: CallProc←NIL, x: REF←NIL]
RETURNS [NAT];
CallForSelected:
PROC [design:
CD.Design,
objectSpecific: REF←NIL, whatElse: CallProc←NIL, x: REF←NIL]
RETURNS [NAT];
CallForOneSelected:
PROC [design:
CD.Design,
objectSpecific: REF←NIL, whatElse: CallProc←NIL, x: REF←NIL]
RETURNS [NAT];
CallIfOneSelected:
PROC [design:
CD.Design,
objectSpecific: REF←NIL, whatElse: CallProc←NIL, x: REF←NIL]
RETURNS [NAT];
CallForPointed:
PROC [design:
CD.Design, point:
CD.DesignPosition,
objectSpecific: REF←NIL, whatElse: CallProc←NIL, x: REF←NIL]
RETURNS [NAT];
--the Call.. procedures loop over all applications of the most pushed in cell, or what
--ever their name suggests and:
--first check if the object has a objectSpecific furtherProc and calls it,
--if there is no objectSpecific furtherProc, or it returns NOT done, it calls whatElse.
--objectSpecific=NIL means no search
--whatElse=NIL means nothing else to call.
--using removeMe is a slow method for deleting
--usually setting removeMe demands setting repaintMe to remove it from screen
Register:
PROC [key:
REF, objectType:
REF
CD.ObjectProcs, proc: CallProc];
--registers proc to be called for an objectType, if key=objectSpecific
--key must have been registered with CDObjectProcs.RegisterFurther
--[internally uses CDObjectProcs.StoreFurther; this procedure is for conveniance only]
END.