lemon/list_graph.h
changeset 2076 10681ee9d8ae
parent 2031 080d51024ac5
child 2098 12f67fa3df7d
     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    ///