<> <> DIRECTORY LichenDataStructure; LichenTransformsPrivate: CEDAR DEFINITIONS = {OPEN LichenDataStructure; RoledPortList: TYPE ~ LIST OF RoledPort; RoledPort: TYPE ~ RECORD [role: NATURAL, port: Port]; Analysis: TYPE = REF AnalysisPrivate; AnalysisPrivate: TYPE = RECORD [ roles: NATURAL, subjTypes: Seq--role wag: WireAnswering, doomedPorts: VarSet _ --CreateHashSet[]--, losses, fromGains, toGains: NATURAL _ 0 ]; WireAnswering: TYPE = REF WireAnsweringPrivate; WireAnsweringPrivate: TYPE = RECORD [ oldSubjConnectionss: RefSeq--role anses: Function--wire WireAns: TYPE = REF WireAnsPrivate; <> WireAnsPrivate: TYPE = RECORD [ proto: Wire, analyzed: BOOL _ FALSE, sawSelves: BoolSeq, fromPort: Port _ NIL, <> toPort: Port _ NIL, <> subjPorts: RoledPortList _ NIL, sawBord: BOOL _ FALSE, <> sawBords: BOOL _ FALSE, <> sawElse: BOOL _ FALSE, <> child: CellInstance _ NIL, counterpart: Wire _ NIL, doFrom: PortAction _ leave, << sawElse >> << sawElse >> <<¬sawElse >> <<¬sawElse >> <<¬sawElse >> doTo: PortAction[dontAdd..addPort] _ dontAdd << sawElse >> <<¬sawElse >> ]; PortAction: TYPE ~ {dontAdd, addPort, dePort, leave}; Survey: PROC [parent: CellType, child: Vertex, sibs: Seq--role FALSE]; <> GetRPAns: PROC [wag: WireAnswering, role: NATURAL, subjPort: Port, wire: Wire _ NIL, mayChange: BOOL _ FALSE] RETURNS [wa: WireAns]; }.