/usr/include/boost/geometry/geometries
NameSizeModeActions
adapted/-0755rm
concepts/-0755rm
register/-0755rm
box.hpp49840644editdlrm
geometries.hpp11540644editdlrm
helper_geometry.hpp29480644editdlrm
infinite_line.hpp11830644editdlrm
linestring.hpp32870644editdlrm
multi_linestring.hpp33230644editdlrm
multi_point.hpp33410644editdlrm
multi_polygon.hpp32170644editdlrm
point.hpp85980644editdlrm
pointing_segment.hpp36010644editdlrm
point_xy.hpp37430644editdlrm
point_xyz.hpp37170644editdlrm
polygon.hpp93060644editdlrm
ring.hpp46890644editdlrm
segment.hpp62960644editdlrm
variant.hpp14120644editdlrm
Edit: /usr/include/boost/geometry/geometries/pointing_segment.hpp (3601B)
// Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2014, Oracle and/or its affiliates. // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle // Licensed under the Boost Software License version 1.0. // http://www.boost.org/users/license.html #ifndef BOOST_GEOMETRY_GEOMETRIES_POINTING_SEGMENT_HPP #define BOOST_GEOMETRY_GEOMETRIES_POINTING_SEGMENT_HPP #include #include #include #include #include #include #include #include #include namespace boost { namespace geometry { namespace model { // const or non-const segment type that is meant to be // * default constructible // * copy constructible // * assignable // referring_segment does not fit these requirements, hence the // pointing_segment class // // this class is used by the segment_iterator as its value type template class pointing_segment { BOOST_CONCEPT_ASSERT( ( typename boost::mpl::if_ < boost::is_const, concepts::Point, concepts::ConstPoint > ) ); typedef ConstOrNonConstPoint point_type; public: point_type* first; point_type* second; inline pointing_segment() : first(NULL) , second(NULL) {} inline pointing_segment(point_type const& p1, point_type const& p2) : first(boost::addressof(p1)) , second(boost::addressof(p2)) {} }; } // namespace model // Traits specializations for segment above #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct tag > { typedef segment_tag type; }; template struct point_type > { typedef Point type; }; template struct indexed_access, 0, Dimension> { typedef model::pointing_segment segment_type; typedef typename geometry::coordinate_type < segment_type >::type coordinate_type; static inline coordinate_type get(segment_type const& s) { BOOST_GEOMETRY_ASSERT( s.first != NULL ); return geometry::get(*s.first); } static inline void set(segment_type& s, coordinate_type const& value) { BOOST_GEOMETRY_ASSERT( s.first != NULL ); geometry::set(*s.first, value); } }; template struct indexed_access, 1, Dimension> { typedef model::pointing_segment segment_type; typedef typename geometry::coordinate_type < segment_type >::type coordinate_type; static inline coordinate_type get(segment_type const& s) { BOOST_GEOMETRY_ASSERT( s.second != NULL ); return geometry::get(*s.second); } static inline void set(segment_type& s, coordinate_type const& value) { BOOST_GEOMETRY_ASSERT( s.second != NULL ); geometry::set(*s.second, value); } }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS }} // namespace boost::geometry #endif // BOOST_GEOMETRY_GEOMETRIES_POINTING_SEGMENT_HPP