CDCallSpecific.mesa a ChipNDale module
Copyright © 1983, 1986 by Xerox Corporation. All rights reserved.
by Ch. Jacobi, September 20, 1983 12:35 pm
last edited Christian Jacobi, March 25, 1986 1:33:28 pm PST
CDCallSpecific: CEDAR DEFINITIONS =
BEGIN
CallProc:
TYPE =
PROC [design:
CD.Design, inst:
CD.Instance, x:
REF]
RETURNS [done: BOOL←TRUE, removeMe: BOOL←FALSE, include: CD.InstanceList←NIL,
repaintMe: BOOL←FALSE, repaintInclude: BOOL←FALSE];
--x: passed through
--done: if not done, this call will not be counted
--removeMe: inst is removed from the design
--include: this list is included into the design
CallForThis:
PROC [design:
CD.Design, inst:
CD.Instance, objectSpecific:
REF←
NIL, whatElse: CallProc←
NIL, x:
REF←
NIL]
RETURNS [
NAT];
--inst 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.Position, objectSpecific: REF←NIL, whatElse: CallProc←NIL, x: REF←NIL] RETURNS [NAT];
--the Call.. procedures loop over all instances of the most pushed in cell, or what
--ever their name suggests and:
--first check if the object class has a objectSpecific property on class and calls it,
--if there is no objectSpecific proc, or it returns NOT done, 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:
CD.ObjectClass, proc: CallProc];
--registers proc to be called for an object class, if key=objectSpecific.
--key must have been registered as property.
END.