COIN-OR::LEMON - Graph Library

Changeset 2381:0248790c66ea in lemon-0.x for lemon/smart_graph.h


Ignore:
Timestamp:
03/01/07 17:47:23 (13 years ago)
Author:
Balazs Dezso
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@3212
Message:

Bug fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/smart_graph.h

    r2350 r2381  
    287287      while(s.edge_num<edges.size()) {
    288288        Edge edge = edgeFromId(edges.size()-1);
    289         Parent::getNotifier(Edge()).erase(edge);
     289        Parent::notifier(Edge()).erase(edge);
    290290        nodes[edges.back().source].first_out=edges.back().next_out;
    291291        nodes[edges.back().target].first_in=edges.back().next_in;
     
    294294      while(s.node_num<nodes.size()) {
    295295        Node node = nodeFromId(nodes.size()-1);
    296         Parent::getNotifier(Node()).erase(node);
     296        Parent::notifier(Node()).erase(node);
    297297        nodes.pop_back();
    298298      }
     
    506506    void firstInc(UEdge &edge, bool& d, const Node& v) const {
    507507      int de = nodes[v.id].first_out;
    508       edge.id = de / 2;
    509       d = ((de & 1) == 1);
     508      if (de != -1) {
     509        edge.id = de / 2;
     510        d = ((de & 1) == 1);
     511      } else {
     512        edge.id = -1;
     513        d = true;
     514      }
    510515    }
    511516    void nextInc(UEdge &edge, bool& d) const {
    512517      int de = (edges[(edge.id * 2) | (d ? 1 : 0)].next_out);
    513       edge.id = de / 2;
    514       d = ((de & 1) == 1);
     518      if (de != -1) {
     519        edge.id = de / 2;
     520        d = ((de & 1) == 1);
     521      } else {
     522        edge.id = -1;
     523        d = true;     
     524      }
    515525    }
    516526   
     
    642652        int n=edges.size()-1;
    643653        UEdge edge=uEdgeFromId(n/2);
    644         Parent::getNotifier(UEdge()).erase(edge);
     654        Parent::notifier(UEdge()).erase(edge);
    645655        std::vector<Edge> dir;
    646656        dir.push_back(edgeFromId(n));
    647657        dir.push_back(edgeFromId(n-1));
    648         Parent::getNotifier(Edge()).erase(dir);
     658        Parent::notifier(Edge()).erase(dir);
    649659        nodes[edges[n].target].first_out=edges[n].next_out;
    650660        nodes[edges[n-1].target].first_out=edges[n-1].next_out;
     
    655665        int n=nodes.size()-1;
    656666        Node node = nodeFromId(n);
    657         Parent::getNotifier(Node()).erase(node);
     667        Parent::notifier(Node()).erase(node);
    658668        nodes.pop_back();
    659669      }
     
    10241034      while(s.edge_num<edges.size()) {
    10251035        UEdge edge = uEdgeFromId(edges.size()-1);
    1026         Parent::getNotifier(UEdge()).erase(edge);
     1036        Parent::notifier(UEdge()).erase(edge);
    10271037        std::vector<Edge> dir;
    10281038        dir.push_back(Parent::direct(edge, true));
    10291039        dir.push_back(Parent::direct(edge, false));
    1030         Parent::getNotifier(Edge()).erase(dir);
     1040        Parent::notifier(Edge()).erase(dir);
    10311041        aNodes[edges.back().aNode >> 1].first=edges.back().next_out;
    10321042        bNodes[edges.back().bNode >> 1].first=edges.back().next_in;
     
    10351045      while(s.anode_num<aNodes.size()) {
    10361046        Node node = nodeFromANodeId(aNodes.size() - 1);
    1037         Parent::getNotifier(ANode()).erase(node);
    1038         Parent::getNotifier(Node()).erase(node);
     1047        Parent::notifier(ANode()).erase(node);
     1048        Parent::notifier(Node()).erase(node);
    10391049        aNodes.pop_back();
    10401050      }
    10411051      while(s.bnode_num<bNodes.size()) {
    10421052        Node node = nodeFromBNodeId(bNodes.size() - 1);
    1043         Parent::getNotifier(BNode()).erase(node);
    1044         Parent::getNotifier(Node()).erase(node);
     1053        Parent::notifier(BNode()).erase(node);
     1054        Parent::notifier(Node()).erase(node);
    10451055        bNodes.pop_back();
    10461056      }
Note: See TracChangeset for help on using the changeset viewer.