COIN-OR::LEMON - Graph Library

Changeset 2076:10681ee9d8ae in lemon-0.x for lemon/list_graph.h


Ignore:
Timestamp:
05/12/06 11:51:45 (18 years ago)
Author:
Balazs Dezso
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2739
Message:

Extenders modified

UGraphBaseExtender => UndirGraphExtender?
BpUGraphBaseExtender merged into BpUGraphExtender

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/list_graph.h

    r2031 r2076  
    567567  /**************** Undirected List Graph ****************/
    568568
    569   typedef UGraphExtender<UGraphBaseExtender<
    570     ListGraphBase> > ExtendedListUGraphBase;
     569  typedef UGraphExtender<UndirGraphExtender<ListGraphBase> >
     570  ExtendedListUGraphBase;
    571571
    572572  /// \addtogroup graphs
     
    652652    };
    653653
    654     struct EdgeT {
     654    struct UEdgeT {
    655655      int aNode, prev_out, next_out;
    656656      int bNode, prev_in, next_in;
     
    660660    std::vector<NodeT> bNodes;
    661661
    662     std::vector<EdgeT> edges;
     662    std::vector<UEdgeT> edges;
    663663
    664664    int first_anode;
     
    686686    };
    687687
    688     class Edge {
     688    class UEdge {
    689689      friend class ListBpUGraphBase;
    690690    protected:
    691691      int id;
    692692
    693       explicit Edge(int _id) { id = _id;}
     693      explicit UEdge(int _id) { id = _id;}
    694694    public:
    695       Edge() {}
    696       Edge (Invalid) { id = -1; }
    697       bool operator==(const Edge i) const {return id==i.id;}
    698       bool operator!=(const Edge i) const {return id!=i.id;}
    699       bool operator<(const Edge i) const {return id<i.id;}
     695      UEdge() {}
     696      UEdge (Invalid) { id = -1; }
     697      bool operator==(const UEdge i) const {return id==i.id;}
     698      bool operator!=(const UEdge i) const {return id!=i.id;}
     699      bool operator<(const UEdge i) const {return id<i.id;}
    700700    };
    701701
     
    741741    }
    742742 
    743     void first(Edge& edge) const {
     743    void first(UEdge& edge) const {
    744744      int aNodeId = first_anode;
    745745      while (aNodeId != -1 && aNodes[aNodeId].first_edge == -1) {
     
    753753      }
    754754    }
    755     void next(Edge& edge) const {
     755    void next(UEdge& edge) const {
    756756      int aNodeId = edges[edge.id].aNode >> 1;
    757757      edge.id = edges[edge.id].next_out;
     
    771771    }
    772772
    773     void firstOut(Edge& edge, const Node& node) const {
     773    void firstFromANode(UEdge& edge, const Node& node) const {
    774774      LEMON_ASSERT((node.id & 1) == 0, NodeSetError());
    775775      edge.id = aNodes[node.id >> 1].first_edge;
    776776    }
    777     void nextOut(Edge& edge) const {
     777    void nextFromANode(UEdge& edge) const {
    778778      edge.id = edges[edge.id].next_out;
    779779    }
    780780
    781     void firstIn(Edge& edge, const Node& node) const {
     781    void firstFromBNode(UEdge& edge, const Node& node) const {
    782782      LEMON_ASSERT((node.id & 1) == 1, NodeSetError());
    783783      edge.id = bNodes[node.id >> 1].first_edge;
    784784    }
    785     void nextIn(Edge& edge) const {
     785    void nextFromBNode(UEdge& edge) const {
    786786      edge.id = edges[edge.id].next_in;
    787787    }
     
    798798    }
    799799 
    800     static int id(const Edge& edge) {
     800    static int id(const UEdge& edge) {
    801801      return edge.id;
    802802    }
    803     static Edge edgeFromId(int id) {
    804       return Edge(id);
    805     }
    806     int maxEdgeId() const {
     803    static UEdge uEdgeFromId(int id) {
     804      return UEdge(id);
     805    }
     806    int maxUEdgeId() const {
    807807      return edges.size();
    808808    }
     
    828828    }
    829829
    830     Node aNode(const Edge& edge) const {
     830    Node aNode(const UEdge& edge) const {
    831831      return Node(edges[edge.id].aNode);
    832832    }
    833     Node bNode(const Edge& edge) const {
     833    Node bNode(const UEdge& edge) const {
    834834      return Node(edges[edge.id].bNode);
    835835    }
     
    875875    }
    876876
    877     Edge addEdge(const Node& source, const Node& target) {
     877    UEdge addEdge(const Node& source, const Node& target) {
    878878      LEMON_ASSERT(((source.id ^ target.id) & 1) == 1, NodeSetError());
    879879      int edgeId;
     
    883883      } else {
    884884        edgeId = edges.size();
    885         edges.push_back(EdgeT());
     885        edges.push_back(UEdgeT());
    886886      }
    887887      if ((source.id & 1) == 0) {
     
    904904      }
    905905      bNodes[edges[edgeId].bNode >> 1].first_edge = edgeId;
    906       return Edge(edgeId);
     906      return UEdge(edgeId);
    907907    }
    908908
     
    919919    }
    920920
    921     void erase(const Edge& edge) {
     921    void erase(const UEdge& edge) {
    922922      if (edges[edge.id].prev_out != -1) {
    923923        edges[edges[edge.id].prev_out].next_out = edges[edge.id].next_out;
     
    954954
    955955
    956   typedef BpUGraphExtender< BpUGraphBaseExtender<
    957     ListBpUGraphBase> > ExtendedListBpUGraphBase;
     956  typedef BpUGraphExtender< ListBpUGraphBase > ExtendedListBpUGraphBase;
    958957
    959958  /// \ingroup graphs
Note: See TracChangeset for help on using the changeset viewer.