diff -r d4d1f6ca5c23 -r 10681ee9d8ae lemon/smart_graph.h --- a/lemon/smart_graph.h Tue May 09 14:28:02 2006 +0000 +++ b/lemon/smart_graph.h Fri May 12 09:51:45 2006 +0000 @@ -119,8 +119,16 @@ ///\return The ID of the edge \c e. static int id(Edge e) { return e.n; } + /// \brief Returns the node from its \c id. + /// + /// Returns the node from its \c id. If there is not node + /// with the given id the effect of the function is undefinied. static Node nodeFromId(int id) { return Node(id);} + /// \brief Returns the edge from its \c id. + /// + /// Returns the edge from its \c id. If there is not edge + /// with the given id the effect of the function is undefinied. static Edge edgeFromId(int id) { return Edge(id);} Node addNode() { @@ -350,7 +358,7 @@ /**************** Undirected List Graph ****************/ - typedef UGraphExtender > + typedef UGraphExtender > ExtendedSmartUGraphBase; /// \ingroup graphs @@ -388,7 +396,7 @@ NodeT(int _first) : first(_first) {} }; - struct EdgeT { + struct UEdgeT { int aNode, next_out; int bNode, next_in; }; @@ -396,7 +404,7 @@ std::vector aNodes; std::vector bNodes; - std::vector edges; + std::vector edges; public: @@ -414,18 +422,18 @@ bool operator<(const Node i) const {return id> 1].first; } - void nextOut(Edge& edge) const { + void nextFromANode(UEdge& edge) const { edge.id = edges[edge.id].next_out; } - void firstIn(Edge& edge, const Node& node) const { + void firstFromBNode(UEdge& edge, const Node& node) const { LEMON_ASSERT((node.id & 1) == 1, NodeSetError()); edge.id = bNodes[node.id >> 1].first; } - void nextIn(Edge& edge) const { + void nextFromBNode(UEdge& edge) const { edge.id = edges[edge.id].next_in; } @@ -492,13 +500,13 @@ aNodes.size() * 2 - 2 : bNodes.size() * 2 - 1; } - static int id(const Edge& edge) { + static int id(const UEdge& edge) { return edge.id; } - static Edge edgeFromId(int id) { - return Edge(id); + static UEdge uEdgeFromId(int id) { + return UEdge(id); } - int maxEdgeId() const { + int maxUEdgeId() const { return edges.size(); } @@ -522,10 +530,10 @@ return bNodes.size(); } - Node aNode(const Edge& edge) const { + Node aNode(const UEdge& edge) const { return Node(edges[edge.id].aNode); } - Node bNode(const Edge& edge) const { + Node bNode(const UEdge& edge) const { return Node(edges[edge.id].bNode); } @@ -551,9 +559,9 @@ return Node(bNodes.size() * 2 - 1); } - Edge addEdge(const Node& source, const Node& target) { + UEdge addEdge(const Node& source, const Node& target) { LEMON_ASSERT(((source.id ^ target.id) & 1) == 1, NodeSetError()); - EdgeT edgeT; + UEdgeT edgeT; if ((source.id & 1) == 0) { edgeT.aNode = source.id; edgeT.bNode = target.id; @@ -566,7 +574,7 @@ edgeT.next_in = bNodes[edgeT.bNode >> 1].first; bNodes[edgeT.bNode >> 1].first = edges.size(); edges.push_back(edgeT); - return Edge(edges.size() - 1); + return UEdge(edges.size() - 1); } void clear() { @@ -581,13 +589,12 @@ int bNodeNum() const { return bNodes.size(); } typedef True EdgeNumTag; - int edgeNum() const { return edges.size(); } + int uEdgeNum() const { return edges.size(); } }; - typedef BpUGraphExtender< BpUGraphBaseExtender< - SmartBpUGraphBase> > ExtendedSmartBpUGraphBase; + typedef BpUGraphExtender ExtendedSmartBpUGraphBase; /// \ingroup graphs ///