<> <> <> DIRECTORY Core, CoreRecordCellClass; CoreFlatten: CEDAR DEFINITIONS = BEGIN OPEN Core, CoreRecordCellClass; <> <> <> <> instantiationPath: ATOM; InstantiationPath: TYPE = REF InstantiationPathRep; InstantiationPathRep: TYPE; IsInstantiationPath: PROC [ra: REF ANY] RETURNS [BOOL]; NarrowToInstantiationPath: PROC [ra: REF ANY] RETURNS [InstantiationPath]; IsEmpty: PROC [ip: InstantiationPath] RETURNS [BOOL]; Split: PROC [ip: InstantiationPath, end: InstantiationPathDirection] RETURNS [step: Instance, rest: InstantiationPath]; Exhibit: PROC [ip: InstantiationPath, later: InstantiationPathDirection, to: PROC [step: Instance]]; InstantiationPathDirection: TYPE = {deeper, shallower}; wireSource: ATOM; WireSource: TYPE = REF WireSourceRec; WireSourceRec: TYPE = RECORD [ instantiationPath: InstantiationPath, <> wire: Wire ]; <> Flatten: PROC [design: Design, cellType: CellType, control: FlattenControl] RETURNS [flat: CellType]; <> expandNonPrimitive: FlattenControl; <> <> <> FlattenControl: TYPE = REF FlattenControlRec; FlattenControlRec: TYPE = RECORD [Decide: FlattenControlProc, data: REF ANY]; FlattenControlProc: TYPE = PROC [data: REF ANY, who: InstantiationPath] RETURNS [ExpandDecision]; ExpandDecision: TYPE = {leaf, expand}; <> <> ControlByFile: PROC [fileName: ROPE] RETURNS [control: FlattenControl]; END.