diff --git a/sprout/algorithm/lexicographical_compare.hpp b/sprout/algorithm/lexicographical_compare.hpp index be9628b0..ddd4a7b0 100644 --- a/sprout/algorithm/lexicographical_compare.hpp +++ b/sprout/algorithm/lexicographical_compare.hpp @@ -28,7 +28,7 @@ namespace sprout { int found ) { - return found < 0 || found == 2 && size1 < size2; + return found < 0 || (found == 2 && size1 < size2); } template diff --git a/sprout/algorithm/tristate_lexicographical_compare.hpp b/sprout/algorithm/tristate_lexicographical_compare.hpp index 1bcecb16..0423389b 100644 --- a/sprout/algorithm/tristate_lexicographical_compare.hpp +++ b/sprout/algorithm/tristate_lexicographical_compare.hpp @@ -131,7 +131,7 @@ namespace sprout { : size == 1 ? !comp(*first2, delim2) && !comp(delim2, *first2) ? !comp(*first1, delim1) && !comp(delim1, *first1) ? 0 : 1 - : !comp(*first1, delim1) && !comp(delim1, *first1) || comp(*first1, *first2) + : (!comp(*first1, delim1) && !comp(delim1, *first1)) || comp(*first1, *first2) ? -1 : comp(*first2, *first1) ? 1 : 2 : sprout::detail::tristate_lexicographical_compare_2_impl_ra( @@ -180,7 +180,7 @@ namespace sprout { : n == 1 ? !comp(*current.second, delim2) && !comp(delim2, *current.second) ? type(!comp(*current.first, delim1) && !comp(delim1, *current.first) ? last1 : current.first, last2) - : !comp(*current.first, delim1) && !comp(delim1, *current.first) || comp(*current.first, *current.second) + : (!comp(*current.first, delim1) && !comp(delim1, *current.first)) || comp(*current.first, *current.second) ? type(last1, current.second) : comp(*current.second, *current.first) ? type(current.first, last2) : type(sprout::next(current.first), sprout::next(current.second)) diff --git a/sprout/bit/isols1b.hpp b/sprout/bit/isols1b.hpp index d0d7ba45..be8c8215 100644 --- a/sprout/bit/isols1b.hpp +++ b/sprout/bit/isols1b.hpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #ifndef SPROUT_BIT_ISOLS1B_HPP -#define SPROUT_BIT_RSTLS1B_HPP +#define SPROUT_BIT_ISOLS1B_HPP #include #include @@ -25,4 +25,4 @@ namespace sprout { } } // namespace sprout -#endif // #ifndef SPROUT_BIT_RSTLS1B_HPP +#endif // #ifndef SPROUT_BIT_ISOLS1B_HPP diff --git a/sprout/detail/algorithm/lexicographical_compare.hpp b/sprout/detail/algorithm/lexicographical_compare.hpp index c9eb38db..96ea7aeb 100644 --- a/sprout/detail/algorithm/lexicographical_compare.hpp +++ b/sprout/detail/algorithm/lexicographical_compare.hpp @@ -1,73 +1,73 @@ -#ifndef SPROUT_DETAIL_ALGORITHM_LEXICOGRAPHICAL_COMPARE_HPP -#define SPROUT_DETAIL_ALGORITHM_LEXICOGRAPHICAL_COMPARE_HPP - -#include -#include -#include - -namespace sprout { - namespace detail { - template - inline SPROUT_CONSTEXPR int - lexicographical_compare_impl_ra( - RandomAccessIterator1 first1, RandomAccessIterator2 first2, Compare comp, - typename std::iterator_traits::difference_type size, - int found - ) - { - return found != 2 ? found - : size == 1 ? comp(*first1, *first2) ? -1 : comp(*first2, *first1) ? 1 : 2 - : sprout::detail::lexicographical_compare_impl_ra( - sprout::next(first1, size / 2), sprout::next(first2, size / 2), comp, size - size / 2, - sprout::detail::lexicographical_compare_impl_ra( - first1, first2, comp, size / 2, - 2 - ) - ) - ; - } - - template - inline SPROUT_CONSTEXPR sprout::pair - lexicographical_compare_impl_1( - sprout::pair const& current, - InputIterator1 last1, InputIterator2 last2, Compare comp, - typename std::iterator_traits::difference_type n - ) - { - typedef sprout::pair type; - return current.second == last2 || current.first == last1 ? current - : n == 1 ? comp(*current.first, *current.second) ? type(last1, current.second) - : comp(*current.second, *current.first) ? type(current.first, last2) - : type(sprout::next(current.first), sprout::next(current.second)) - : sprout::detail::lexicographical_compare_impl_1( - sprout::detail::lexicographical_compare_impl_1( - current, - last1, last2, comp, n / 2 - ), - last1, last2, comp, n - n / 2 - ) - ; - } - template - inline SPROUT_CONSTEXPR sprout::pair - lexicographical_compare_impl( - sprout::pair const& current, - InputIterator1 last1, InputIterator2 last2, Compare comp, - typename std::iterator_traits::difference_type n - ) - { - return current.second == last2 || current.first == last1 ? current - : sprout::detail::lexicographical_compare_impl( - sprout::detail::lexicographical_compare_impl_1( - current, - last1, last2, comp, n - ), - last1, last2, comp, n * 2 - ) - ; - } - } // namespace detail -} // namespace sprout - -#endif /* #ifndef SPROUT_DETAIL_ALGORITHM_LEXICOGRAPHICAL_COMPARE_HPP */ +#ifndef SPROUT_DETAIL_ALGORITHM_LEXICOGRAPHICAL_COMPARE_HPP +#define SPROUT_DETAIL_ALGORITHM_LEXICOGRAPHICAL_COMPARE_HPP + +#include +#include +#include + +namespace sprout { + namespace detail { + template + inline SPROUT_CONSTEXPR int + lexicographical_compare_impl_ra( + RandomAccessIterator1 first1, RandomAccessIterator2 first2, Compare comp, + typename std::iterator_traits::difference_type size, + int found + ) + { + return found != 2 ? found + : size == 1 ? comp(*first1, *first2) ? -1 : comp(*first2, *first1) ? 1 : 2 + : sprout::detail::lexicographical_compare_impl_ra( + sprout::next(first1, size / 2), sprout::next(first2, size / 2), comp, size - size / 2, + sprout::detail::lexicographical_compare_impl_ra( + first1, first2, comp, size / 2, + 2 + ) + ) + ; + } + + template + inline SPROUT_CONSTEXPR sprout::pair + lexicographical_compare_impl_1( + sprout::pair const& current, + InputIterator1 last1, InputIterator2 last2, Compare comp, + typename std::iterator_traits::difference_type n + ) + { + typedef sprout::pair type; + return current.second == last2 || current.first == last1 ? current + : n == 1 ? comp(*current.first, *current.second) ? type(last1, current.second) + : comp(*current.second, *current.first) ? type(current.first, last2) + : type(sprout::next(current.first), sprout::next(current.second)) + : sprout::detail::lexicographical_compare_impl_1( + sprout::detail::lexicographical_compare_impl_1( + current, + last1, last2, comp, n / 2 + ), + last1, last2, comp, n - n / 2 + ) + ; + } + template + inline SPROUT_CONSTEXPR sprout::pair + lexicographical_compare_impl( + sprout::pair const& current, + InputIterator1 last1, InputIterator2 last2, Compare comp, + typename std::iterator_traits::difference_type n + ) + { + return current.second == last2 || current.first == last1 ? current + : sprout::detail::lexicographical_compare_impl( + sprout::detail::lexicographical_compare_impl_1( + current, + last1, last2, comp, n + ), + last1, last2, comp, n * 2 + ) + ; + } + } // namespace detail +} // namespace sprout + +#endif /* #ifndef SPROUT_DETAIL_ALGORITHM_LEXICOGRAPHICAL_COMPARE_HPP */