mirror of
https://github.com/bolero-MURAKAMI/Sprout
synced 2025-08-03 12:49:50 +00:00
add sprout::iterator, and update copyright
This commit is contained in:
parent
759265d624
commit
0918194078
2792 changed files with 3088 additions and 3003 deletions
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/type_traits/common.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/algorithm/adjacent_find.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
|
||||
|
@ -21,28 +22,30 @@ namespace sprout {
|
|||
//
|
||||
template<typename Predicate, typename Iterator>
|
||||
class adjacent_filter_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
typename sprout::min_iterator_category<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
std::forward_iterator_tag
|
||||
>::type,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
>::type
|
||||
>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
typename sprout::min_iterator_category<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
std::forward_iterator_tag
|
||||
>::type
|
||||
>::type base_type;
|
||||
public:
|
||||
typedef Predicate predicate_type;
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename sprout::min_iterator_category<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
std::forward_iterator_tag
|
||||
>::type iterator_category;
|
||||
typedef typename std::iterator_traits<Iterator>::value_type value_type;
|
||||
typedef typename std::iterator_traits<Iterator>::difference_type difference_type;
|
||||
typedef typename std::iterator_traits<Iterator>::pointer pointer;
|
||||
typedef typename std::iterator_traits<Iterator>::reference reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
private:
|
||||
struct private_construct_t {};
|
||||
private:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,10 +8,10 @@
|
|||
#ifndef SPROUT_ITERATOR_ALTERNATE_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_ALTERNATE_ITERATOR_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -25,7 +25,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename LIterator, typename RIterator>
|
||||
class alternate_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::common_iterator_category<LIterator, RIterator>::type,
|
||||
typename sprout::common_iterator_value_type<LIterator, RIterator>::type,
|
||||
typename sprout::common_iterator_difference_type<LIterator, RIterator>::type,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include <iterator>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -28,7 +29,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Container>
|
||||
class back_insert_iterator
|
||||
: public std::iterator<std::output_iterator_tag, void, void, void, void>
|
||||
: public sprout::iterator<std::output_iterator_tag, void, void, void, void>
|
||||
, public sprout::container_holder<Container>
|
||||
{
|
||||
private:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -11,6 +11,7 @@
|
|||
#include <iterator>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/workaround/std/cstddef.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -26,7 +27,7 @@ namespace sprout {
|
|||
typename Traits = sprout::endian_traits<typename std::iterator_traits<Iterator>::value_type>
|
||||
>
|
||||
class bytes_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
unsigned char,
|
||||
std::ptrdiff_t,
|
||||
|
@ -38,7 +39,7 @@ namespace sprout {
|
|||
typedef Iterator iterator_type;
|
||||
typedef Traits traits_type;
|
||||
private:
|
||||
typedef std::iterator<
|
||||
typedef sprout::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
unsigned char,
|
||||
std::ptrdiff_t,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -13,6 +13,7 @@
|
|||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/algorithm/clamp.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT
|
||||
|
@ -23,22 +24,18 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator, typename Compare = NS_SSCRISK_CEL_OR_SPROUT::less<typename std::iterator_traits<Iterator>::value_type> >
|
||||
class clamp_iterator
|
||||
: public std::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
: public sprout::detail::iterator_base<Iterator>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<Iterator>::type base_type;
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef Compare compare_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::iterator_category iterator_category;
|
||||
typedef typename std::iterator_traits<iterator_type>::value_type value_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::difference_type difference_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::pointer pointer;
|
||||
typedef typename std::iterator_traits<iterator_type>::reference reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
protected:
|
||||
iterator_type current;
|
||||
Compare comp;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -13,6 +13,7 @@
|
|||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/limits.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -25,7 +26,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Incrementable>
|
||||
class counting_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
Incrementable,
|
||||
std::ptrdiff_t,
|
||||
|
|
40
sprout/iterator/detail/iterator_base.hpp
Normal file
40
sprout/iterator/detail/iterator_base.hpp
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under 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 SPROUT_ITERATOR_DETAIL_ITERATOR_BASE_HPP
|
||||
#define SPROUT_ITERATOR_DETAIL_ITERATOR_BASE_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/utility/use_default.hpp>
|
||||
|
||||
namespace sprout {
|
||||
namespace detail {
|
||||
template<
|
||||
typename Iterator,
|
||||
typename Category = sprout::use_default,
|
||||
typename T = sprout::use_default,
|
||||
typename Distance = sprout::use_default,
|
||||
typename Pointer = sprout::use_default,
|
||||
typename Reference = sprout::use_default
|
||||
>
|
||||
struct iterator_base
|
||||
: public sprout::identity<
|
||||
sprout::iterator<
|
||||
typename sprout::select_default<Category, typename std::iterator_traits<Iterator>::iterator_category>::type,
|
||||
typename sprout::select_default<T, typename std::iterator_traits<Iterator>::value_type>::type,
|
||||
typename sprout::select_default<Distance, typename std::iterator_traits<Iterator>::difference_type>::type,
|
||||
typename sprout::select_default<Pointer, typename std::iterator_traits<Iterator>::pointer>::type,
|
||||
typename sprout::select_default<Reference, typename std::iterator_traits<Iterator>::reference>::type
|
||||
>
|
||||
>
|
||||
{};
|
||||
} // namespace detail
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_ITERATOR_DETAIL_ITERATOR_BASE_HPP
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,7 +8,6 @@
|
|||
#ifndef SPROUT_ITERATOR_DETAIL_ITERATOR_TO_POINTER_HPP
|
||||
#define SPROUT_ITERATOR_DETAIL_ITERATOR_TO_POINTER_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <sprout/config.hpp>
|
||||
|
||||
namespace sprout {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -16,6 +16,7 @@
|
|||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/numeric/dft/dft_element.hpp>
|
||||
|
||||
|
@ -25,22 +26,24 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator>
|
||||
class dft_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
std::random_access_iterator_tag,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
sprout::use_default,
|
||||
sprout::use_default,
|
||||
void,
|
||||
typename std::iterator_traits<Iterator>::value_type
|
||||
>
|
||||
>::type
|
||||
{
|
||||
private:
|
||||
typedef std::iterator<
|
||||
typedef typename sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
std::random_access_iterator_tag,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
sprout::use_default,
|
||||
sprout::use_default,
|
||||
void,
|
||||
typename std::iterator_traits<Iterator>::value_type
|
||||
> base_type;
|
||||
>::type base_type;
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -13,6 +13,7 @@
|
|||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/type_traits/common.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/algorithm/find_if.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
|
||||
|
@ -22,28 +23,30 @@ namespace sprout {
|
|||
//
|
||||
template<typename Predicate, typename Iterator>
|
||||
class filter_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
typename sprout::min_iterator_category<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
std::bidirectional_iterator_tag
|
||||
>::type,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
>::type
|
||||
>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
typename sprout::min_iterator_category<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
std::bidirectional_iterator_tag
|
||||
>::type
|
||||
>::type base_type;
|
||||
public:
|
||||
typedef Predicate predicate_type;
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename sprout::min_iterator_category<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
std::bidirectional_iterator_tag
|
||||
>::type iterator_category;
|
||||
typedef typename std::iterator_traits<Iterator>::value_type value_type;
|
||||
typedef typename std::iterator_traits<Iterator>::difference_type difference_type;
|
||||
typedef typename std::iterator_traits<Iterator>::pointer pointer;
|
||||
typedef typename std::iterator_traits<Iterator>::reference reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
private:
|
||||
struct private_construct_t {};
|
||||
private:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include <iterator>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -28,7 +29,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Container>
|
||||
class front_insert_iterator
|
||||
: public std::iterator<std::output_iterator_tag, void, void, void, void>
|
||||
: public sprout::iterator<std::output_iterator_tag, void, void, void, void>
|
||||
, public sprout::container_holder<Container>
|
||||
{
|
||||
private:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -17,6 +17,7 @@
|
|||
#include <sprout/generator/functions.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/type_traits/identity.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
|
@ -24,7 +25,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Generator>
|
||||
class generator_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
std::forward_iterator_tag,
|
||||
typename std::remove_reference<decltype(sprout::generators::generated_value(std::declval<Generator const>()))>::type,
|
||||
std::ptrdiff_t,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -16,6 +16,7 @@
|
|||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/numeric/dft/idft_element.hpp>
|
||||
|
||||
|
@ -25,22 +26,24 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator>
|
||||
class idft_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
std::random_access_iterator_tag,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
sprout::use_default,
|
||||
sprout::use_default,
|
||||
void,
|
||||
typename std::iterator_traits<Iterator>::value_type
|
||||
>
|
||||
>::type
|
||||
{
|
||||
private:
|
||||
typedef std::iterator<
|
||||
typedef typename sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
std::random_access_iterator_tag,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
sprout::use_default,
|
||||
sprout::use_default,
|
||||
void,
|
||||
typename std::iterator_traits<Iterator>::value_type
|
||||
> base_type;
|
||||
>::type base_type;
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -13,6 +13,7 @@
|
|||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -32,7 +33,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Container, bool ConvertibleToPointer = false, typename Subscript = sprout::subscript<> >
|
||||
class index_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
typename sprout::container_traits<typename std::remove_reference<Container>::type>::value_type,
|
||||
typename sprout::container_traits<typename std::remove_reference<Container>::type>::difference_type,
|
||||
|
@ -67,7 +68,7 @@ namespace sprout {
|
|||
>::type const_container_type;
|
||||
private:
|
||||
typedef Subscript subscript_type;
|
||||
typedef std::iterator<
|
||||
typedef sprout::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
typename traits_type::value_type,
|
||||
typename traits_type::difference_type,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,12 +8,12 @@
|
|||
#ifndef SPROUT_ITERATOR_INDEXED_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_INDEXED_ITERATOR_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
|
||||
namespace sprout {
|
||||
|
@ -22,21 +22,17 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator>
|
||||
class indexed_iterator
|
||||
: public std::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
: public sprout::detail::iterator_base<Iterator>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<Iterator>::type base_type;
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::iterator_category iterator_category;
|
||||
typedef typename std::iterator_traits<iterator_type>::value_type value_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::difference_type difference_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::pointer pointer;
|
||||
typedef typename std::iterator_traits<iterator_type>::reference reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
typedef difference_type index_type;
|
||||
protected:
|
||||
iterator_type current;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include <iterator>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -29,7 +30,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Container>
|
||||
class insert_iterator
|
||||
: public std::iterator<std::output_iterator_tag, void, void, void, void>
|
||||
: public sprout::iterator<std::output_iterator_tag, void, void, void, void>
|
||||
, public sprout::container_holder<Container>
|
||||
{
|
||||
private:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,10 +8,8 @@
|
|||
#ifndef SPROUT_ITERATOR_INSERT_RANGE_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_INSERT_RANGE_ITERATOR_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -26,7 +24,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename DstIterator, typename SrcIterator>
|
||||
class insert_range_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::common_iterator_category<DstIterator, SrcIterator>::type,
|
||||
typename sprout::common_iterator_value_type<DstIterator, SrcIterator>::type,
|
||||
typename sprout::common_iterator_difference_type<DstIterator, SrcIterator>::type,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
32
sprout/iterator/iterator.hpp
Normal file
32
sprout/iterator/iterator.hpp
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under 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 SPROUT_ITERATOR_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_ITERATOR_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/workaround/std/cstddef.hpp>
|
||||
|
||||
namespace sprout {
|
||||
template<
|
||||
typename Category,
|
||||
typename T,
|
||||
typename Distance = std::ptrdiff_t,
|
||||
typename Pointer = T*,
|
||||
typename Reference = T&
|
||||
>
|
||||
struct iterator {
|
||||
public:
|
||||
typedef Category iterator_category;
|
||||
typedef T value_type;
|
||||
typedef Distance difference_type;
|
||||
typedef Pointer pointer;
|
||||
typedef Reference reference;
|
||||
};
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_ITERATOR_ITERATOR_HPP
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,10 +8,8 @@
|
|||
#ifndef SPROUT_ITERATOR_JOINT_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_JOINT_ITERATOR_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -26,7 +24,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename LIterator, typename RIterator>
|
||||
class joint_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::common_iterator_category<LIterator, RIterator>::type,
|
||||
typename sprout::common_iterator_value_type<LIterator, RIterator>::type,
|
||||
typename sprout::common_iterator_difference_type<LIterator, RIterator>::type,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/type_traits/common.hpp>
|
||||
#include <sprout/functional/less.hpp>
|
||||
|
@ -26,7 +27,7 @@ namespace sprout {
|
|||
typename Compare = sprout::less<>
|
||||
>
|
||||
class merge_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::min_iterator_category<
|
||||
typename sprout::common_iterator_category<LIterator, RIterator>::type,
|
||||
std::forward_iterator_tag
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,13 +8,12 @@
|
|||
#ifndef SPROUT_ITERATOR_MOVE_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_MOVE_ITERATOR_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
#include <sprout/iterator/const_iterator_cast.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/utility/move.hpp>
|
||||
#include <sprout/type_traits/enabler_if.hpp>
|
||||
|
@ -25,21 +24,31 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator>
|
||||
class move_iterator
|
||||
: public std::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
: public sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
sprout::use_default,
|
||||
sprout::use_default,
|
||||
sprout::use_default,
|
||||
Iterator,
|
||||
typename iterator_traits<Iterator>::value_type&&
|
||||
>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
sprout::use_default,
|
||||
sprout::use_default,
|
||||
sprout::use_default,
|
||||
Iterator,
|
||||
typename iterator_traits<Iterator>::value_type&&
|
||||
>::type base_type;
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::iterator_category iterator_category;
|
||||
typedef typename std::iterator_traits<iterator_type>::value_type value_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::difference_type difference_type;
|
||||
typedef Iterator pointer;
|
||||
typedef value_type&& reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
protected:
|
||||
iterator_type current;
|
||||
public:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include <utility>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/value_holder/value_holder.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
|
||||
|
@ -21,21 +22,23 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator>
|
||||
struct next_iterator
|
||||
: public std::iterator<
|
||||
std::forward_iterator_tag,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
: public sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
std::forward_iterator_tag
|
||||
>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
std::forward_iterator_tag
|
||||
>::type base_type;
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef std::forward_iterator_tag iterator_category;
|
||||
typedef typename std::iterator_traits<iterator_type>::value_type value_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::difference_type difference_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::pointer pointer;
|
||||
typedef typename std::iterator_traits<iterator_type>::reference reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
private:
|
||||
typedef sprout::value_holder<reference> holder_type;
|
||||
private:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -16,6 +16,7 @@
|
|||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
#include <sprout/iterator/detail/iterator_to_pointer.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/type_traits/integral_constant.hpp>
|
||||
|
||||
|
@ -25,30 +26,17 @@ namespace sprout {
|
|||
//
|
||||
template<typename T, bool ConvertibleToPointer = false>
|
||||
class ptr_index_iterator
|
||||
: public std::iterator<
|
||||
typename std::iterator_traits<T*>::iterator_category,
|
||||
typename std::iterator_traits<T*>::value_type,
|
||||
typename std::iterator_traits<T*>::difference_type,
|
||||
typename std::iterator_traits<T*>::pointer,
|
||||
typename std::iterator_traits<T*>::reference
|
||||
>
|
||||
: public sprout::detail::iterator_base<T*>::type
|
||||
, public sprout::detail::iterator_to_pointer_base<
|
||||
sprout::ptr_index_iterator<T, ConvertibleToPointer>,
|
||||
typename std::iterator_traits<T*>::pointer,
|
||||
ConvertibleToPointer
|
||||
>
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<T*>::type base_type;
|
||||
public:
|
||||
typedef T type;
|
||||
private:
|
||||
typedef std::iterator<
|
||||
typename std::iterator_traits<T*>::iterator_category,
|
||||
typename std::iterator_traits<T*>::value_type,
|
||||
typename std::iterator_traits<T*>::difference_type,
|
||||
typename std::iterator_traits<T*>::pointer,
|
||||
typename std::iterator_traits<T*>::reference
|
||||
> base_type;
|
||||
public:
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,9 +8,9 @@
|
|||
#ifndef SPROUT_ITERATOR_REMAKE_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_REMAKE_ITERATOR_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -24,7 +24,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename DstIterator, typename SrcIterator>
|
||||
class remake_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::common_iterator_category<DstIterator, SrcIterator>::type,
|
||||
typename sprout::common_iterator_value_type<DstIterator, SrcIterator>::type,
|
||||
typename sprout::common_iterator_difference_type<DstIterator, SrcIterator>::type,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,13 +8,13 @@
|
|||
#ifndef SPROUT_ITERATOR_REVERSE_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_REVERSE_ITERATOR_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
#include <sprout/iterator/const_iterator_cast.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/type_traits/enabler_if.hpp>
|
||||
|
||||
|
@ -24,21 +24,17 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator>
|
||||
class reverse_iterator
|
||||
: public std::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
: public sprout::detail::iterator_base<Iterator>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<Iterator>::type base_type;
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::iterator_category iterator_category;
|
||||
typedef typename std::iterator_traits<iterator_type>::value_type value_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::difference_type difference_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::pointer pointer;
|
||||
typedef typename std::iterator_traits<iterator_type>::reference reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
protected:
|
||||
iterator_type current;
|
||||
public:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -13,6 +13,7 @@
|
|||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/workaround/std/cstddef.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -25,7 +26,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Value>
|
||||
class sawtooth_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
Value,
|
||||
std::ptrdiff_t,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/type_traits/common.hpp>
|
||||
#include <sprout/functional/less.hpp>
|
||||
|
@ -29,7 +30,7 @@ namespace sprout {
|
|||
typename Compare = sprout::less<>
|
||||
>
|
||||
class set_difference_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::min_iterator_category<
|
||||
typename sprout::common_iterator_category<LIterator, RIterator>::type,
|
||||
std::forward_iterator_tag
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/type_traits/common.hpp>
|
||||
#include <sprout/functional/less.hpp>
|
||||
|
@ -29,7 +30,7 @@ namespace sprout {
|
|||
typename Compare = sprout::less<>
|
||||
>
|
||||
class set_intersection_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::min_iterator_category<
|
||||
typename sprout::common_iterator_category<LIterator, RIterator>::type,
|
||||
std::forward_iterator_tag
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/type_traits/common.hpp>
|
||||
#include <sprout/functional/less.hpp>
|
||||
|
@ -96,7 +97,7 @@ namespace sprout {
|
|||
typename Compare = sprout::less<>
|
||||
>
|
||||
class set_symmetric_difference_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::min_iterator_category<
|
||||
typename sprout::common_iterator_category<LIterator, RIterator>::type,
|
||||
std::forward_iterator_tag
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/type_traits/common.hpp>
|
||||
#include <sprout/functional/less.hpp>
|
||||
|
@ -28,7 +29,7 @@ namespace sprout {
|
|||
typename Compare = sprout::less<>
|
||||
>
|
||||
class set_union_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::min_iterator_category<
|
||||
typename sprout::common_iterator_category<LIterator, RIterator>::type,
|
||||
std::forward_iterator_tag
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -13,6 +13,7 @@
|
|||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/workaround/std/cstddef.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -25,7 +26,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Value>
|
||||
class sinusoid_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
Value,
|
||||
std::ptrdiff_t,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -24,7 +25,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator, bool Separated = false>
|
||||
class size_enum_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
typename sprout::container_traits<
|
||||
typename std::iterator_traits<Iterator>::value_type
|
||||
|
@ -134,7 +135,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator>
|
||||
class size_enum_iterator<Iterator, true>
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
typename sprout::container_traits<
|
||||
typename std::iterator_traits<Iterator>::value_type
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -13,6 +13,7 @@
|
|||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/workaround/std/cstddef.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -25,7 +26,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Value>
|
||||
class square_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
Value,
|
||||
std::ptrdiff_t,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,12 +8,12 @@
|
|||
#ifndef SPROUT_ITERATOR_STEP_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_STEP_ITERATOR_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include HDR_ALGORITHM_MIN_MAX_SSCRISK_CEL_OR_SPROUT
|
||||
|
||||
|
@ -23,21 +23,17 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator>
|
||||
class step_iterator
|
||||
: public std::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
: public sprout::detail::iterator_base<Iterator>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<Iterator>::type base_type;
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::iterator_category iterator_category;
|
||||
typedef typename std::iterator_traits<iterator_type>::value_type value_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::difference_type difference_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::pointer pointer;
|
||||
typedef typename std::iterator_traits<iterator_type>::reference reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
private:
|
||||
static SPROUT_CONSTEXPR iterator_type get_back(iterator_type it, difference_type wid, iterator_type last) {
|
||||
return sprout::next(it, (sprout::distance(it, last) - 1) / wid * wid);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -12,6 +12,7 @@
|
|||
#include <utility>
|
||||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -25,7 +26,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename BinaryFunction, typename LIterator, typename RIterator = void>
|
||||
class transform_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename sprout::common_iterator_category<LIterator, RIterator>::type,
|
||||
typename std::remove_reference<
|
||||
typename sprout::result_of<
|
||||
|
@ -176,7 +177,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename UnaryFunction, typename Iterator>
|
||||
class transform_iterator<UnaryFunction, Iterator, void>
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
typename std::remove_reference<
|
||||
typename sprout::result_of<
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -13,6 +13,7 @@
|
|||
#include <type_traits>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/workaround/std/cstddef.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -25,7 +26,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename Value>
|
||||
class triangle_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
Value,
|
||||
std::ptrdiff_t,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -14,6 +14,7 @@
|
|||
#include <sprout/config.hpp>
|
||||
#include <sprout/workaround/std/cstddef.hpp>
|
||||
#include <sprout/limits.hpp>
|
||||
#include <sprout/iterator/iterator.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
|
@ -26,7 +27,7 @@ namespace sprout {
|
|||
//
|
||||
template<typename T>
|
||||
class value_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
typename sprout::value_holder<T>::value_type,
|
||||
std::ptrdiff_t,
|
||||
|
@ -42,7 +43,7 @@ namespace sprout {
|
|||
typename std::decay<type>::type const
|
||||
>::type const_type;
|
||||
private:
|
||||
typedef std::iterator<
|
||||
typedef sprout::iterator<
|
||||
std::random_access_iterator_tag,
|
||||
typename sprout::value_holder<T>::value_type,
|
||||
std::ptrdiff_t,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -8,12 +8,12 @@
|
|||
#ifndef SPROUT_ITERATOR_VALUED_ITERATOR_HPP
|
||||
#define SPROUT_ITERATOR_VALUED_ITERATOR_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/utility/value_holder/value_holder.hpp>
|
||||
|
||||
|
@ -23,21 +23,17 @@ namespace sprout {
|
|||
//
|
||||
template<typename Iterator, typename T>
|
||||
class valued_iterator
|
||||
: public std::iterator<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
: public sprout::detail::iterator_base<Iterator>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<Iterator>::type base_type;
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::iterator_category iterator_category;
|
||||
typedef typename std::iterator_traits<iterator_type>::value_type value_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::difference_type difference_type;
|
||||
typedef typename std::iterator_traits<iterator_type>::pointer pointer;
|
||||
typedef typename std::iterator_traits<iterator_type>::reference reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
typedef T content_type;
|
||||
typedef sprout::value_holder<T> holder_type;
|
||||
typedef typename holder_type::param_type param_type;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2016 Bolero MURAKAMI
|
||||
Copyright (c) 2011-2017 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
|
@ -14,6 +14,7 @@
|
|||
#include <sprout/config.hpp>
|
||||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/detail/iterator_base.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
|
||||
namespace sprout {
|
||||
|
@ -22,30 +23,32 @@ namespace sprout {
|
|||
//
|
||||
template<typename Predicate, typename Iterator>
|
||||
class while_iterator
|
||||
: public std::iterator<
|
||||
: public sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
typename std::conditional<
|
||||
std::is_convertible<typename std::iterator_traits<Iterator>::iterator_category, std::random_access_iterator_tag>::value,
|
||||
std::bidirectional_iterator_tag,
|
||||
typename std::iterator_traits<Iterator>::iterator_category
|
||||
>::type,
|
||||
typename std::iterator_traits<Iterator>::value_type,
|
||||
typename std::iterator_traits<Iterator>::difference_type,
|
||||
typename std::iterator_traits<Iterator>::pointer,
|
||||
typename std::iterator_traits<Iterator>::reference
|
||||
>
|
||||
>::type
|
||||
>::type
|
||||
{
|
||||
private:
|
||||
typedef typename sprout::detail::iterator_base<
|
||||
Iterator,
|
||||
typename std::conditional<
|
||||
std::is_convertible<typename std::iterator_traits<Iterator>::iterator_category, std::random_access_iterator_tag>::value,
|
||||
std::bidirectional_iterator_tag,
|
||||
typename std::iterator_traits<Iterator>::iterator_category
|
||||
>::type
|
||||
>::type base_type;
|
||||
public:
|
||||
typedef Predicate predicate_type;
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename std::conditional<
|
||||
std::is_convertible<typename std::iterator_traits<Iterator>::iterator_category, std::random_access_iterator_tag>::value,
|
||||
std::bidirectional_iterator_tag,
|
||||
typename std::iterator_traits<Iterator>::iterator_category
|
||||
>::type iterator_category;
|
||||
typedef typename std::iterator_traits<Iterator>::value_type value_type;
|
||||
typedef typename std::iterator_traits<Iterator>::difference_type difference_type;
|
||||
typedef typename std::iterator_traits<Iterator>::pointer pointer;
|
||||
typedef typename std::iterator_traits<Iterator>::reference reference;
|
||||
typedef typename base_type::iterator_category iterator_category;
|
||||
typedef typename base_type::value_type value_type;
|
||||
typedef typename base_type::difference_type difference_type;
|
||||
typedef typename base_type::pointer pointer;
|
||||
typedef typename base_type::reference reference;
|
||||
private:
|
||||
struct private_construct_t {};
|
||||
private:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue