File indexing completed on 2024-11-16 09:13:11
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #ifndef BOOST_GEOMETRY_CORE_COORDINATE_SYSTEM_HPP
0019 #define BOOST_GEOMETRY_CORE_COORDINATE_SYSTEM_HPP
0020
0021
0022 #include <boost/geometry/core/point_type.hpp>
0023 #include <boost/geometry/core/static_assert.hpp>
0024 #include <boost/geometry/util/type_traits_std.hpp>
0025
0026
0027 namespace boost { namespace geometry
0028 {
0029
0030
0031 namespace traits
0032 {
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042 template <typename Point, typename Enable = void>
0043 struct coordinate_system
0044 {
0045 BOOST_GEOMETRY_STATIC_ASSERT_FALSE(
0046 "Not implemented for this Point type.",
0047 Point);
0048 };
0049
0050 }
0051
0052
0053
0054 #ifndef DOXYGEN_NO_DISPATCH
0055 namespace core_dispatch
0056 {
0057 template <typename GeometryTag, typename G>
0058 struct coordinate_system
0059 {
0060 typedef typename point_type<GeometryTag, G>::type P;
0061
0062
0063 typedef typename coordinate_system<point_tag, P>::type type;
0064 };
0065
0066
0067 template <typename Point>
0068 struct coordinate_system<point_tag, Point>
0069 {
0070 typedef typename traits::coordinate_system
0071 <
0072 typename util::remove_cptrref<Point>::type
0073 >::type type;
0074 };
0075
0076
0077 }
0078 #endif
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088 template <typename Geometry>
0089 struct coordinate_system
0090 {
0091 typedef typename core_dispatch::coordinate_system
0092 <
0093 typename tag<Geometry>::type,
0094 typename util::remove_cptrref<Geometry>::type
0095 >::type type;
0096 };
0097
0098
0099 }}
0100
0101
0102 #endif