25 #ifndef AVOID_HYPEREDGETREE_H 26 #define AVOID_HYPEREDGETREE_H 47 class HyperedgeShiftSegment;
51 struct HyperedgeTreeEdge;
52 struct HyperedgeTreeNode;
54 typedef std::map<JunctionRef *, HyperedgeTreeNode *>
55 JunctionHyperedgeTreeNodeMap;
56 typedef std::set<JunctionRef *> JunctionSet;
62 typedef std::set<HyperedgeTreeNode *, CmpNodesInDim> OrderedHENodeSet;
64 struct HyperedgeTreeNode
69 void deleteEdgesExcept(HyperedgeTreeEdge *ignored);
70 bool removeOtherJunctionsFrom(HyperedgeTreeEdge *ignored,
71 JunctionSet &treeRoots);
72 void outputEdgesExcept(FILE *fp, HyperedgeTreeEdge *ignored);
73 void disconnectEdge(HyperedgeTreeEdge *edge);
74 void spliceEdgesFrom(HyperedgeTreeNode *oldNode);
75 void writeEdgesToConns(HyperedgeTreeEdge *ignored,
size_t pass);
76 void addConns(HyperedgeTreeEdge *ignored, Router *router,
78 void updateConnEnds(HyperedgeTreeEdge *ignored,
bool forward,
80 void listJunctionsAndConnectors(HyperedgeTreeEdge *ignored,
82 bool isImmovable(
void)
const;
83 void validateHyperedge(
const HyperedgeTreeEdge *ignored,
84 const size_t dist)
const;
86 std::list<HyperedgeTreeEdge *> edges;
87 JunctionRef *junction;
89 OrderedHENodeSet *shiftSegmentNodeSet;
91 bool isConnectorSource;
92 bool isPinDummyEndpoint;
96 struct HyperedgeTreeEdge
98 HyperedgeTreeEdge(HyperedgeTreeNode *node1, HyperedgeTreeNode *node2,
101 HyperedgeTreeNode *followFrom(HyperedgeTreeNode *from)
const;
102 bool zeroLength(
void)
const;
103 void splitFromNodeAtPoint(HyperedgeTreeNode *source,
const Point& point);
104 bool hasOrientation(
const size_t dimension)
const;
105 void outputNodesExcept(FILE *file, HyperedgeTreeNode *ignored);
106 void deleteNodesExcept(HyperedgeTreeNode *ignored);
107 bool removeOtherJunctionsFrom(HyperedgeTreeNode *ignored,
108 JunctionSet &treeRoots);
109 void writeEdgesToConns(HyperedgeTreeNode *ignored,
size_t pass);
110 void addConns(HyperedgeTreeNode *ignored, Router *router,
112 void updateConnEnds(HyperedgeTreeNode *ignored,
bool forward,
114 void disconnectEdge(
void);
115 void replaceNode(HyperedgeTreeNode *oldNode,
116 HyperedgeTreeNode *newNode);
117 void listJunctionsAndConnectors(HyperedgeTreeNode *ignored,
119 void validateHyperedge(
const HyperedgeTreeNode *ignored,
120 const size_t dist)
const;
122 std::pair<HyperedgeTreeNode *, HyperedgeTreeNode *> ends;
128 typedef std::map<VertInf *, HyperedgeTreeNode *> VertexNodeMap;
134 CmpNodesInDim(
const size_t dim);
135 bool operator()(
const HyperedgeTreeNode *lhs,
136 const HyperedgeTreeNode *rhs)
const;
138 const size_t m_dimension;
std::list< ConnRef * > ConnRefList
A list of ConnRef objects.
Definition: connector.h:47
Contains the interface for various geometry types and classes.
libavoid: Object-avoiding orthogonal and polyline connector routing library.
Definition: actioninfo.cpp:33
std::list< JunctionRef * > JunctionRefList
A list of JunctionRef objects.
Definition: hyperedge.h:53