<> <> <> <> <> DIRECTORY Core, CoreRecord; 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]; <> propPrettyPrint, propRead, propWrite, propCopy, propCompare: ATOM; <<>> <> <> <> <> <> <> PropDontPrint: PROC[prop: ATOM]; -- causes nothing to be printed 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]; <> PropWriteProc: TYPE = PROC [out: STREAM, val: REF ANY]; PropReadProc: TYPE = PROC [in: STREAM] RETURNS [val: REF ANY]; PropPrettyPrintProc: TYPE = PROC [to: STREAM, prop: ATOM, val: REF ANY, depth: NAT]; PropDoCopy: REF PropCopyProc; -- Copy of val; trivial procedure; for some types it is a default <<>> PropRopeCompare: PropCompareProc; PropIntCompare: PropCompareProc; PropRopeWrite: PropWriteProc; PropAtomWrite: PropWriteProc; PropIntWrite: PropWriteProc; PropRopeRead: PropReadProc; PropAtomRead: PropReadProc; PropIntRead: PropReadProc; <> PropertyLiteral: TYPE = RECORD [key: ATOM, val: REF ANY _ NIL]; Props: PROC [lit1, lit2, lit3, lit4, lit5, lit6: PropertyLiteral _ []] RETURNS [properties: Properties]; GetDesignProp: PROC [from: Design, prop: ATOM] RETURNS [value: REF ANY _ NIL]; PutDesignProp: PROC [on: Design, prop: ATOM, value: REF ANY _ NIL]; 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: CoreRecord.CellInstance, prop: ATOM] RETURNS [value: REF ANY _ NIL]; PutCellInstanceProp: PROC [on: CoreRecord.CellInstance, prop: ATOM, value: REF ANY _ NIL]; END.