geometry/include/boost/geometry/views/section_view.hpp
Barend Gehrels 1f90af482d Updated polygon.hpp, ring_type is now reference because it returns a reference to its rings
Updated many test files to avoid point_2d
Updated boost.polygon adaption

[SVN r67178]
2010-12-11 15:51:38 +00:00

67 lines
1.7 KiB
C++

// Boost.Geometry (aka GGL, Generic Geometry Library)
//
// Copyright Barend Gehrels 2010, Geodan, Amsterdam, the Netherlands.
// Use, modification and distribution is subject to 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_GEOMETRY_VIEWS_SECTION_VIEW_HPP
#define BOOST_GEOMETRY_VIEWS_SECTION_VIEW_HPP
#include <boost/range.hpp>
#include <boost/geometry/core/ring_type.hpp>
#include <boost/geometry/algorithms/detail/sections/get_section.hpp>
#include <boost/geometry/util/add_const_if_c.hpp>
namespace boost { namespace geometry
{
template <typename Geometry, typename Section>
class section_view
{
typedef typename geometry::range_type<Geometry>::type range_type;
public :
typedef typename boost::range_iterator
<
range_type
>::type iterator;
typedef typename boost::range_iterator
<
range_type const
>::type const_iterator;
explicit section_view(Geometry& geometry, Section const& section)
{
get_section(geometry, section, m_begin, m_end);
}
const_iterator begin() const { return m_begin; }
const_iterator end() const { return m_end; }
iterator begin() { return m_begin; }
iterator end() { return m_end; }
private :
// Might be replaced declaring as BOOST_AUTO
typedef typename boost::range_iterator
<
typename add_const_if_c
<
boost::is_const<Geometry>::value,
range_type
>::type
>::type iterator_type;
iterator_type m_begin, m_end;
};
}} // namespace boost::geometry
#endif // BOOST_GEOMETRY_VIEWS_SECTION_VIEW_HPP