<> <> <> <> <> DIRECTORY IO USING [STREAM], Rope USING [ROPE]; Core: CEDAR DEFINITIONS = BEGIN <> <> <> ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; Properties: TYPE = REF PropertyRec; PropertyRec: TYPE; <> Wire: TYPE = REF WireRec; WireRec: TYPE = RECORD [ properties: Properties _ NIL, elements: SEQUENCE size: NAT OF Wire]; <> <> CellClass: TYPE = REF CellClassRec; CellClassRec: TYPE = RECORD [ name: ROPE, recast: RecastProc _ NIL, properties: Properties _ NIL]; <> RecastProc: TYPE = PROC [me: CellType] RETURNS [new: CellType]; <> <> <> CellType: TYPE = REF CellTypeRec; CellTypeRec: TYPE = RECORD [ class: CellClass, public: Wire, data: REF ANY _ NIL, properties: Properties _ NIL]; <> <> END.