<> <> DIRECTORY Core, CoreFlat, CoreOps, IO; PWCLCoreFlatExtras: CEDAR DEFINITIONS = {OPEN CoreFlat, CO: CoreOps; <> Cut: TYPE = RECORD [ MembershipTester: CutMembershipTester, data: REF ANY _ NIL]; CutMembershipTester: TYPE = PROC [cutData: REF ANY, root: CellType, cellType: CellType, flatCell: FlatCellTypeRec, instance: CellInstance] RETURNS [BOOL]; Includes: PROC [cut: Cut, root: CellType, cellType: CellType, flatCell: FlatCellTypeRec, instance: CellInstance] RETURNS [BOOL] = INLINE {RETURN [cut.MembershipTester[cut.data, root, cellType, flatCell, instance]]}; SetCut: PROC [CutSet] RETURNS [Cut]; leaves: Cut; <> FlatPrint: PROC [ root: CellType, filter: Filter _ NIL, to: IO.STREAM, Annotator: PROC [subject: Descendant, to: IO.STREAM] _ NIL, leaves: Cut ]; Filter: TYPE ~ PROC [cellType: CellType, flatCell: FlatCellTypeRec, instance: CellInstance, bindings: Bindings] RETURNS [BOOL]; PrintNeighborhood: PROC [ root: CellType, of: DescendantListList, to: IO.STREAM, Annotator: PROC [subject: Descendant, to: IO.STREAM] _ NIL, leaves: Cut ]; MakeNeighborhoodFilter: PROC [of: DescendantListList, Consume: PROC [Filter]]; DescendantListList: TYPE = LIST OF DescendantList; DescendantList: TYPE = LIST OF Descendant; Descendant: TYPE = REF ANY--actually UNION [FlatWire, FlatCellType, REF InstancePath]--; <> InitialBindingTable: PROC [root: CellType] RETURNS [bindings: Bindings]; <> <> VisitWireSeq: PROC [seq: Wire, eachWire: CO.EachWireProc] RETURNS [quit: BOOL]; <> VisitBindingSeq: PROC [actual, public: Wire, eachWirePair: CO.EachWirePairProc] RETURNS [quit: BOOL]; <> CorrectConform: PROC [actual, public: Wire] RETURNS [BOOL]; <> }.