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 | |
41 | explicit inline identity_view(Range& r) |
42 | : m_range(r) |
43 | {} |
44 | |
45 | inline const_iterator begin() const { return boost::begin(m_range); } |
46 | inline const_iterator end() const { return boost::end(m_range); } |
47 | |
48 | inline iterator begin() { return boost::begin(m_range); } |
49 | 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 | |