1 // Boost.Geometry (aka GGL, Generic Geometry Library) 2 3 // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. 4 // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. 5 // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. 6 7 // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library 8 // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. 9 10 // Use, modification and distribution is subject to the Boost Software License, 11 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 12 // http://www.boost.org/LICENSE_1_0.txt) 13 14 #ifndef BOOST_GEOMETRY_VIEWS_IDENTITY_VIEW_HPP 15 #define BOOST_GEOMETRY_VIEWS_IDENTITY_VIEW_HPP 16 17 18 #include <boost/range.hpp> 19 20 21 namespace boost { namespace geometry 22 { 23 24 // Silence warning C4512: assignment operator could not be generated 25 #if defined(_MSC_VER) 26 #pragma warning(push) 27 #pragma warning(disable : 4512) 28 #endif 29 30 /*! 31 \brief View on a range, not modifying anything 32 \tparam Range original range 33 \ingroup views 34 */ 35 template <typename Range> 36 struct identity_view 37 { 38 typedef typename boost::range_iterator<Range const>::type const_iterator; 39 typedef typename boost::range_iterator<Range>::type iterator; 40 identity_viewboost::geometry::identity_view41 explicit inline identity_view(Range& r) 42 : m_range(r) 43 {} 44 beginboost::geometry::identity_view45 inline const_iterator begin() const { return boost::begin(m_range); } endboost::geometry::identity_view46 inline const_iterator end() const { return boost::end(m_range); } 47 beginboost::geometry::identity_view48 inline iterator begin() { return boost::begin(m_range); } endboost::geometry::identity_view49 inline iterator end() { return boost::end(m_range); } 50 private : 51 Range& m_range; 52 }; 53 54 #if defined(_MSC_VER) 55 #pragma warning(pop) 56 #endif 57 58 }} // namespace boost::geometry 59 60 61 #endif // BOOST_GEOMETRY_VIEWS_IDENTITY_VIEW_HPP 62