EVOLUTION-MANAGER
Edit File: not_implemented.hpp
// 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