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]; }. VPWCLCoreFlatExtras.mesa Mike Spreitzer March 5, 1987 4:29:48 pm PST Abstract Cut Sets Flat printing Helpful things for CoreFlat Makes entries for all the public wires of root. Helpful things for CoreOps Calls VisitWire on each element of the seq. Calls VisitBinding on each element of the two sequences. Works for DAGs, not just trees. Κƒ– "cedar" style˜code™K™+—K˜KšΟk œœ˜&K˜š Οnœœ œœ œ ˜Dhead™šœœœ˜Kšžœ˜&Kšœœœœ˜—K˜Kš œœœ œœYœœ˜šK˜šžœœcœœ˜KšœœœG˜W—K˜Kšžœœ œ˜$K˜K˜ —™ šž œœ˜K˜Kšœœ˜Kšœœœ˜Kš ž œœœœœ˜;K˜ K˜—K˜Kš œœœ]œœ˜K˜šžœœ˜K˜Kšœ˜Kšœœœ˜Kš ž œœœœœ˜;K˜ K˜—K˜Kšžœœžœœ ˜NK˜Kšœœœœ˜2Kšœœœœ ˜*Kšœ œœΟc=œ˜X—™šžœœœ˜HK™/——™š ž œœœœœ˜OK™+K˜—š žœœ&œœœ˜eKšœ8™8—K˜šžœœœœ˜;J™——K˜——…—b ;