Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:35:35

0001 // Boost.Geometry (aka GGL, Generic Geometry Library)
0002 
0003 // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
0004 // Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
0005 // Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
0006 
0007 // This file was modified by Oracle on 2020-2021.
0008 // Modifications copyright (c) 2020-2021 Oracle and/or its affiliates.
0009 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
0010 
0011 // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
0012 // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
0013 
0014 // Use, modification and distribution is subject to the Boost Software License,
0015 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
0016 // http://www.boost.org/LICENSE_1_0.txt)
0017 
0018 #ifndef BOOST_GEOMETRY_ITERATORS_DETAIL_ITERATOR_BASE_HPP
0019 #define BOOST_GEOMETRY_ITERATORS_DETAIL_ITERATOR_BASE_HPP
0020 
0021 #include <type_traits>
0022 
0023 #include <boost/iterator/iterator_adaptor.hpp>
0024 #include <boost/iterator/iterator_categories.hpp>
0025 
0026 #ifndef DOXYGEN_NO_DETAIL
0027 namespace boost { namespace geometry { namespace detail { namespace iterators
0028 {
0029 
0030 template
0031 <
0032     typename DerivedClass,
0033     typename Iterator,
0034     typename TraversalFlag = boost::bidirectional_traversal_tag
0035 >
0036 struct iterator_base
0037     : public boost::iterator_adaptor
0038     <
0039         DerivedClass,
0040         Iterator,
0041         boost::use_default,
0042         std::conditional_t
0043         <
0044             std::is_convertible
0045             <
0046                 typename boost::iterator_traversal<Iterator>::type,
0047                 boost::random_access_traversal_tag
0048             >::value,
0049             TraversalFlag,
0050             boost::use_default
0051         >
0052     >
0053 {
0054     // Define operator cast to Iterator to be able to write things like Iterator it = myit++
0055     inline operator Iterator() const
0056     {
0057         return this->base();
0058     }
0059 
0060     /*inline bool operator==(Iterator const& other) const
0061     {
0062         return this->base() == other;
0063     }
0064     inline bool operator!=(Iterator const& other) const
0065     {
0066         return ! operator==(other);
0067     }*/
0068 };
0069 
0070 }}}} // namespace boost::geometry::detail::iterators
0071 #endif
0072 
0073 
0074 #endif // BOOST_GEOMETRY_ITERATORS_DETAIL_ITERATOR_BASE_HPP