<> <> <> 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]--; <> LowerInstancePath: PROC [path, by: InstancePath] RETURNS [lower: InstancePath]; <> <<>> LowerFlatCell: PROC [fc: FlatCellTypeRec, by: InstancePath] RETURNS [lower: FlatCellTypeRec]; LowerFlatWire: PROC [fw: FlatWireRec, by: InstancePath] RETURNS [lower: FlatWireRec]; }.