VertexToPointIterator.h

Go to the documentation of this file.
00001 #ifndef VertexToPointIterator_HEADER
00002 #define VertexToPointIterator_HEADER
00003 
00004 #include <boost/iterator/transform_iterator.hpp>
00005 #include <boost/pointee.hpp>
00006 
00007 // Given a vertex iterator, create a point iterator.
00008 template <class VertexP, unsigned d> struct VertexToPoint {
00009   typedef const typename Geometry::Point<d>& result_type;
00010   result_type operator() (const VertexP v) const {
00011     return v->toPoint();
00012   }
00013 };
00014 
00015 template <class vertex_iterator, unsigned d>
00016 struct VertexToPointIterator : public boost::transform_iterator
00017               < VertexToPoint < typename boost::pointee <vertex_iterator> :: type , d >
00018               , vertex_iterator
00019               >
00020 {
00021   typedef VertexToPoint<typename boost::pointee<vertex_iterator> :: type, d> VtP;
00022   typedef boost::transform_iterator<VtP, vertex_iterator> super;
00023 
00024   VertexToPointIterator(const vertex_iterator& iit) : super(iit, VtP()) { }
00025 };
00026 
00027 template <unsigned d, class vertex_iterator>
00028 VertexToPointIterator <vertex_iterator,d> vertex_to_point(const vertex_iterator& it) {
00029   return it;
00030 }
00031 
00032 #endif

Generated on Thu Mar 27 19:04:14 2008 by  doxygen 1.4.6