1 // Boost.Geometry (aka GGL, Generic Geometry Library) 2 3 // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. 4 // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. 5 // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. 6 7 // This file was modified by Oracle on 2017. 8 // Modifications copyright (c) 2017, Oracle and/or its affiliates. 9 10 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle 11 12 // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library 13 // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. 14 15 // Use, modification and distribution is subject to the Boost Software License, 16 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 17 // http://www.boost.org/LICENSE_1_0.txt) 18 19 #ifndef BOOST_GEOMETRY_STRATEGIES_COVERED_BY_HPP 20 #define BOOST_GEOMETRY_STRATEGIES_COVERED_BY_HPP 21 22 #include <boost/mpl/assert.hpp> 23 24 #include <boost/geometry/core/cs.hpp> 25 #include <boost/geometry/core/point_type.hpp> 26 #include <boost/geometry/core/tag.hpp> 27 #include <boost/geometry/core/tags.hpp> 28 #include <boost/geometry/core/tag_cast.hpp> 29 30 31 namespace boost { namespace geometry 32 { 33 34 35 namespace strategy { namespace covered_by 36 { 37 38 39 namespace services 40 { 41 42 /*! 43 \brief Traits class binding a covered_by determination strategy to a coordinate system 44 \ingroup covered_by 45 \tparam GeometryContained geometry-type of input (possibly) contained type 46 \tparam GeometryContaining geometry-type of input (possibly) containing type 47 \tparam TagContained casted tag of (possibly) contained type 48 \tparam TagContaining casted tag of (possibly) containing type 49 \tparam CsTagContained tag of coordinate system of (possibly) contained type 50 \tparam CsTagContaining tag of coordinate system of (possibly) containing type 51 */ 52 template 53 < 54 typename GeometryContained, 55 typename GeometryContaining, 56 typename TagContained = typename tag<GeometryContained>::type, 57 typename TagContaining = typename tag<GeometryContaining>::type, 58 typename CastedTagContained = typename tag_cast 59 < 60 typename tag<GeometryContained>::type, 61 pointlike_tag, linear_tag, polygonal_tag, areal_tag 62 >::type, 63 typename CastedTagContaining = typename tag_cast 64 < 65 typename tag<GeometryContaining>::type, 66 pointlike_tag, linear_tag, polygonal_tag, areal_tag 67 >::type, 68 typename CsTagContained = typename tag_cast 69 < 70 typename cs_tag<typename point_type<GeometryContained>::type>::type, 71 spherical_tag 72 >::type, 73 typename CsTagContaining = typename tag_cast 74 < 75 typename cs_tag<typename point_type<GeometryContaining>::type>::type, 76 spherical_tag 77 >::type 78 > 79 struct default_strategy 80 { 81 BOOST_MPL_ASSERT_MSG 82 ( 83 false, NOT_IMPLEMENTED_FOR_THESE_TYPES 84 , (types<GeometryContained, GeometryContaining>) 85 ); 86 }; 87 88 89 } // namespace services 90 91 92 }} // namespace strategy::covered_by 93 94 95 }} // namespace boost::geometry 96 97 98 #endif // BOOST_GEOMETRY_STRATEGIES_COVERED_BY_HPP 99 100