mirror of
https://github.com/boostorg/geometry.git
synced 2026-02-10 23:42:12 +00:00
Made dispatch::perimeter able to retrieve the tag by itself.
[SVN r80665]
This commit is contained in:
@@ -33,7 +33,7 @@ namespace dispatch
|
||||
{
|
||||
|
||||
// Default perimeter is 0.0, specializations implement calculated values
|
||||
template <typename Tag, typename Geometry>
|
||||
template <typename Geometry, typename Tag = typename tag<Geometry>::type>
|
||||
struct perimeter : detail::calculate_null
|
||||
{
|
||||
typedef typename default_length_result<Geometry>::type return_type;
|
||||
@@ -46,7 +46,7 @@ struct perimeter : detail::calculate_null
|
||||
};
|
||||
|
||||
template <typename Geometry>
|
||||
struct perimeter<ring_tag, Geometry>
|
||||
struct perimeter<Geometry, ring_tag>
|
||||
: detail::length::range_length
|
||||
<
|
||||
Geometry,
|
||||
@@ -55,7 +55,7 @@ struct perimeter<ring_tag, Geometry>
|
||||
{};
|
||||
|
||||
template <typename Polygon>
|
||||
struct perimeter<polygon_tag, Polygon> : detail::calculate_polygon_sum
|
||||
struct perimeter<Polygon, polygon_tag> : detail::calculate_polygon_sum
|
||||
{
|
||||
typedef typename default_length_result<Polygon>::type return_type;
|
||||
typedef detail::length::range_length
|
||||
@@ -103,11 +103,7 @@ inline typename default_length_result<Geometry>::type perimeter(
|
||||
|
||||
// detail::throw_on_empty_input(geometry);
|
||||
|
||||
return dispatch::perimeter
|
||||
<
|
||||
typename tag<Geometry>::type,
|
||||
Geometry
|
||||
>::apply(geometry, strategy_type());
|
||||
return dispatch::perimeter<Geometry>::apply(geometry, strategy_type());
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -132,11 +128,7 @@ inline typename default_length_result<Geometry>::type perimeter(
|
||||
|
||||
// detail::throw_on_empty_input(geometry);
|
||||
|
||||
return dispatch::perimeter
|
||||
<
|
||||
typename tag<Geometry>::type,
|
||||
Geometry
|
||||
>::apply(geometry, strategy);
|
||||
return dispatch::perimeter<Geometry>::apply(geometry, strategy);
|
||||
}
|
||||
|
||||
}} // namespace boost::geometry
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace boost { namespace geometry
|
||||
namespace dispatch
|
||||
{
|
||||
template <typename MultiPolygon>
|
||||
struct perimeter<multi_polygon_tag, MultiPolygon> : detail::multi_sum
|
||||
struct perimeter<MultiPolygon, multi_polygon_tag> : detail::multi_sum
|
||||
{
|
||||
template <typename Strategy>
|
||||
static inline typename default_length_result<MultiPolygon>::type
|
||||
@@ -40,11 +40,7 @@ struct perimeter<multi_polygon_tag, MultiPolygon> : detail::multi_sum
|
||||
return multi_sum::apply
|
||||
<
|
||||
typename default_length_result<MultiPolygon>::type,
|
||||
perimeter
|
||||
<
|
||||
polygon_tag,
|
||||
typename boost::range_value<MultiPolygon>::type
|
||||
>
|
||||
perimeter<typename boost::range_value<MultiPolygon>::type>
|
||||
>(multi, strategy);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user