diff -r 7b0558c52de3 -r 0248790c66ea lemon/list_graph.h --- a/lemon/list_graph.h Thu Mar 01 16:04:12 2007 +0000 +++ b/lemon/list_graph.h Thu Mar 01 16:47:23 2007 +0000 @@ -527,10 +527,11 @@ } } virtual void build() { - NodeNotifier* notifier = getNotifier(); + NodeNotifier* _notifier = notifier(); Node node; std::vector nodes; - for (notifier->first(node); node != INVALID; notifier->next(node)) { + for (_notifier->first(node); node != INVALID; + _notifier->next(node)) { nodes.push_back(node); } for (int i = nodes.size() - 1; i >= 0; --i) { @@ -538,9 +539,10 @@ } } virtual void clear() { - NodeNotifier* notifier = getNotifier(); + NodeNotifier* _notifier = notifier(); Node node; - for (notifier->first(node); node != INVALID; notifier->next(node)) { + for (_notifier->first(node); node != INVALID; + _notifier->next(node)) { snapshot.eraseNode(node); } } @@ -577,10 +579,11 @@ } } virtual void build() { - EdgeNotifier* notifier = getNotifier(); + EdgeNotifier* _notifier = notifier(); Edge edge; std::vector edges; - for (notifier->first(edge); edge != INVALID; notifier->next(edge)) { + for (_notifier->first(edge); edge != INVALID; + _notifier->next(edge)) { edges.push_back(edge); } for (int i = edges.size() - 1; i >= 0; --i) { @@ -588,9 +591,9 @@ } } virtual void clear() { - EdgeNotifier* notifier = getNotifier(); + EdgeNotifier* _notifier = notifier(); Edge edge; - for (notifier->first(edge); edge != INVALID; notifier->next(edge)) { + for (_notifier->first(edge); edge != INVALID; _notifier->next(edge)) { snapshot.eraseEdge(edge); } } @@ -639,8 +642,8 @@ void attach(ListGraph &_graph) { graph = &_graph; - node_observer_proxy.attach(graph->getNotifier(Node())); - edge_observer_proxy.attach(graph->getNotifier(Edge())); + node_observer_proxy.attach(graph->notifier(Node())); + edge_observer_proxy.attach(graph->notifier(Edge())); } void detach() { @@ -911,13 +914,23 @@ void firstInc(UEdge &e, bool& d, const Node& v) const { int de = nodes[v.id].first_out; - e.id = de / 2; - d = ((de & 1) == 1); + if (de != -1 ) { + e.id = de / 2; + d = ((de & 1) == 1); + } else { + e.id = -1; + d = true; + } } void nextInc(UEdge &e, bool& d) const { int de = (edges[(e.id * 2) | (d ? 1 : 0)].next_out); - e.id = de / 2; - d = ((de & 1) == 1); + if (de != -1 ) { + e.id = de / 2; + d = ((de & 1) == 1); + } else { + e.id = -1; + d = true; + } } static int id(Node v) { return v.id; } @@ -1261,10 +1274,11 @@ } } virtual void build() { - NodeNotifier* notifier = getNotifier(); + NodeNotifier* _notifier = notifier(); Node node; std::vector nodes; - for (notifier->first(node); node != INVALID; notifier->next(node)) { + for (_notifier->first(node); node != INVALID; + _notifier->next(node)) { nodes.push_back(node); } for (int i = nodes.size() - 1; i >= 0; --i) { @@ -1272,9 +1286,10 @@ } } virtual void clear() { - NodeNotifier* notifier = getNotifier(); + NodeNotifier* _notifier = notifier(); Node node; - for (notifier->first(node); node != INVALID; notifier->next(node)) { + for (_notifier->first(node); node != INVALID; + _notifier->next(node)) { snapshot.eraseNode(node); } } @@ -1311,10 +1326,11 @@ } } virtual void build() { - UEdgeNotifier* notifier = getNotifier(); + UEdgeNotifier* _notifier = notifier(); UEdge edge; std::vector edges; - for (notifier->first(edge); edge != INVALID; notifier->next(edge)) { + for (_notifier->first(edge); edge != INVALID; + _notifier->next(edge)) { edges.push_back(edge); } for (int i = edges.size() - 1; i >= 0; --i) { @@ -1322,9 +1338,10 @@ } } virtual void clear() { - UEdgeNotifier* notifier = getNotifier(); + UEdgeNotifier* _notifier = notifier(); UEdge edge; - for (notifier->first(edge); edge != INVALID; notifier->next(edge)) { + for (_notifier->first(edge); edge != INVALID; + _notifier->next(edge)) { snapshot.eraseUEdge(edge); } } @@ -1373,8 +1390,8 @@ void attach(ListUGraph &_graph) { graph = &_graph; - node_observer_proxy.attach(graph->getNotifier(Node())); - edge_observer_proxy.attach(graph->getNotifier(UEdge())); + node_observer_proxy.attach(graph->notifier(Node())); + edge_observer_proxy.attach(graph->notifier(UEdge())); } void detach() { @@ -2039,10 +2056,11 @@ } } virtual void build() { - NodeNotifier* notifier = getNotifier(); + NodeNotifier* _notifier = notifier(); Node node; std::vector nodes; - for (notifier->first(node); node != INVALID; notifier->next(node)) { + for (_notifier->first(node); node != INVALID; + _notifier->next(node)) { nodes.push_back(node); } for (int i = nodes.size() - 1; i >= 0; --i) { @@ -2050,9 +2068,10 @@ } } virtual void clear() { - NodeNotifier* notifier = getNotifier(); + NodeNotifier* _notifier = notifier(); Node node; - for (notifier->first(node); node != INVALID; notifier->next(node)) { + for (_notifier->first(node); node != INVALID; + _notifier->next(node)) { snapshot.eraseNode(node); } } @@ -2089,10 +2108,11 @@ } } virtual void build() { - UEdgeNotifier* notifier = getNotifier(); + UEdgeNotifier* _notifier = notifier(); UEdge edge; std::vector edges; - for (notifier->first(edge); edge != INVALID; notifier->next(edge)) { + for (_notifier->first(edge); edge != INVALID; + _notifier->next(edge)) { edges.push_back(edge); } for (int i = edges.size() - 1; i >= 0; --i) { @@ -2100,9 +2120,10 @@ } } virtual void clear() { - UEdgeNotifier* notifier = getNotifier(); + UEdgeNotifier* _notifier = notifier(); UEdge edge; - for (notifier->first(edge); edge != INVALID; notifier->next(edge)) { + for (_notifier->first(edge); edge != INVALID; + _notifier->next(edge)) { snapshot.eraseUEdge(edge); } } @@ -2151,8 +2172,8 @@ void attach(ListBpUGraph &_graph) { graph = &_graph; - node_observer_proxy.attach(graph->getNotifier(Node())); - edge_observer_proxy.attach(graph->getNotifier(UEdge())); + node_observer_proxy.attach(graph->notifier(Node())); + edge_observer_proxy.attach(graph->notifier(UEdge())); } void detach() {