<> <> <> <> DIRECTORY CD USING [Design, ApplicationPtr, ObPtr, DesignPosition, Orientation], SpinifexCellPredicates USING [IsLogicalCell, CellPredicateProc] ; SpinifexInvert: CEDAR DEFINITIONS IMPORTS SpinifexCellPredicates ~ BEGIN <> Invert: PROCEDURE [design: CD.Design, appls: LIST OF CD.ApplicationPtr, ClientData: ClientDataProc _ NIL, IsCell: SpinifexCellPredicates.CellPredicateProc _ SpinifexCellPredicates.IsLogicalCell] RETURNS [leaves: LIST OF REF Inversion]; Inversion: TYPE ~ RECORD [ cell: CD.ObPtr, -- this cell, NIL for the pseudo-Inversion root. childCount: CARDINAL, -- Number of distinct sub-cells with this cell as a parent. parents: LIST OF REF Inversion, -- Cells which have this cell as a child. data: REF ANY _ NIL -- Client data. ]; ClientDataProc: TYPE ~ PROCEDURE [design: CD.Design, appl: CD.ApplicationPtr, pos: CD.DesignPosition, orient: CD.Orientation, parent: REF Inversion] RETURNS [data: REF ANY _ NIL]; END.