mirror of
https://github.com/boostorg/geometry.git
synced 2026-02-02 21:02:13 +00:00
[iterators][segment_iterator] move range_segment_iterator class to
detail::segment_iterator namespace; move bg::segment_iterator_value_type to bg::detail::segment_iterator::value_type;
This commit is contained in:
@@ -24,6 +24,10 @@
|
||||
namespace boost { namespace geometry
|
||||
{
|
||||
|
||||
#ifndef DOXYGEN_NO_DETAIL
|
||||
namespace detail { namespace segment_iterator
|
||||
{
|
||||
|
||||
|
||||
template <typename Range, closure_selector Closure = closure<Range>::value>
|
||||
struct range_iterator_type
|
||||
@@ -114,7 +118,12 @@ public:
|
||||
: m_it(--range_iterator_end<Range>::apply(r))
|
||||
{}
|
||||
|
||||
template <typename OtherRange, typename OtherValue, typename OtherReference>
|
||||
template
|
||||
<
|
||||
typename OtherRange,
|
||||
typename OtherValue,
|
||||
typename OtherReference
|
||||
>
|
||||
range_segment_iterator(range_segment_iterator
|
||||
<
|
||||
OtherRange,
|
||||
@@ -134,7 +143,12 @@ public:
|
||||
BOOST_MPL_ASSERT_MSG((are_conv), NOT_CONVERTIBLE, (types<OtherRange>));
|
||||
}
|
||||
|
||||
template <typename OtherRange, typename OtherValue, typename OtherReference>
|
||||
template
|
||||
<
|
||||
typename OtherRange,
|
||||
typename OtherValue,
|
||||
typename OtherReference
|
||||
>
|
||||
range_segment_iterator operator=(range_segment_iterator
|
||||
<
|
||||
OtherRange,
|
||||
@@ -169,7 +183,12 @@ private:
|
||||
return Reference(*m_it, *next);
|
||||
}
|
||||
|
||||
template <typename OtherRange, typename OtherValue, typename OtherReference>
|
||||
template
|
||||
<
|
||||
typename OtherRange,
|
||||
typename OtherValue,
|
||||
typename OtherReference
|
||||
>
|
||||
inline bool equal(range_segment_iterator
|
||||
<
|
||||
OtherRange,
|
||||
@@ -195,6 +214,9 @@ private:
|
||||
};
|
||||
|
||||
|
||||
}} // namespace detail::segment_iterator
|
||||
#endif // DOXYGEN_NO_DETAIL
|
||||
|
||||
}} // namespace boost::geometry
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||
|
||||
// Copyright (c) 2014, Oracle and/or its affiliates.
|
||||
|
||||
// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
|
||||
|
||||
// Licensed under the Boost Software License version 1.0.
|
||||
// http://www.boost.org/users/license.html
|
||||
|
||||
#ifndef BOOST_GEOMETRY_ITERATORS_DETAIL_SEGMENT_ITERATOR_VALUE_TYPE_HPP
|
||||
#define BOOST_GEOMETRY_ITERATORS_DETAIL_SEGMENT_ITERATOR_VALUE_TYPE_HPP
|
||||
|
||||
#include <boost/geometry/iterators/point_iterator_type.hpp>
|
||||
#include <boost/geometry/geometries/pointing_segment.hpp>
|
||||
|
||||
|
||||
namespace boost { namespace geometry
|
||||
{
|
||||
|
||||
#ifndef DOXYGEN_NO_DETAIL
|
||||
namespace detail { namespace segment_iterator
|
||||
{
|
||||
|
||||
template <typename Geometry>
|
||||
struct value_type
|
||||
{
|
||||
typedef typename detail_dispatch::point_iterator_value_type
|
||||
<
|
||||
Geometry
|
||||
>::type point_iterator_value_type;
|
||||
|
||||
typedef geometry::model::pointing_segment
|
||||
<
|
||||
point_iterator_value_type
|
||||
> type;
|
||||
};
|
||||
|
||||
}} // namespace detail::segment_iterator
|
||||
#endif // DOXYGEN_NO_DETAIL
|
||||
|
||||
}} // namespace boost::geometry
|
||||
|
||||
#endif // BOOST_GEOMETRY_ITERATORS_DETAIL_SEGMENT_ITERATOR_VALUE_TYPE_HPP
|
||||
@@ -20,7 +20,8 @@
|
||||
#include <boost/geometry/iterators/concatenate_iterator.hpp>
|
||||
#include <boost/geometry/iterators/flatten_iterator.hpp>
|
||||
#include <boost/geometry/iterators/point_iterator_type.hpp>
|
||||
#include <boost/geometry/iterators/range_segment_iterator.hpp>
|
||||
#include <boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp>
|
||||
#include <boost/geometry/iterators/detail/segment_iterator/value_type.hpp>
|
||||
|
||||
#include <boost/geometry/geometries/pointing_segment.hpp>
|
||||
|
||||
@@ -31,23 +32,6 @@
|
||||
namespace boost { namespace geometry
|
||||
{
|
||||
|
||||
|
||||
template <typename Geometry>
|
||||
struct segment_iterator_value_type
|
||||
{
|
||||
typedef typename detail_dispatch::point_iterator_value_type
|
||||
<
|
||||
Geometry
|
||||
>::type point_iterator_value_type;
|
||||
|
||||
typedef geometry::model::pointing_segment
|
||||
<
|
||||
point_iterator_value_type
|
||||
> type;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifndef DOXYGEN_NO_DISPATCH
|
||||
namespace dispatch
|
||||
{
|
||||
@@ -56,10 +40,10 @@ namespace dispatch
|
||||
template <typename Linestring>
|
||||
struct segment_iterator_type<Linestring, linestring_tag>
|
||||
{
|
||||
typedef range_segment_iterator
|
||||
typedef detail::segment_iterator::range_segment_iterator
|
||||
<
|
||||
Linestring,
|
||||
typename segment_iterator_value_type<Linestring>::type
|
||||
typename detail::segment_iterator::value_type<Linestring>::type
|
||||
> type;
|
||||
};
|
||||
|
||||
@@ -67,10 +51,10 @@ struct segment_iterator_type<Linestring, linestring_tag>
|
||||
template <typename Ring>
|
||||
struct segment_iterator_type<Ring, ring_tag>
|
||||
{
|
||||
typedef range_segment_iterator
|
||||
typedef detail::segment_iterator::range_segment_iterator
|
||||
<
|
||||
Ring,
|
||||
typename segment_iterator_value_type<Ring>::type
|
||||
typename detail::segment_iterator::value_type<Ring>::type
|
||||
> type;
|
||||
};
|
||||
|
||||
@@ -84,13 +68,17 @@ private:
|
||||
Polygon
|
||||
>::type inner_range;
|
||||
|
||||
typedef typename detail::segment_iterator::value_type
|
||||
<
|
||||
Polygon
|
||||
>::type value_type;
|
||||
|
||||
public:
|
||||
typedef concatenate_iterator
|
||||
<
|
||||
range_segment_iterator
|
||||
detail::segment_iterator::range_segment_iterator
|
||||
<
|
||||
inner_range,
|
||||
typename segment_iterator_value_type<Polygon>::type
|
||||
inner_range, value_type
|
||||
>,
|
||||
flatten_iterator
|
||||
<
|
||||
@@ -99,13 +87,13 @@ public:
|
||||
typename geometry::interior_type<Polygon>::type
|
||||
>::type,
|
||||
typename dispatch::segment_iterator_type<inner_range>::type,
|
||||
typename segment_iterator_value_type<Polygon>::type,
|
||||
value_type,
|
||||
dispatch::segments_begin<inner_range>,
|
||||
dispatch::segments_end<inner_range>,
|
||||
typename segment_iterator_value_type<Polygon>::type
|
||||
value_type
|
||||
>,
|
||||
typename segment_iterator_value_type<Polygon>::type,
|
||||
typename segment_iterator_value_type<Polygon>::type
|
||||
value_type,
|
||||
value_type
|
||||
> type;
|
||||
};
|
||||
|
||||
@@ -119,15 +107,20 @@ private:
|
||||
MultiLinestring
|
||||
>::type inner_range;
|
||||
|
||||
typedef typename detail::segment_iterator::value_type
|
||||
<
|
||||
MultiLinestring
|
||||
>::type value_type;
|
||||
|
||||
public:
|
||||
typedef flatten_iterator
|
||||
<
|
||||
typename boost::range_iterator<MultiLinestring>::type,
|
||||
typename dispatch::segment_iterator_type<inner_range>::type,
|
||||
typename segment_iterator_value_type<MultiLinestring>::type,
|
||||
value_type,
|
||||
dispatch::segments_begin<inner_range>,
|
||||
dispatch::segments_end<inner_range>,
|
||||
typename segment_iterator_value_type<MultiLinestring>::type
|
||||
value_type
|
||||
> type;
|
||||
};
|
||||
|
||||
@@ -141,15 +134,20 @@ private:
|
||||
MultiPolygon
|
||||
>::type inner_range;
|
||||
|
||||
typedef typename detail::segment_iterator::value_type
|
||||
<
|
||||
MultiPolygon
|
||||
>::type value_type;
|
||||
|
||||
public:
|
||||
typedef flatten_iterator
|
||||
<
|
||||
typename boost::range_iterator<MultiPolygon>::type,
|
||||
typename dispatch::segment_iterator_type<inner_range>::type,
|
||||
typename segment_iterator_value_type<MultiPolygon>::type,
|
||||
value_type,
|
||||
dispatch::segments_begin<inner_range>,
|
||||
dispatch::segments_end<inner_range>,
|
||||
typename segment_iterator_value_type<MultiPolygon>::type
|
||||
value_type
|
||||
> type;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user