[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