1
0
Fork 0
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:
bolero-MURAKAMI 2017-07-29 14:20:01 +09:00
parent 759265d624
commit 0918194078
2792 changed files with 3088 additions and 3003 deletions

View file

@ -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

View file

@ -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:

View file

@ -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

View file

@ -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,

View file

@ -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

View file

@ -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:

View file

@ -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,

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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,

View 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

View file

@ -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 {

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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:

View file

@ -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:

View file

@ -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,

View file

@ -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;

View file

@ -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,

View file

@ -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;

View file

@ -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:

View file

@ -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,

View file

@ -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

View 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

View file

@ -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

View file

@ -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,

View file

@ -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

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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,

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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:

View file

@ -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,

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -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

View file

@ -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,

View file

@ -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);

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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<

View file

@ -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,

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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: