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_WITHIN_HPP 20 #define BOOST_GEOMETRY_STRATEGIES_WITHIN_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 namespace strategy { namespace within 35 { 36 37 38 namespace services 39 { 40 41 /*! 42 \brief Traits class binding a within determination strategy to a coordinate system 43 \ingroup within 44 \tparam GeometryContained geometry-type of input (possibly) contained type 45 \tparam GeometryContaining geometry-type of input (possibly) containing type 46 \tparam TagContained casted tag of (possibly) contained type 47 \tparam TagContaining casted tag of (possibly) containing type 48 \tparam CsTagContained tag of coordinate system of (possibly) contained type 49 \tparam CsTagContaining tag of coordinate system of (possibly) containing type 50 */ 51 template 52 < 53 typename GeometryContained, 54 typename GeometryContaining, 55 typename TagContained = typename tag<GeometryContained>::type, 56 typename TagContaining = typename tag<GeometryContaining>::type, 57 typename CastedTagContained = typename tag_cast 58 < 59 typename tag<GeometryContained>::type, 60 pointlike_tag, linear_tag, polygonal_tag, areal_tag 61 >::type, 62 typename CastedTagContaining = typename tag_cast 63 < 64 typename tag<GeometryContaining>::type, 65 pointlike_tag, linear_tag, polygonal_tag, areal_tag 66 >::type, 67 typename CsTagContained = typename tag_cast 68 < 69 typename cs_tag<typename point_type<GeometryContained>::type>::type, 70 spherical_tag 71 >::type, 72 typename CsTagContaining = typename tag_cast 73 < 74 typename cs_tag<typename point_type<GeometryContaining>::type>::type, 75 spherical_tag 76 >::type 77 > 78 struct default_strategy 79 { 80 BOOST_MPL_ASSERT_MSG 81 ( 82 false, NOT_IMPLEMENTED_FOR_THESE_TYPES 83 , (types<GeometryContained, GeometryContaining>) 84 ); 85 }; 86 87 88 } // namespace services 89 90 91 }} // namespace strategy::within 92 93 94 }} // namespace boost::geometry 95 96 97 #endif // BOOST_GEOMETRY_STRATEGIES_WITHIN_HPP 98 99