[Lemon-commits] [lemon_svn] klao: r593 - hugo/trunk/src/work/marci/experiment
Lemon SVN
svn at lemon.cs.elte.hu
Mon Nov 6 20:40:26 CET 2006
Author: klao
Date: Tue Apr 27 15:53:27 2004
New Revision: 593
Added:
hugo/trunk/src/work/marci/experiment/graph_wrapper_st_ostream_op.h
- copied, changed from r587, /hugo/trunk/src/work/marci/graph_wrapper.h
Log:
Egy helyes (warning nelkuli) megvalositasa az operator<< -nek az stGraphWrapper
Node es Edge-enek. Csak a konverziok es templates fuggvenyek "alacsony
prioritasa" miatt hasznalhatatlan.
Magyarul az stGW::Node -ra jol mukodik, de a NodeIt-ra mar nem, pedig van hozza
konverzio. Csak akkor mar inkabb a ListGraph::Node-jara definialt nem
template-es fuggvenyt hasznalja.
Copied: hugo/trunk/src/work/marci/experiment/graph_wrapper_st_ostream_op.h (from r587, /hugo/trunk/src/work/marci/graph_wrapper.h)
==============================================================================
--- /hugo/trunk/src/work/marci/graph_wrapper.h (original)
+++ hugo/trunk/src/work/marci/experiment/graph_wrapper_st_ostream_op.h Tue Apr 27 15:53:27 2004
@@ -1075,22 +1075,36 @@
}
};
+
+
+
+ /******************** S-T Graph Wrapper ********************/
+
+
+
+
+
+ template<typename Graph> class stGraphWrapper;
+
+ template<typename Graph>
+ inline
+ std::ostream&
+ operator<<(std::ostream& os,
+ typename stGraphWrapper<Graph>::Node const& i) {
+ os << "(node: " << typename Graph::Node(i) << " spec: " << i.spec <<")";
+ return os;
+ }
+
template<typename Graph>
- class stGraphWrapper;
+ inline
+ std::ostream&
+ operator<<(std::ostream& os,
+ typename stGraphWrapper<Graph>::Edge const& i) {
+ os << "(edge: " << typename Graph::Edge(i) << " spec: " << i.spec
+ << " node: " << i.n << ")";
+ return os;
+ }
-// template<typename Graph>
-// std::ostream&
-// operator<<(std::ostream& os, const typename stGraphWrapper<Graph>::Node& i) {
-// os << "(node: " << typename Graph::Node(i) << " spec: " << i.spec <<")";
-// return os;
-// }
-// template<typename Graph>
-// std::ostream&
-// operator<<(std::ostream& os, const typename stGraphWrapper<Graph>::Edge& i) {
-// os << "(edge: " << typename Graph::Edge(i) << " spec: " << i.spec <<
-// " node: " << i.n << ")";
-// return os;
-// }
/// experimentral, do not try it.
/// It eats a bipartite graph, oriented from S to T.
@@ -1146,13 +1160,6 @@
T_NODE(INVALID, 2) { }
-// std::ostream&
-// operator<<(std::ostream& os, const /*typename stGraphWrapper<Graph>::*/Node& i);
-// friend std::ostream&
-// operator<<(std::ostream& os, const /*typename stGraphWrapper<Graph>::*/Node& i);
-// friend std::ostream&
-// operator<<(std::ostream& os, const /*typename stGraphWrapper<Graph>::*/Edge& i);
-
class Node : public Graph::Node {
protected:
friend class GraphWrapper<Graph>;
@@ -1178,10 +1185,7 @@
static_cast<typename Graph::Node>(u)!=
static_cast<typename Graph::Node>(v));
}
-// template<typename G>
-// friend std::ostream&
-// operator<<(std::ostream& os, const typename stGraphWrapper<G>::Node& i);
- friend std::ostream& operator<< (std::ostream& os, const Node& i);
+ friend std::ostream& operator<< <Graph>(std::ostream& os, const Node& i);
int getSpec() const { return spec; }
};
@@ -1201,6 +1205,9 @@
operator Node() const { return Node(n, spec); }
};
+ typedef NodeIt NodeIt;
+ typedef Node Node;
+
class Edge : public Graph::Edge {
friend class GraphWrapper<Graph>;
friend class stGraphWrapper<Graph>;
@@ -1226,10 +1233,7 @@
static_cast<typename Graph::Edge>(v) ||
u.n!=v.n);
}
-// template<typename G>
-// friend std::ostream&
-// operator<<(std::ostream& os, const typename stGraphWrapper<G>::Edge& i);
- friend std::ostream& operator<< (std::ostream& os, const Edge& i);
+ friend std::ostream& operator<< <Graph>(std::ostream& os, const Edge& i);
int getSpec() const { return spec; }
};
@@ -1638,20 +1642,6 @@
// }
// };
-// template<typename G>
- friend std::ostream&
- operator<<(std::ostream& os, const /*typename stGraphWrapper<Graph>::*/Node& i) {
- os << "(node: " << typename Graph::Node(i) << " spec: " << i.spec <<")";
- return os;
- }
-// template<typename G>
- friend std::ostream&
- operator<<(std::ostream& os, const /*typename stGraphWrapper<Graph>::*/Edge& i) {
- os << "(edge: " << typename Graph::Edge(i) << " spec: " << i.spec <<
- " node: " << i.n << ")";
- return os;
- }
-
};
///@}
More information about the Lemon-commits
mailing list