Chris@16: // Boost.Geometry (aka GGL, Generic Geometry Library) Chris@16: Chris@101: // Copyright (c) 2008-2015 Bruno Lalande, Paris, France. Chris@101: // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands. Chris@101: // Copyright (c) 2009-2015 Mateusz Loskot, London, UK. Chris@101: Chris@101: // This file was modified by Oracle on 2015. Chris@101: // Modifications copyright (c) 2015, Oracle and/or its affiliates. Chris@101: Chris@101: // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle Chris@16: Chris@16: // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library Chris@16: // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. Chris@16: Chris@16: // Use, modification and distribution is subject to the Boost Software License, Chris@16: // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: Chris@16: #ifndef BOOST_GEOMETRY_ALGORITHMS_NOT_IMPLEMENTED_HPP Chris@16: #define BOOST_GEOMETRY_ALGORITHMS_NOT_IMPLEMENTED_HPP Chris@16: Chris@16: Chris@16: #include Chris@101: #include Chris@16: #include Chris@16: Chris@16: Chris@16: namespace boost { namespace geometry Chris@16: { Chris@16: Chris@16: Chris@16: namespace info Chris@16: { Chris@16: struct UNRECOGNIZED_GEOMETRY_TYPE {}; Chris@16: struct POINT {}; Chris@16: struct LINESTRING {}; Chris@16: struct POLYGON {}; Chris@16: struct RING {}; Chris@16: struct BOX {}; Chris@16: struct SEGMENT {}; Chris@16: struct MULTI_POINT {}; Chris@16: struct MULTI_LINESTRING {}; Chris@16: struct MULTI_POLYGON {}; Chris@16: struct GEOMETRY_COLLECTION {}; Chris@16: template struct DIMENSION {}; Chris@16: } Chris@16: Chris@16: Chris@16: namespace nyi Chris@16: { Chris@16: Chris@16: Chris@16: struct not_implemented_tag {}; Chris@16: Chris@16: template Chris@16: < Chris@16: typename Term1, Chris@16: typename Term2, Chris@16: typename Term3 Chris@16: > Chris@16: struct not_implemented_error Chris@16: { Chris@16: Chris@16: #ifndef BOOST_GEOMETRY_IMPLEMENTATION_STATUS_BUILD Chris@16: # define BOOST_GEOMETRY_IMPLEMENTATION_STATUS_BUILD false Chris@16: #endif Chris@16: Chris@16: BOOST_MPL_ASSERT_MSG Chris@16: ( Chris@16: BOOST_GEOMETRY_IMPLEMENTATION_STATUS_BUILD, Chris@16: THIS_OPERATION_IS_NOT_OR_NOT_YET_IMPLEMENTED, Chris@16: ( Chris@16: types Chris@16: ) Chris@16: ); Chris@16: }; Chris@16: Chris@16: template Chris@16: struct tag_to_term Chris@16: { Chris@16: typedef Tag type; Chris@16: }; Chris@16: Chris@16: template <> struct tag_to_term { typedef info::UNRECOGNIZED_GEOMETRY_TYPE type; }; Chris@16: template <> struct tag_to_term { typedef info::POINT type; }; Chris@16: template <> struct tag_to_term { typedef info::LINESTRING type; }; Chris@16: template <> struct tag_to_term { typedef info::POLYGON type; }; Chris@16: template <> struct tag_to_term { typedef info::RING type; }; Chris@16: template <> struct tag_to_term { typedef info::BOX type; }; Chris@16: template <> struct tag_to_term { typedef info::SEGMENT type; }; Chris@16: template <> struct tag_to_term { typedef info::MULTI_POINT type; }; Chris@16: template <> struct tag_to_term { typedef info::MULTI_LINESTRING type; }; Chris@16: template <> struct tag_to_term { typedef info::MULTI_POLYGON type; }; Chris@16: template <> struct tag_to_term { typedef info::GEOMETRY_COLLECTION type; }; Chris@101: template struct tag_to_term > { typedef info::DIMENSION type; }; Chris@16: Chris@16: Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: < Chris@16: typename Term1 = void, Chris@16: typename Term2 = void, Chris@16: typename Term3 = void Chris@16: > Chris@16: struct not_implemented Chris@16: : nyi::not_implemented_tag, Chris@16: nyi::not_implemented_error Chris@16: < Chris@101: typename boost::mpl::identity Chris@101: < Chris@101: typename nyi::tag_to_term::type Chris@101: >::type, Chris@101: typename boost::mpl::identity Chris@101: < Chris@101: typename nyi::tag_to_term::type Chris@101: >::type, Chris@101: typename boost::mpl::identity Chris@101: < Chris@101: typename nyi::tag_to_term::type Chris@101: >::type Chris@16: > Chris@16: {}; Chris@16: Chris@16: Chris@16: }} // namespace boost::geometry Chris@16: Chris@16: Chris@16: #endif // BOOST_GEOMETRY_ALGORITHMS_NOT_IMPLEMENTED_HPP