![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/self/root/usr/include/boost/geometry/index/detail/rtree/ |
Upload File : |
// Boost.Geometry Index // // R-tree iterators // // Copyright (c) 2011-2015 Adam Wulkiewicz, Lodz, Poland. // // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_GEOMETRY_INDEX_DETAIL_RTREE_ITERATORS_HPP #define BOOST_GEOMETRY_INDEX_DETAIL_RTREE_ITERATORS_HPP namespace boost { namespace geometry { namespace index { namespace detail { namespace rtree { namespace iterators { template <typename Value, typename Allocators> struct end_iterator { typedef std::forward_iterator_tag iterator_category; typedef Value value_type; typedef typename Allocators::const_reference reference; typedef typename Allocators::difference_type difference_type; typedef typename Allocators::const_pointer pointer; reference operator*() const { BOOST_GEOMETRY_INDEX_ASSERT(false, "iterator not dereferencable"); pointer p(0); return *p; } const value_type * operator->() const { BOOST_GEOMETRY_INDEX_ASSERT(false, "iterator not dereferencable"); const value_type * p = 0; return p; } end_iterator & operator++() { BOOST_GEOMETRY_INDEX_ASSERT(false, "iterator not incrementable"); return *this; } end_iterator operator++(int) { BOOST_GEOMETRY_INDEX_ASSERT(false, "iterator not incrementable"); return *this; } friend bool operator==(end_iterator const& /*l*/, end_iterator const& /*r*/) { return true; } }; template <typename Value, typename Options, typename Translator, typename Box, typename Allocators> class iterator { typedef visitors::iterator<Value, Options, Translator, Box, Allocators> visitor_type; typedef typename visitor_type::node_pointer node_pointer; public: typedef std::forward_iterator_tag iterator_category; typedef Value value_type; typedef typename Allocators::const_reference reference; typedef typename Allocators::difference_type difference_type; typedef typename Allocators::const_pointer pointer; inline iterator() {} inline iterator(node_pointer root) { m_visitor.initialize(root); } reference operator*() const { return m_visitor.dereference(); } const value_type * operator->() const { return boost::addressof(m_visitor.dereference()); } iterator & operator++() { m_visitor.increment(); return *this; } iterator operator++(int) { iterator temp = *this; this->operator++(); return temp; } friend bool operator==(iterator const& l, iterator const& r) { return l.m_visitor == r.m_visitor; } friend bool operator==(iterator const& l, end_iterator<Value, Allocators> const& /*r*/) { return l.m_visitor.is_end(); } friend bool operator==(end_iterator<Value, Allocators> const& /*l*/, iterator const& r) { return r.m_visitor.is_end(); } private: visitor_type m_visitor; }; }}}}}} // namespace boost::geometry::index::detail::rtree::iterators #endif // BOOST_GEOMETRY_INDEX_DETAIL_RTREE_ITERATORS_HPP