From c22af90b60026e95f6752a4a22a6e4070ba59678 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Tue, 4 Feb 2025 00:34:43 +0300 Subject: [PATCH] Reformat advance.hpp and distance.hpp. --- include/boost/iterator/advance.hpp | 96 +++++++++++++---------------- include/boost/iterator/distance.hpp | 70 ++++++++++----------- 2 files changed, 75 insertions(+), 91 deletions(-) diff --git a/include/boost/iterator/advance.hpp b/include/boost/iterator/advance.hpp index 92af8fb..20a59a0 100644 --- a/include/boost/iterator/advance.hpp +++ b/include/boost/iterator/advance.hpp @@ -12,68 +12,58 @@ namespace boost { namespace iterators { +namespace detail { - namespace detail { - template - inline BOOST_CXX14_CONSTEXPR void - advance_impl( - InputIterator& it - , Distance n - , incrementable_traversal_tag - ) - { - while (n > 0) { - ++it; - --n; - } - } +template< typename InputIterator, typename Distance > +inline BOOST_CXX14_CONSTEXPR void advance_impl(InputIterator& it, Distance n, incrementable_traversal_tag) +{ + while (n > 0) + { + ++it; + --n; + } +} - template - inline BOOST_CXX14_CONSTEXPR void - advance_impl( - BidirectionalIterator& it - , Distance n - , bidirectional_traversal_tag - ) +template< typename BidirectionalIterator, typename Distance > +inline BOOST_CXX14_CONSTEXPR void advance_impl(BidirectionalIterator& it, Distance n, bidirectional_traversal_tag) +{ + if (n >= 0) + { + while (n > 0) { - if (n >= 0) { - while (n > 0) { - ++it; - --n; - } - } - else { - while (n < 0) { - --it; - ++n; - } - } - } - - template - inline BOOST_CXX14_CONSTEXPR void - advance_impl( - RandomAccessIterator& it - , Distance n - , random_access_traversal_tag - ) - { - it += n; + ++it; + --n; } } - - namespace advance_adl_barrier { - template - inline BOOST_CXX14_CONSTEXPR void - advance(InputIterator& it, Distance n) + else + { + while (n < 0) { - detail::advance_impl( - it, n, typename iterator_traversal::type() - ); + --it; + ++n; } } +} - using namespace advance_adl_barrier; +template< typename RandomAccessIterator, typename Distance > +inline BOOST_CXX14_CONSTEXPR void advance_impl(RandomAccessIterator& it, Distance n, random_access_traversal_tag) +{ + it += n; +} + +} // namespace detail + +namespace advance_adl_barrier { + +template< typename InputIterator, typename Distance > +inline BOOST_CXX14_CONSTEXPR void advance(InputIterator& it, Distance n) +{ + detail::advance_impl(it, n, typename iterator_traversal< InputIterator >::type()); +} + +} // namespace advance_adl_barrier + +using namespace advance_adl_barrier; } // namespace iterators diff --git a/include/boost/iterator/distance.hpp b/include/boost/iterator/distance.hpp index bef650b..b1e3245 100644 --- a/include/boost/iterator/distance.hpp +++ b/include/boost/iterator/distance.hpp @@ -13,48 +13,42 @@ namespace boost { namespace iterators { +namespace detail { - namespace detail { - template - inline BOOST_CXX14_CONSTEXPR typename iterator_difference::type - distance_impl( - SinglePassIterator first - , SinglePassIterator last - , single_pass_traversal_tag - ) - { - typename iterator_difference::type n = 0; - while (first != last) { - ++first; - ++n; - } - return n; - } - - template - inline BOOST_CXX14_CONSTEXPR typename iterator_difference::type - distance_impl( - RandomAccessIterator first - , RandomAccessIterator last - , random_access_traversal_tag - ) - { - return last - first; - } +template< typename SinglePassIterator > +inline BOOST_CXX14_CONSTEXPR typename iterator_difference< SinglePassIterator >::type +distance_impl(SinglePassIterator first, SinglePassIterator last, single_pass_traversal_tag) +{ + typename iterator_difference< SinglePassIterator >::type n = 0; + while (first != last) + { + ++first; + ++n; } + return n; +} - namespace distance_adl_barrier { - template - inline BOOST_CXX14_CONSTEXPR typename iterator_difference::type - distance(SinglePassIterator first, SinglePassIterator last) - { - return detail::distance_impl( - first, last, typename iterator_traversal::type() - ); - } - } +template< typename RandomAccessIterator > +inline BOOST_CXX14_CONSTEXPR typename iterator_difference< RandomAccessIterator >::type +distance_impl(RandomAccessIterator first, RandomAccessIterator last, random_access_traversal_tag) +{ + return last - first; +} - using namespace distance_adl_barrier; +} // namespace detail + +namespace distance_adl_barrier { + +template< typename SinglePassIterator > +inline BOOST_CXX14_CONSTEXPR typename iterator_difference< SinglePassIterator >::type +distance(SinglePassIterator first, SinglePassIterator last) +{ + return detail::distance_impl(first, last, typename iterator_traversal< SinglePassIterator >::type()); +} + +} // namespace distance_adl_barrier + +using namespace distance_adl_barrier; } // namespace iterators