123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- // Boost.Geometry (aka GGL, Generic Geometry Library)
- // Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
- // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
- // This file was modified by Oracle on 2015.
- // Modifications copyright (c) 2015, Oracle and/or its affiliates.
- // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
- // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
- // (geolib/GGL), copyright (c) 1995-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_ALGORITHMS_NOT_IMPLEMENTED_HPP
- #define BOOST_GEOMETRY_ALGORITHMS_NOT_IMPLEMENTED_HPP
- #include <boost/mpl/assert.hpp>
- #include <boost/mpl/identity.hpp>
- #include <boost/geometry/core/tags.hpp>
- namespace boost { namespace geometry
- {
- namespace info
- {
- struct UNRECOGNIZED_GEOMETRY_TYPE {};
- struct POINT {};
- struct LINESTRING {};
- struct POLYGON {};
- struct RING {};
- struct BOX {};
- struct SEGMENT {};
- struct MULTI_POINT {};
- struct MULTI_LINESTRING {};
- struct MULTI_POLYGON {};
- struct GEOMETRY_COLLECTION {};
- template <size_t D> struct DIMENSION {};
- }
- namespace nyi
- {
- struct not_implemented_tag {};
- template
- <
- typename Term1,
- typename Term2,
- typename Term3
- >
- struct not_implemented_error
- {
- #ifndef BOOST_GEOMETRY_IMPLEMENTATION_STATUS_BUILD
- # define BOOST_GEOMETRY_IMPLEMENTATION_STATUS_BUILD false
- #endif
- BOOST_MPL_ASSERT_MSG
- (
- BOOST_GEOMETRY_IMPLEMENTATION_STATUS_BUILD,
- THIS_OPERATION_IS_NOT_OR_NOT_YET_IMPLEMENTED,
- (
- types<Term1, Term2, Term3>
- )
- );
- };
- template <typename Tag>
- struct tag_to_term
- {
- typedef Tag type;
- };
- template <> struct tag_to_term<geometry_not_recognized_tag> { typedef info::UNRECOGNIZED_GEOMETRY_TYPE type; };
- template <> struct tag_to_term<point_tag> { typedef info::POINT type; };
- template <> struct tag_to_term<linestring_tag> { typedef info::LINESTRING type; };
- template <> struct tag_to_term<polygon_tag> { typedef info::POLYGON type; };
- template <> struct tag_to_term<ring_tag> { typedef info::RING type; };
- template <> struct tag_to_term<box_tag> { typedef info::BOX type; };
- template <> struct tag_to_term<segment_tag> { typedef info::SEGMENT type; };
- template <> struct tag_to_term<multi_point_tag> { typedef info::MULTI_POINT type; };
- template <> struct tag_to_term<multi_linestring_tag> { typedef info::MULTI_LINESTRING type; };
- template <> struct tag_to_term<multi_polygon_tag> { typedef info::MULTI_POLYGON type; };
- template <> struct tag_to_term<geometry_collection_tag> { typedef info::GEOMETRY_COLLECTION type; };
- template <int D> struct tag_to_term<boost::mpl::int_<D> > { typedef info::DIMENSION<D> type; };
- }
- template
- <
- typename Term1 = void,
- typename Term2 = void,
- typename Term3 = void
- >
- struct not_implemented
- : nyi::not_implemented_tag,
- nyi::not_implemented_error
- <
- typename boost::mpl::identity
- <
- typename nyi::tag_to_term<Term1>::type
- >::type,
- typename boost::mpl::identity
- <
- typename nyi::tag_to_term<Term2>::type
- >::type,
- typename boost::mpl::identity
- <
- typename nyi::tag_to_term<Term3>::type
- >::type
- >
- {};
- }} // namespace boost::geometry
- #endif // BOOST_GEOMETRY_ALGORITHMS_NOT_IMPLEMENTED_HPP
|