1.1 --- a/lemon/list_graph.h Tue May 09 14:28:02 2006 +0000
1.2 +++ b/lemon/list_graph.h Fri May 12 09:51:45 2006 +0000
1.3 @@ -566,8 +566,8 @@
1.4
1.5 /**************** Undirected List Graph ****************/
1.6
1.7 - typedef UGraphExtender<UGraphBaseExtender<
1.8 - ListGraphBase> > ExtendedListUGraphBase;
1.9 + typedef UGraphExtender<UndirGraphExtender<ListGraphBase> >
1.10 + ExtendedListUGraphBase;
1.11
1.12 /// \addtogroup graphs
1.13 /// @{
1.14 @@ -651,7 +651,7 @@
1.15 int first_edge, next_node;
1.16 };
1.17
1.18 - struct EdgeT {
1.19 + struct UEdgeT {
1.20 int aNode, prev_out, next_out;
1.21 int bNode, prev_in, next_in;
1.22 };
1.23 @@ -659,7 +659,7 @@
1.24 std::vector<NodeT> aNodes;
1.25 std::vector<NodeT> bNodes;
1.26
1.27 - std::vector<EdgeT> edges;
1.28 + std::vector<UEdgeT> edges;
1.29
1.30 int first_anode;
1.31 int first_free_anode;
1.32 @@ -685,18 +685,18 @@
1.33 bool operator<(const Node i) const {return id<i.id;}
1.34 };
1.35
1.36 - class Edge {
1.37 + class UEdge {
1.38 friend class ListBpUGraphBase;
1.39 protected:
1.40 int id;
1.41
1.42 - explicit Edge(int _id) { id = _id;}
1.43 + explicit UEdge(int _id) { id = _id;}
1.44 public:
1.45 - Edge() {}
1.46 - Edge (Invalid) { id = -1; }
1.47 - bool operator==(const Edge i) const {return id==i.id;}
1.48 - bool operator!=(const Edge i) const {return id!=i.id;}
1.49 - bool operator<(const Edge i) const {return id<i.id;}
1.50 + UEdge() {}
1.51 + UEdge (Invalid) { id = -1; }
1.52 + bool operator==(const UEdge i) const {return id==i.id;}
1.53 + bool operator!=(const UEdge i) const {return id!=i.id;}
1.54 + bool operator<(const UEdge i) const {return id<i.id;}
1.55 };
1.56
1.57 ListBpUGraphBase()
1.58 @@ -740,7 +740,7 @@
1.59 }
1.60 }
1.61
1.62 - void first(Edge& edge) const {
1.63 + void first(UEdge& edge) const {
1.64 int aNodeId = first_anode;
1.65 while (aNodeId != -1 && aNodes[aNodeId].first_edge == -1) {
1.66 aNodeId = aNodes[aNodeId].next_node != -1 ?
1.67 @@ -752,7 +752,7 @@
1.68 edge.id = -1;
1.69 }
1.70 }
1.71 - void next(Edge& edge) const {
1.72 + void next(UEdge& edge) const {
1.73 int aNodeId = edges[edge.id].aNode >> 1;
1.74 edge.id = edges[edge.id].next_out;
1.75 if (edge.id == -1) {
1.76 @@ -770,19 +770,19 @@
1.77 }
1.78 }
1.79
1.80 - void firstOut(Edge& edge, const Node& node) const {
1.81 + void firstFromANode(UEdge& edge, const Node& node) const {
1.82 LEMON_ASSERT((node.id & 1) == 0, NodeSetError());
1.83 edge.id = aNodes[node.id >> 1].first_edge;
1.84 }
1.85 - void nextOut(Edge& edge) const {
1.86 + void nextFromANode(UEdge& edge) const {
1.87 edge.id = edges[edge.id].next_out;
1.88 }
1.89
1.90 - void firstIn(Edge& edge, const Node& node) const {
1.91 + void firstFromBNode(UEdge& edge, const Node& node) const {
1.92 LEMON_ASSERT((node.id & 1) == 1, NodeSetError());
1.93 edge.id = bNodes[node.id >> 1].first_edge;
1.94 }
1.95 - void nextIn(Edge& edge) const {
1.96 + void nextFromBNode(UEdge& edge) const {
1.97 edge.id = edges[edge.id].next_in;
1.98 }
1.99
1.100 @@ -797,13 +797,13 @@
1.101 aNodes.size() * 2 - 2 : bNodes.size() * 2 - 1;
1.102 }
1.103
1.104 - static int id(const Edge& edge) {
1.105 + static int id(const UEdge& edge) {
1.106 return edge.id;
1.107 }
1.108 - static Edge edgeFromId(int id) {
1.109 - return Edge(id);
1.110 + static UEdge uEdgeFromId(int id) {
1.111 + return UEdge(id);
1.112 }
1.113 - int maxEdgeId() const {
1.114 + int maxUEdgeId() const {
1.115 return edges.size();
1.116 }
1.117
1.118 @@ -827,10 +827,10 @@
1.119 return bNodes.size();
1.120 }
1.121
1.122 - Node aNode(const Edge& edge) const {
1.123 + Node aNode(const UEdge& edge) const {
1.124 return Node(edges[edge.id].aNode);
1.125 }
1.126 - Node bNode(const Edge& edge) const {
1.127 + Node bNode(const UEdge& edge) const {
1.128 return Node(edges[edge.id].bNode);
1.129 }
1.130
1.131 @@ -874,7 +874,7 @@
1.132 return Node((bNodeId << 1) + 1);
1.133 }
1.134
1.135 - Edge addEdge(const Node& source, const Node& target) {
1.136 + UEdge addEdge(const Node& source, const Node& target) {
1.137 LEMON_ASSERT(((source.id ^ target.id) & 1) == 1, NodeSetError());
1.138 int edgeId;
1.139 if (first_free_edge != -1) {
1.140 @@ -882,7 +882,7 @@
1.141 first_free_edge = edges[edgeId].next_out;
1.142 } else {
1.143 edgeId = edges.size();
1.144 - edges.push_back(EdgeT());
1.145 + edges.push_back(UEdgeT());
1.146 }
1.147 if ((source.id & 1) == 0) {
1.148 edges[edgeId].aNode = source.id;
1.149 @@ -903,7 +903,7 @@
1.150 edges[bNodes[edges[edgeId].bNode >> 1].first_edge].prev_in = edgeId;
1.151 }
1.152 bNodes[edges[edgeId].bNode >> 1].first_edge = edgeId;
1.153 - return Edge(edgeId);
1.154 + return UEdge(edgeId);
1.155 }
1.156
1.157 void erase(const Node& node) {
1.158 @@ -918,7 +918,7 @@
1.159 }
1.160 }
1.161
1.162 - void erase(const Edge& edge) {
1.163 + void erase(const UEdge& edge) {
1.164 if (edges[edge.id].prev_out != -1) {
1.165 edges[edges[edge.id].prev_out].next_out = edges[edge.id].next_out;
1.166 } else {
1.167 @@ -953,8 +953,7 @@
1.168 };
1.169
1.170
1.171 - typedef BpUGraphExtender< BpUGraphBaseExtender<
1.172 - ListBpUGraphBase> > ExtendedListBpUGraphBase;
1.173 + typedef BpUGraphExtender< ListBpUGraphBase > ExtendedListBpUGraphBase;
1.174
1.175 /// \ingroup graphs
1.176 ///