ossrv_pub/boost_apis/boost/graph/detail/incidence_iterator.hpp
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ossrv_pub/boost_apis/boost/graph/detail/incidence_iterator.hpp	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,79 @@
+//
+//=======================================================================
+// 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_INCIDENCE_ITERATOR_HPP
+#define BOOST_GRAPH_DETAIL_INCIDENCE_ITERATOR_HPP
+
+#include <utility>
+#include <iterator>
+
+// OBSOLETE
+
+namespace boost {
+
+  namespace detail {
+    // EdgeDir tags
+    struct in_edge_tag { };
+    struct out_edge_tag { };
+    
+    template <class Vertex, class Edge, class Iterator1D, class EdgeDir>
+    struct bidir_incidence_iterator {
+      typedef bidir_incidence_iterator self;
+      typedef Edge edge_type;
+      typedef typename Edge::property_type EdgeProperty;
+    public:
+      typedef int difference_type;
+      typedef std::forward_iterator_tag iterator_category;
+      typedef edge_type reference;
+      typedef edge_type value_type;
+      typedef value_type* pointer;
+      inline bidir_incidence_iterator() {}
+      inline bidir_incidence_iterator(Iterator1D ii, Vertex src) 
+        : i(ii), _src(src) { }
+      
+      inline self& operator++() { ++i; return *this; }
+      inline self operator++(int) { self tmp = *this; ++(*this); return tmp; }
+      
+      inline reference operator*() const {
+        return deref_helper(EdgeDir());
+      }
+      inline self* operator->() { return this; }
+      
+      Iterator1D& iter() { return i; }
+      const Iterator1D& iter() const { return i; }
+
+      Iterator1D i;
+      Vertex _src;
+    protected:
+      inline reference deref_helper(out_edge_tag) const {
+        return edge_type( _src, (*i).get_target(), &(*i).get_property() );
+      }
+      inline reference deref_helper(in_edge_tag) const {
+        return edge_type((*i).get_target(), _src, &(*i).get_property() );
+      }
+    };
+
+    template <class V, class E, class Iter, class Dir>
+    inline bool operator==(const bidir_incidence_iterator<V,E,Iter,Dir>& x,
+                           const bidir_incidence_iterator<V,E,Iter,Dir>& y)
+    {
+      return x.i == y.i;
+    }
+    template <class V, class E, class Iter, class Dir>
+    inline bool operator!=(const bidir_incidence_iterator<V,E,Iter,Dir>& x,
+                           const bidir_incidence_iterator<V,E,Iter,Dir>& y)
+    {
+      return x.i != y.i;
+    }
+
+
+  }
+} 
+#endif