epoc32/include/stdapis/boost/graph/detail/edge.hpp
branchSymbian2
changeset 2 2fe1408b6811
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/stdapis/boost/graph/detail/edge.hpp	Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,94 @@
+//
+//=======================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//=======================================================================
+
+#ifndef BOOST_GRAPH_DETAIL_EDGE_HPP
+#define BOOST_GRAPH_DETAIL_EDGE_HPP
+
+#if __GNUC__ < 3
+#include <iostream>
+#else
+#include <iosfwd>
+#endif
+
+namespace boost {
+
+  namespace  detail {
+
+    template <typename Directed, typename Vertex>
+    struct edge_base
+    {
+      inline edge_base() {} 
+      inline edge_base(Vertex s, Vertex d)
+        : m_source(s), m_target(d) { }
+      Vertex m_source;
+      Vertex m_target;
+    };
+
+    template <typename Directed, typename Vertex>
+    class edge_desc_impl  : public edge_base<Directed,Vertex> {
+      typedef edge_desc_impl                              self;
+      typedef edge_base<Directed,Vertex> Base;
+    public: 
+      typedef void                              property_type;
+      
+      inline edge_desc_impl() : m_eproperty(0) {} 
+      
+      inline edge_desc_impl(Vertex s, Vertex d, const property_type* eplug)
+        : Base(s,d), m_eproperty(const_cast<property_type*>(eplug)) { }
+      
+      property_type* get_property() { return m_eproperty; }
+      const property_type* get_property() const { return m_eproperty; }
+      
+      //  protected:
+      property_type* m_eproperty;
+    };
+    
+    template <class D, class V>
+    inline bool
+    operator==(const detail::edge_desc_impl<D,V>& a, 
+               const detail::edge_desc_impl<D,V>& b)
+    {
+      return a.get_property() == b.get_property();
+    }
+    template <class D, class V>
+    inline bool
+    operator!=(const detail::edge_desc_impl<D,V>& a, 
+               const detail::edge_desc_impl<D,V>& b)
+    {
+      return ! (a.get_property() == b.get_property());
+    }
+
+  } //namespace detail
+  
+} // namespace boost
+
+namespace std {
+
+#if __GNUC__ < 3
+  template <class D, class V>
+  std::ostream& 
+  operator<<(std::ostream& os, const boost::detail::edge_desc_impl<D,V>& e)
+  {
+    return os << "(" << e.m_source << "," << e.m_target << ")";
+  }
+#else
+  template <class Char, class Traits, class D, class V>
+  std::basic_ostream<Char, Traits>& 
+  operator<<(std::basic_ostream<Char, Traits>& os,
+             const boost::detail::edge_desc_impl<D,V>& e)
+  {
+    return os << "(" << e.m_source << "," << e.m_target << ")";
+  }
+#endif
+
+}
+
+
+#endif // BOOST_GRAPH_DETAIL_DETAIL_EDGE_HPP