Skip to content

Commit

Permalink
Merge a7404b9 into d7b33ca
Browse files Browse the repository at this point in the history
  • Loading branch information
izvolov committed Jun 14, 2020
2 parents d7b33ca + a7404b9 commit 2d7c3a3
Show file tree
Hide file tree
Showing 33 changed files with 183 additions and 222 deletions.
3 changes: 2 additions & 1 deletion include/burst/algorithm/detail/counting_sort.hpp
Expand Up @@ -2,7 +2,8 @@
#define BURST_ALGORITHM_DETAIL_COUNTING_SORT_HPP

#include <burst/container/access/cback.hpp>
#include <burst/iterator/traits.hpp>
#include <burst/type_traits/iterator_difference.hpp>
#include <burst/type_traits/iterator_value.hpp>

#include <algorithm>
#include <iterator>
Expand Down
2 changes: 1 addition & 1 deletion include/burst/algorithm/detail/move_assign_please.hpp
@@ -1,7 +1,7 @@
#ifndef BURST_ALGORITHM_DETAIL_MOVE_ASSIGN_PLEASE_HPP
#define BURST_ALGORITHM_DETAIL_MOVE_ASSIGN_PLEASE_HPP

#include <burst/iterator/traits/iterator_value.hpp>
#include <burst/type_traits/iterator_value.hpp>

#include <iterator>
#include <type_traits>
Expand Down
3 changes: 2 additions & 1 deletion include/burst/algorithm/detail/radix_sort.hpp
Expand Up @@ -5,7 +5,8 @@
#include <burst/algorithm/detail/move_assign_please.hpp>
#include <burst/algorithm/detail/nth_radix.hpp>
#include <burst/algorithm/detail/radix_sort_traits.hpp>
#include <burst/iterator/traits.hpp>
#include <burst/type_traits/iterator_difference.hpp>
#include <burst/type_traits/iterator_value.hpp>
#include <burst/variadic.hpp>

