DIRECTORY CD USING [ObPtr, ApplicationPtr, Design, DrawRef], Rope USING [ROPE]; CDConditions: CEDAR DEFINITIONS = BEGIN ConditionProc: TYPE = PROC [me: CD.ApplicationPtr, environment: CD.DrawRef] RETURNS [drawMe: BOOL_TRUE]; GetProp: PROC [environment: CD.DrawRef, prop: REF, skipInnerMost: NAT_0] RETURNS [REF]; GetIntProp: PROC[environment: CD.DrawRef, prop: REF, skipInnerMost: NAT_0, ifNotFound: INT_0] RETURNS [INT]; Index: PROC[environment: CD.DrawRef, skipInnerMost: NAT_0, ifNotFound: INT_0] RETURNS [INT]; CondPtr: TYPE = REF CondRec; CondRec: TYPE = RECORD [ app: CD.ApplicationPtr, condition: ConditionProc_NIL, data: REF_NIL, cache: REF_NIL, -- speed up for condition's internal usage; --may be modified at runtime as controlled side effect fileName: Rope.ROPE_NIL, procName: Rope.ROPE_NIL, -- actually moduleName.procName myData: PRIVATE REF_NIL ]; CreateCondition: PROC [design: CD.Design, ob: CD.ObPtr, condition: ConditionProc_NIL, data: REF_NIL] RETURNS [CD.ObPtr]; ChangeCondition: PROC [design: CD.Design, ob: CD.ObPtr, fileName, procName: Rope.ROPE_NIL, data: REF_NIL, condition: ConditionProc_NIL] RETURNS [done: BOOL]; UpdateConditions: PROC [design: CD.Design, doAll: BOOL_TRUE] RETURNS [done: BOOL]; END. "CDConditions.mesa (part of Chipndale) by Christian Jacobi May 4, 1984 last edited by Christian Jacobi May 10, 1984 11:10:29 am PDT --vanilla stuff for designers and implementors of ConditionProc's -- condition procedures better have no arbitrary side effects; they are evaluated -- in unspecified order, or sometimes not at all. -- me.ob.specificRef is defined and of type CondPtr. --chipndale internal and client stuff --there are restrictions on the type of data; (because of IO!) --ob must already be a conditional object. --if condition is nil, tries to evaluate fileName, procName. --procName can be prefixed by a modulename. --redraws the complete design. --there are restrictions on the type of data. --done means condition evaluated according parameters. --the fileName and procName fields are set independently of the "done" return. --checks if any conditions have been recompiled and reloads them --doAll TRUE: checks all, including already loded conditions --doAll FALSE: checks the conditions which are not already loded ʲ˜Jšœ,™,J˜Jšœ#™#Jšœ>™>J˜šÏk ˜ Jšœœ*˜2Jšœœœ˜J˜—JšÏb œœ œ˜!Jš˜J˜J˜JšžA™AJ˜šÏn œœœœœ œ œœ˜hJšœR™RJšœ2™2Jšœ4™4—J˜JšŸœœœœœœœ˜WJšŸ œœœœœœœœ˜lJšŸœœœœœœœ˜\J˜J˜J˜J™Jšž%™%J˜Jšœ œœ ˜šœ œœ˜Jšœœ˜Jšœœ˜Jšœœœ˜šœœœÏc,˜=Jšœ 5˜7—Jšœœœ˜Jšœœœ ˜8Jšœ˜Jšœ˜—J˜šŸœœ œ œ!œœœœœ˜xJšœ>™>—J™šÐbnœœ œ œ!œœœœœœœ˜Jšœ*™*Jšœ<™