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 f CellType--, wag: WireAnswering, doomedPorts: VarSet _ --CreateHashSet[]--, losses, fromGains, toGains: NATURAL _ 0 ]; WireAnswering: TYPE = REF WireAnsweringPrivate; WireAnsweringPrivate: TYPE = RECORD [ oldSubjConnectionss: RefSeq--role f RefTable(subj port _ wire connected to that port of that subject at first site)--, anses: Function--wire _ WireAns--]; 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, doTo: PortAction[dontAdd..addPort] _ dontAdd ]; PortAction: TYPE ~ {dontAdd, addPort, dePort, leave}; Survey: PROC [parent: CellType, child: Vertex, sibs: Seq--role f subject--, analysis: Analysis, first: BOOL] RETURNS [dif: BOOL _ FALSE]; GetRPAns: PROC [wag: WireAnswering, role: NATURAL, subjPort: Port, wire: Wire _ NIL, mayChange: BOOL _ FALSE] RETURNS [wa: WireAns]; }. 8LichenTransformsPrivate.mesa Last tweaked by Mike Spreitzer on July 13, 1987 9:41:35 am PDT Data for the wire connected to a port of a vertex to be moved. A border port found, if any. The border port created on the splinter cell type. Connected to the border at least once Connected to the border by more than one port. Connected to something other than the border & subjects. sawElse & sawBord g leave (existing port) sawElse & nsawBord W addPort nsawElse & sawBord & nsawBords W dePort nsawElse & sawBord & sawBords W leave (existing ports) nsawElse & nsawBord g dontAdd sawElse V sawBord W addPort nsawElse & nsawBord W dontAdd The sibs should all be components of parent. The border is taken to be child, if non-NIL, otherwise the mirror of parent. The child, if any, should not be among the sibs. Κ – "cedar" style˜code™K™>—K˜KšΟk œ˜K˜šΟnœœ ˜*Kšœœ˜K˜Kšœœœœ ˜(Kšœ œœœ˜5K˜Kšœ œœ˜%šœœœ˜ Kšœœ˜KšœΟcΠcmŸ œ˜"Kšœ˜KšœŸœ˜*Kšœœ˜'K˜—K˜Kšœœœ˜/šœœœ˜%KšœŸ Ÿ Ÿ=œ˜vKšœŸ Ÿ œ˜#—K˜šœ œœ˜#K™>—šœœœ˜K˜ Kšœ œœ˜Kšœ˜šœœ˜K™—šœœ˜K™2—Kšœœ˜šœ œœ˜K™%—šœ œœ˜K™.—šœ œœ˜K™8—Kšœœ˜Kšœœ˜šœ˜Kšœ Οmœ ‘œ™-Kšœ ‘œ‘œ‘œ™Kš ‘œ‘œ ‘œ‘œ ‘œ™)Kš‘œ‘œ ‘œ ‘œ™8Kš‘œ‘œ‘œ‘œ™—šœ,˜,Kšœ ‘œ ‘œ™Kš‘œ‘œ‘œ‘œ™—Kšœ˜—K˜Kšœ œ%˜5K˜šžœœ,Ÿ Ÿ œœœœœ˜‰Kš œΟeœ’œ’œ&’œ’œ"’œ™¬—K˜Kšžœœœœ œœœ˜„K˜K˜——…—| ½