<> <> <> <> <> 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.