Skip to content

Commit

Permalink
refs #113 Метафункция range_iterator
Browse files Browse the repository at this point in the history
  • Loading branch information
izvolov committed Jun 20, 2020
1 parent e7b3fe5 commit 29586c6
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 7 deletions.
3 changes: 2 additions & 1 deletion include/burst/iterator/detail/join_iterator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define BURST_ITERATOR_DETAIL_JOIN_ITERATOR_HPP

#include <burst/iterator/end_tag.hpp>
#include <burst/type_traits/range_iterator.hpp>
#include <burst/type_traits/range_reference.hpp>
#include <burst/type_traits/range_value.hpp>

Expand Down Expand Up @@ -184,7 +185,7 @@ namespace burst
private:
using outer_range_iterator = RandomAccessIterator;
using inner_range_type = typename std::iterator_traits<outer_range_iterator>::value_type;
using inner_range_iterator = typename boost::range_iterator<inner_range_type>::type;
using inner_range_iterator = range_iterator_t<inner_range_type>;

using base_type =
boost::iterator_facade
Expand Down
6 changes: 4 additions & 2 deletions include/burst/range/detail/skip_to_lower_bound.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#ifndef BURST_RANGE_DETAIL_SKIP_TO_LOWER_BOUND_HPP
#define BURST_RANGE_DETAIL_SKIP_TO_LOWER_BOUND_HPP

#include <burst/type_traits/range_iterator.hpp>

#include <boost/range/algorithm/lower_bound.hpp>
#include <boost/range/iterator_range.hpp>

Expand All @@ -22,7 +24,7 @@ namespace burst
std::is_same
<
std::random_access_iterator_tag,
typename std::iterator_traits<typename boost::range_iterator<RandomAccessRange>::type>::iterator_category
typename std::iterator_traits<range_iterator_t<RandomAccessRange>>::iterator_category
>
::value,
void
Expand Down Expand Up @@ -51,7 +53,7 @@ namespace burst
not std::is_same
<
std::random_access_iterator_tag,
typename std::iterator_traits<typename boost::range_iterator<InputRange>::type>::iterator_category
typename std::iterator_traits<range_iterator_t<InputRange>>::iterator_category
>
::value,
void
Expand Down
6 changes: 4 additions & 2 deletions include/burst/range/detail/skip_to_upper_bound.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#ifndef BURST_RANGE_DETAIL_SKIP_TO_UPPER_BOUND_HPP
#define BURST_RANGE_DETAIL_SKIP_TO_UPPER_BOUND_HPP

#include <burst/type_traits/range_iterator.hpp>

#include <boost/range/algorithm/upper_bound.hpp>
#include <boost/range/iterator_range.hpp>

Expand All @@ -22,7 +24,7 @@ namespace burst
std::is_same
<
std::random_access_iterator_tag,
typename std::iterator_traits<typename boost::range_iterator<RandomAccessRange>::type>::iterator_category
typename std::iterator_traits<range_iterator_t<RandomAccessRange>>::iterator_category
>
::value,
void
Expand Down Expand Up @@ -51,7 +53,7 @@ namespace burst
not std::is_same
<
std::random_access_iterator_tag,
typename std::iterator_traits<typename boost::range_iterator<InputRange>::type>::iterator_category
typename std::iterator_traits<range_iterator_t<InputRange>>::iterator_category
>
::value,
void
Expand Down
4 changes: 2 additions & 2 deletions include/burst/range/take_n.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
#define BURST_RANGE_TAKE_N_HPP

#include <burst/range/detail/take_n.hpp>
#include <burst/type_traits/range_iterator.hpp>

#include <boost/iterator/iterator_categories.hpp>
#include <boost/range/difference_type.hpp>
#include <boost/range/iterator.hpp>

#include <type_traits>
#include <utility>
Expand All @@ -24,7 +24,7 @@ namespace burst
template <typename Range, typename Integer>
auto operator () (Range && range, Integer n) const
{
using range_iterator = typename boost::range_iterator<Range>::type;
using range_iterator = range_iterator_t<Range>;
using category =
typename std::common_type
<
Expand Down
12 changes: 12 additions & 0 deletions include/burst/type_traits/range_iterator.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef BURST_TYPE_TRAITS_RANGE_ITERATOR_HPP
#define BURST_TYPE_TRAITS_RANGE_ITERATOR_HPP

#include <boost/range/iterator.hpp>

namespace burst
{
template <typename Range>
using range_iterator_t = typename boost::range_iterator<Range>::type;
} // namespace burst

#endif // BURST_TYPE_TRAITS_RANGE_ITERATOR_HPP

0 comments on commit 29586c6

Please sign in to comment.