#include <algorithm>
Expand Down
2 changes: 1 addition & 1 deletion include/burst/algorithm/searching/bitap.hpp
Expand Up @@ -86,7 +86,7 @@ namespace burst
ForwardIterator
operator () (ForwardIterator corpus_begin, ForwardIterator corpus_end) const
{
using iterated_type = typename std::iterator_traits<ForwardIterator>::value_type;
using iterated_type = iterator_value_t<ForwardIterator>;
static_assert
(
std::is_same<iterated_type, value_type>::value,
Expand Down
Expand Up @@ -2,11 +2,11 @@
#define BURST_ALGORITHM_SEARCHING_DETAIL_ELEMENT_POSITION_BITMASK_TABLE_HPP

#include <burst/integer/left_shift.hpp>
#include <burst/type_traits/iterator_value.hpp>

#include <array>
#include <cstddef>
#include <initializer_list>
#include <iterator>
#include <type_traits>

namespace burst
Expand Down Expand Up @@ -55,7 +55,7 @@ namespace burst
template <typename InputIterator>
void initialize (InputIterator first, InputIterator last)
{
using iterated_type = typename std::iterator_traits<InputIterator>::value_type;
using iterated_type = iterator_value_t<InputIterator>;
static_assert(std::is_same<iterated_type, key_type>::value,
"Неверно задан тип входного элемента.");

Expand Down Expand Up @@ -158,7 +158,7 @@ namespace burst
template <typename InputIterator>
void initialize (InputIterator first, InputIterator last)
{
using iterated_type = typename std::iterator_traits<InputIterator>::value_type;
using iterated_type = iterator_value_t<InputIterator>;
static_assert
(
std::is_integral<iterated_type>::value && sizeof(iterated_type) == 1,
Expand Down
2 changes: 1 addition & 1 deletion include/burst/iterator/bitap_iterator.hpp
Expand Up @@ -37,7 +37,7 @@ namespace burst
BOOST_CONCEPT_ASSERT((boost::ForwardRangeConcept<TextRange>));
using text_range_type = TextRange;
using text_iterator = typename TextRange::const_iterator;
using text_value_type = typename std::iterator_traits<text_iterator>::value_type;
using text_value_type = iterator_value_t<text_iterator>;

using base_type = boost::iterator_facade
<
Expand Down
34 changes: 13 additions & 21 deletions include/burst/iterator/cache_iterator.hpp
@@ -1,6 +1,10 @@
#ifndef BURST_ITERATOR_CACHE_ITERATOR_HPP
#define BURST_ITERATOR_CACHE_ITERATOR_HPP

#include <burst/type_traits/iterator_difference.hpp>
#include <burst/type_traits/iterator_reference.hpp>
#include <burst/type_traits/iterator_value.hpp>

#include <boost/iterator/iterator_categories.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/optional.hpp>
Expand Down Expand Up @@ -34,27 +38,23 @@ namespace burst
boost::iterator_facade
<
cache_iterator<Iterator>,
typename std::iterator_traits<Iterator>::value_type,
iterator_value_t<Iterator>,
typename boost::iterators::pure_iterator_traversal<Iterator>::type,
const typename std::iterator_traits<Iterator>::value_type &,
typename std::iterator_traits<Iterator>::difference_type
const iterator_value_t<Iterator> &,
iterator_difference_t<Iterator>
>
{
private:
static_assert
(
not std::is_lvalue_reference<typename std::iterator_traits<Iterator>::reference>::value,
""
);
static_assert(not std::is_lvalue_reference<iterator_reference_t<Iterator>>::value, "");

using base_type =
boost::iterator_facade
<
cache_iterator<Iterator>,
typename std::iterator_traits<Iterator>::value_type,
iterator_value_t<Iterator>,
typename boost::iterators::pure_iterator_traversal<Iterator>::type,
const typename std::iterator_traits<Iterator>::value_type &,
typename std::iterator_traits<Iterator>::difference_type
const iterator_value_t<Iterator> &,
iterator_difference_t<Iterator>
>;
public:
explicit cache_iterator (Iterator iterator):
Expand Down Expand Up @@ -115,11 +115,7 @@ namespace burst
template <typename Iterator>
typename std::enable_if
<
std::is_lvalue_reference
<
typename std::iterator_traits<Iterator>::reference
>
::value,
std::is_lvalue_reference<iterator_reference_t<Iterator>>::value,
Iterator
>
::type make_cache_iterator (Iterator iterator)
Expand All @@ -135,11 +131,7 @@ namespace burst
template <typename Iterator>
typename std::enable_if
<
not std::is_lvalue_reference
<
typename std::iterator_traits<Iterator>::reference
>
::value,
not std::is_lvalue_reference<iterator_reference_t<Iterator>>::value,
cache_iterator<Iterator>
>
::type make_cache_iterator (Iterator iterator)
Expand Down
37 changes: 17 additions & 20 deletions include/burst/iterator/detail/join_iterator.hpp
Expand Up @@ -2,14 +2,15 @@
#define BURST_ITERATOR_DETAIL_JOIN_ITERATOR_HPP

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

#include <boost/iterator/iterator_categories.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/next_prior.hpp>
#include <boost/range/difference_type.hpp>
#include <boost/range/distance.hpp>
#include <boost/range/reference.hpp>
#include <boost/range/value_type.hpp>

#include <algorithm>
#include <cassert>
Expand All @@ -33,31 +34,27 @@ namespace burst
public boost::iterator_facade
<
join_iterator_impl<InputIterator, IteratorCategory>,
typename boost::range_value<typename std::iterator_traits<InputIterator>::value_type>::type,
range_value_t<iterator_value_t<InputIterator>>,
boost::single_pass_traversal_tag,
typename boost::range_reference<typename std::iterator_traits<InputIterator>::value_type>::type
range_reference_t<iterator_value_t<InputIterator>>
>
{
private:
using outer_range_iterator = InputIterator;
using inner_range_type = typename std::iterator_traits<outer_range_iterator>::value_type;
using inner_range_type = iterator_value_t<outer_range_iterator>;
static_assert
(
std::is_lvalue_reference
<
typename std::iterator_traits<outer_range_iterator>::reference
>
::value,
std::is_lvalue_reference<iterator_reference_t<outer_range_iterator>>::value,
""
);

using base_type =
boost::iterator_facade
<
join_iterator_impl,
typename boost::range_value<inner_range_type>::type,
range_value_t<inner_range_type>,
boost::single_pass_traversal_tag,
typename boost::range_reference<inner_range_type>::type
range_reference_t<inner_range_type>
>;

public:
Expand Down Expand Up @@ -176,23 +173,23 @@ namespace burst
public boost::iterator_facade
<
join_iterator_impl<RandomAccessIterator, boost::random_access_traversal_tag>,
typename boost::range_value<typename std::iterator_traits<RandomAccessIterator>::value_type>::type,
range_value_t<iterator_value_t<RandomAccessIterator>>,
boost::random_access_traversal_tag,
typename boost::range_reference<typename std::iterator_traits<RandomAccessIterator>::value_type>::type
range_reference_t<iterator_value_t<RandomAccessIterator>>
>
{
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_type = iterator_value_t<outer_range_iterator>;
using inner_range_iterator = range_iterator_t<inner_range_type>;

using base_type =
boost::iterator_facade
<
join_iterator_impl,
typename boost::range_value<inner_range_type>::type,
range_value_t<inner_range_type>,
boost::random_access_traversal_tag,
typename boost::range_reference<inner_range_type>::type
range_reference_t<inner_range_type>
>;

public:
Expand Down
10 changes: 6 additions & 4 deletions include/burst/iterator/difference_iterator.hpp
Expand Up @@ -3,6 +3,8 @@

#include <burst/iterator/end_tag.hpp>
#include <burst/range/skip_to_lower_bound.hpp>
#include <burst/type_traits/iterator_reference.hpp>
#include <burst/type_traits/iterator_value.hpp>

#include <boost/assert.hpp>
#include <boost/iterator/iterator_concepts.hpp>
Expand Down Expand Up @@ -66,9 +68,9 @@ namespace burst
public boost::iterator_facade
<
difference_iterator<ForwardIterator1, ForwardIterator2, Compare>,
typename std::iterator_traits<ForwardIterator1>::value_type,
iterator_value_t<ForwardIterator1>,
boost::forward_traversal_tag,
typename std::iterator_traits<ForwardIterator1>::reference
iterator_reference_t<ForwardIterator1>
>
{
private:
Expand All @@ -82,9 +84,9 @@ namespace burst
boost::iterator_facade
<
difference_iterator,
typename std::iterator_traits<minuend_iterator>::value_type,
iterator_value_t<minuend_iterator>,
boost::forward_traversal_tag,
typename std::iterator_traits<minuend_iterator>::reference
iterator_reference_t<minuend_iterator>
>;

public:
Expand Down
26 changes: 8 additions & 18 deletions include/burst/iterator/intersect_iterator.hpp
Expand Up @@ -6,14 +6,15 @@
#include <burst/iterator/detail/prevent_writing.hpp>
#include <burst/iterator/end_tag.hpp>
#include <burst/range/skip_to_lower_bound.hpp>
#include <burst/type_traits/iterator_value.hpp>
#include <burst/type_traits/range_reference.hpp>
#include <burst/type_traits/range_value.hpp>

#include <boost/algorithm/cxx11/is_sorted.hpp>
#include <boost/assert.hpp>
#include <boost/iterator/iterator_concepts.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/range/concepts.hpp>
#include <boost/range/reference.hpp>
#include <boost/range/value_type.hpp>

#include <algorithm>
#include <functional>
Expand Down Expand Up @@ -69,27 +70,16 @@ namespace burst
public boost::iterator_facade
<
intersect_iterator<RandomAccessIterator, Compare>,
typename boost::range_value
<
typename std::iterator_traits<RandomAccessIterator>::value_type
>
::type,
range_value_t<iterator_value_t<RandomAccessIterator>>,
boost::single_pass_traversal_tag,
detail::prevent_writing_t
<
typename boost::range_reference
<
typename std::iterator_traits<RandomAccessIterator>::value_type
>
::type
>
detail::prevent_writing_t<range_reference_t<iterator_value_t<RandomAccessIterator>>>
>
{
private:
using outer_range_iterator = RandomAccessIterator;
BOOST_CONCEPT_ASSERT((boost::RandomAccessIteratorConcept<outer_range_iterator>));

using inner_range_type = typename std::iterator_traits<outer_range_iterator>::value_type;
using inner_range_type = iterator_value_t<outer_range_iterator>;
BOOST_CONCEPT_ASSERT((boost::ForwardRangeConcept<inner_range_type>));

using compare_type = Compare;
Expand All @@ -98,9 +88,9 @@ namespace burst
boost::iterator_facade
<
intersect_iterator,
typename boost::range_value<inner_range_type>::type,
range_value_t<inner_range_type>,
boost::single_pass_traversal_tag,
detail::prevent_writing_t<typename boost::range_reference<inner_range_type>::type>
detail::prevent_writing_t<range_reference_t<inner_range_type>>
>;

public:
Expand Down
11 changes: 8 additions & 3 deletions include/burst/iterator/join_iterator.hpp
Expand Up @@ -3,10 +3,11 @@

#include <burst/iterator/detail/join_iterator.hpp>
#include <burst/iterator/end_tag.hpp>
#include <burst/range/pure_traversal.hpp>
#include <burst/type_traits/iterator_value.hpp>
#include <burst/type_traits/range_iterator.hpp>

#include <boost/iterator/iterator_categories.hpp>
#include <boost/iterator/minimum_category.hpp>
#include <boost/range/value_type.hpp>

#include <iterator>
#include <utility>
Expand Down Expand Up @@ -79,7 +80,11 @@ namespace burst
typename boost::iterators::minimum_category
<
typename boost::iterators::pure_iterator_traversal<Iterator>::type,
typename pure_range_traversal<typename std::iterator_traits<Iterator>::value_type>::type
typename boost::iterators::pure_iterator_traversal
<
range_iterator_t<iterator_value_t<Iterator>>
>
::type
>
::type
>;
Expand Down
13 changes: 7 additions & 6 deletions include/burst/iterator/merge_iterator.hpp
Expand Up @@ -5,13 +5,14 @@
#include <burst/functional/each.hpp>
#include <burst/functional/invert.hpp>
#include <burst/iterator/end_tag.hpp>
#include <burst/type_traits/iterator_value.hpp>
#include <burst/type_traits/range_reference.hpp>
#include <burst/type_traits/range_value.hpp>

#include <boost/algorithm/cxx11/is_sorted.hpp>
#include <boost/assert.hpp>
#include <boost/iterator/iterator_concepts.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/range/reference.hpp>
#include <boost/range/value_type.hpp>

#include <algorithm>
#include <functional>
Expand Down Expand Up @@ -56,9 +57,9 @@ namespace burst
public boost::iterator_facade
<
merge_iterator<RandomAccessIterator, Compare>,
typename boost::range_value<typename std::iterator_traits<RandomAccessIterator>::value_type>::type,
range_value_t<iterator_value_t<RandomAccessIterator>>,
boost::single_pass_traversal_tag,
typename boost::range_reference<typename std::iterator_traits<RandomAccessIterator>::value_type>::type
range_reference_t<iterator_value_t<RandomAccessIterator>>
>
{
private:
Expand All @@ -69,9 +70,9 @@ namespace burst
boost::iterator_facade
<
merge_iterator,
typename boost::range_value<typename std::iterator_traits<outer_range_iterator>::value_type>::type,
range_value_t<iterator_value_t<outer_range_iterator>>,
boost::single_pass_traversal_tag,
typename boost::range_reference<typename std::iterator_traits<outer_range_iterator>::value_type>::type
range_reference_t<iterator_value_t<outer_range_iterator>>
>;

public:
Expand Down

0 comments on commit 2d7c3a3

Please sign in to comment.