DIRECTORY Core, CoreClasses; CoreProperties: CEDAR DEFINITIONS = BEGIN OPEN Core; GetProp: PROC [from: Properties, prop: ATOM] RETURNS [value: REF ANY _ NIL]; PutProp: PROC [on: Properties, prop: ATOM, value: REF ANY _ NIL] RETURNS [new: Properties]; CopyProps: PROC [propList: Properties] RETURNS [copy: Properties]; AppendProps: PROC [winner, loser: Properties] RETURNS [copy: Properties]; Enumerate: PROC [props: Properties, consume: PROC [prop: ATOM, val: REF ANY _ NIL]]; PrintProperties: PROC [props: Properties, out: STREAM, depth: NAT _ 0]; RegisterProperty: PROC [prop: ATOM, properties: Properties _ NIL] RETURNS [sameProp: ATOM]; StoreProperties: PROC [prop: ATOM, properties: Properties]; FetchProperties: PROC [prop: ATOM] RETURNS [properties: Properties]; propPrint, propCopy, propCompare: ATOM; PropCompareProc: TYPE = PROC [prop: ATOM, value1, value2: REF ANY] RETURNS [equal: BOOL _ FALSE]; PropCopyProc: TYPE = PROC [prop: ATOM, value: REF ANY] RETURNS [valCopy: REF ANY]; PropPrintProc: TYPE = PROC [to: STREAM, prop: ATOM, val: REF ANY, depth: NAT]; PropDoCopy: REF PropCopyProc; -- Copy of the value; trivial procedure; PropDontPrint: REF PropPrintProc; -- Does not print anything PropRopeCompare: REF PropCompareProc; PropIntCompare: REF PropCompareProc; PropertyLiteral: TYPE = RECORD [key: ATOM, val: REF ANY _ NIL]; Props: PROC [lit1, lit2, lit3, lit4, lit5, lit6: PropertyLiteral _ []] RETURNS [properties: Properties]; GetWireProp: PROC [from: Wire, prop: ATOM] RETURNS [value: REF ANY _ NIL]; PutWireProp: PROC [on: Wire, prop: ATOM, value: REF ANY _ NIL]; GetCellTypeProp: PROC [from: CellType, prop: ATOM] RETURNS [value: REF ANY _ NIL]; PutCellTypeProp: PROC [on: CellType, prop: ATOM, value: REF ANY _ NIL]; GetCellInstanceProp: PROC [from: CoreClasses.CellInstance, prop: ATOM] RETURNS [value: REF ANY _ NIL]; PutCellInstanceProp: PROC [on: CoreClasses.CellInstance, prop: ATOM, value: REF ANY _ NIL]; END. 8CoreProperties.mesa Copyright c 1985 by Xerox Corporation. All rights reversed. Barth, October 2, 1985 11:30:37 am PDT Spreitzer, August 12, 1985 6:05:07 pm PDT Bertrand Serlet November 8, 1985 6:43:12 pm PST Theory This interface deals with properties. Operations If value is NIL then no such property. If value is NIL then the property is deleted. Uses the property-property propCopy to copy each item. Uses the property-property propCopy to copy each item. Uses the property-property propPrettyPrint to print each item. Registration Should be called by every tool which uses a property. Sets the properties proterties as given in the second argument. Returns the argument so that definition and registration can occur in the same line of Cedar code. To store properties on properties. To fetch properties on properties. Values should be REFs to procs of the appropriate TYPEs. No PropCompareProc means pointer comparison. No PropCopyProc means don't copy the property. No PropWriteProc means don't write the property. If valCopy is NIL then don't copy. Short Cuts ΚΆ˜– "Cedar" stylešœ™Jšœ Οmœ1™™>——™ š Ÿœžœžœžœžœ žœ˜[K™Ϊ—J˜šŸœžœžœ˜;K™"K™—šŸœžœžœžœ˜DK™"—K˜Kšœ"žœ˜'K™™8Kšœ,™,Kšœ.™.Kšœ0™0—K˜KšŸœžœžœžœžœžœžœ žœžœ˜ašŸ œžœžœžœ žœžœžœ žœžœ˜RK™"—šŸ œžœžœžœžœžœžœ žœ˜NK˜—KšΟb œžœΟc)˜GKš  œžœ‘˜