Added multi/closure.hpp (adaptions for MPL_ASSERT)

[SVN r67396]
This commit is contained in:
Barend Gehrels
2010-12-21 21:41:49 +00:00
parent 3d7dc39f28
commit 97245d28ba
5 changed files with 41 additions and 0 deletions

View File

@@ -45,6 +45,26 @@ struct closure
} // namespace traits
#ifndef DOXYGEN_NO_DETAIL
namespace core_detail { namespace closure
{
struct closed
{
static const closure_selector value = geometry::closed;
};
struct open
{
static const closure_selector value = geometry::open;
};
}} // namespace detail::point_order
#endif // DOXYGEN_NO_DETAIL
#ifndef DOXYGEN_NO_DISPATCH
namespace core_dispatch
{
@@ -59,6 +79,18 @@ struct closure
);
};
template <typename Box>
struct closure<point_tag, Box> : public core_detail::closure::open {};
template <typename Box>
struct closure<box_tag, Box> : public core_detail::closure::closed {};
template <typename Box>
struct closure<segment_tag, Box> : public core_detail::closure::open {};
template <typename LineString>
struct closure<linestring_tag, LineString> : public core_detail::closure::open {};
template <typename Ring>
struct closure<ring_tag, Ring>

View File

@@ -10,6 +10,7 @@
#include <boost/geometry/algorithms/intersection.hpp>
#include <boost/geometry/multi/core/closure.hpp>
#include <boost/geometry/multi/core/geometry_id.hpp>
#include <boost/geometry/multi/core/is_areal.hpp>
#include <boost/geometry/multi/core/point_order.hpp>

View File

@@ -10,6 +10,7 @@
#include <boost/geometry/algorithms/union.hpp>
#include <boost/geometry/multi/core/closure.hpp>
#include <boost/geometry/multi/core/geometry_id.hpp>
#include <boost/geometry/multi/core/is_areal.hpp>
#include <boost/geometry/multi/core/point_order.hpp>

View File

@@ -13,6 +13,8 @@
#include <boost/range.hpp>
#include <boost/geometry/algorithms/within.hpp>
#include <boost/geometry/multi/core/closure.hpp>
#include <boost/geometry/multi/core/point_order.hpp>
#include <boost/geometry/multi/core/tags.hpp>
namespace boost { namespace geometry

View File

@@ -24,6 +24,11 @@ namespace boost { namespace geometry
namespace core_dispatch
{
template <typename Multi>
struct closure<multi_point_tag, Multi> : public core_detail::closure::closed {};
template <typename Multi>
struct closure<multi_linestring_tag, Multi> : public core_detail::closure::closed {};
// Specialization for polygon: the closure is the closure of its rings
template <typename MultiPolygon>