iterator_support¶
The contents of this module can be included with the header
hpx/modules/iterator_support.hpp. These headers may be used by user-code but are not
guaranteed stable (neither header location nor contents). You are using these at
your own risk. If you wish to use non-public functionality from a module we
strongly suggest only including the module header hpx/modules/iterator_support.hpp, not
the particular header in which the functionality you would like to use is
defined. See Public API for a list of names that are part of the public
HPX API.
Header hpx/iterator_support/counting_iterator.hpp¶
-
template<typename
Incrementable, typenameCategoryOrTraversal, typenameDifference>
classcounting_iterator<Incrementable, CategoryOrTraversal, Difference, typename std::enable_if<std::is_integral<Incrementable>::value>::type> : public hpx::util::iterator_adaptor<counting_iterator<Incrementable, CategoryOrTraversal, Difference>, Incrementable, Incrementable, traversal, Incrementable const&, difference>¶ - #include <counting_iterator.hpp>
Public Functions
-
counting_iterator()¶
-
counting_iterator(counting_iterator const &rhs)¶
-
counting_iterator(Incrementable x)¶
Private Types
-
template<>
usingbase_type= typename detail::counting_iterator_base<Incrementable, CategoryOrTraversal, Difference>::type¶
Private Functions
-
void
increment()¶
-
void
decrement()¶
-
base_type::reference
dereference() const¶
-
template<typename
OtherIncrementable>
base_type::difference_typedistance_to(counting_iterator<OtherIncrementable, CategoryOrTraversal, Difference> const &y) const¶
Friends
-
friend
iterator_core_access
-
-
namespace
hpx -
namespace
util Functions
-
template<typename
Incrementable>
counting_iterator<Incrementable>make_counting_iterator(Incrementable x)¶
-
template<typename
Incrementable, typenameCategoryOrTraversal, typenameDifference, typenameEnable>
classcounting_iterator: public hpx::util::iterator_adaptor<counting_iterator<Incrementable, CategoryOrTraversal, Difference>, Incrementable, Incrementable, traversal, Incrementable const&, difference>¶ - #include <counting_iterator.hpp>
Public Functions
-
counting_iterator()
-
counting_iterator(counting_iterator const &rhs)
-
counting_iterator(Incrementable x)
Private Types
-
template<>
usingbase_type= typename detail::counting_iterator_base<Incrementable, CategoryOrTraversal, Difference>::type¶
Private Functions
-
base_type::reference
dereference() const
Friends
-
friend
hpx::util::iterator_core_access
-
-
template<typename
Incrementable, typenameCategoryOrTraversal, typenameDifference>
classcounting_iterator<Incrementable, CategoryOrTraversal, Difference, typename std::enable_if<std::is_integral<Incrementable>::value>::type> : public hpx::util::iterator_adaptor<counting_iterator<Incrementable, CategoryOrTraversal, Difference>, Incrementable, Incrementable, traversal, Incrementable const&, difference> - #include <counting_iterator.hpp>
Public Functions
-
counting_iterator()
-
counting_iterator(counting_iterator const &rhs)
-
counting_iterator(Incrementable x)
Private Types
-
template<>
usingbase_type= typename detail::counting_iterator_base<Incrementable, CategoryOrTraversal, Difference>::type
Private Functions
-
template<typename
Iterator>
boolequal(Iterator const &rhs) const
-
void
increment()
-
void
decrement()
-
template<typename
Distance>
voidadvance(Distance n)
-
base_type::reference
dereference() const
-
template<typename
OtherIncrementable>
base_type::difference_typedistance_to(counting_iterator<OtherIncrementable, CategoryOrTraversal, Difference> const &y) const
Friends
-
friend
hpx::util::iterator_core_access
-
-
template<typename
-
namespace
Header hpx/iterator_support/iterator_adaptor.hpp¶
-
namespace
hpx -
namespace
util -
template<typename
Derived, typenameBase, typenameValue= void, typenameCategory= void, typenameReference= void, typenameDifference= void, typenamePointer= void>
classiterator_adaptor: public hpx::util::iterator_facade<Derived, value_type, iterator_category, reference_type, difference_type, Pointer>¶ - #include <iterator_adaptor.hpp>
Subclassed by hpx::util::counting_iterator< Incrementable, CategoryOrTraversal, Difference, Enable >, hpx::util::counting_iterator< Incrementable, CategoryOrTraversal, Difference, typename std::enable_if< std::is_integral< Incrementable >::value >::type >, hpx::util::transform_iterator< Iterator, Transformer, Reference, Value, Category, Difference >
Public Types
-
typedef Base
base_type¶
Protected Types
-
typedef hpx::util::detail::iterator_adaptor_base<Derived, Base, Value, Category, Reference, Difference, Pointer>::type
base_adaptor_type¶
-
typedef iterator_adaptor<Derived, Base, Value, Category, Reference, Difference, Pointer>
iterator_adaptor_¶
Private Functions
-
base_adaptor_type::reference
dereference() const¶
-
template<typename
OtherDerived, typenameOtherIterator, typenameV, typenameC, typenameR, typenameD, typenameP>
boolequal(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D, P> const &x) const¶
-
template<typename
DifferenceType>
voidadvance(DifferenceType n)¶
-
void
increment()¶
-
template<typename
Iterator= Base, typenameEnable= typename std::enable_if<traits::is_bidirectional_iterator<Iterator>::value>::type>
voiddecrement()¶
-
template<typename
OtherDerived, typenameOtherIterator, typenameV, typenameC, typenameR, typenameD, typenameP>
base_adaptor_type::difference_typedistance_to(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D, P> const &y) const¶
Private Members
-
Base
iterator_¶
Friends
-
friend
hpx::util::hpx::util::iterator_core_access
-
typedef Base
-
template<typename
-
namespace
Header hpx/iterator_support/iterator_facade.hpp¶
Defines
-
HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type)¶
-
namespace
hpx -
namespace
util Functions
-
template<typename
Derived, typenameT, typenameCategory, typenameReference, typenameDistance, typenamePointer>
util::detail::postfix_increment_result<Derived, typename Derived::value_type, typename Derived::reference>::typeoperator++(iterator_facade<Derived, T, Category, Reference, Distance, Pointer> &i, int)¶
-
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(inline, bool)
-
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(inline, !, bool)
-
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(inline)
-
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(inline, <=, bool)
-
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(inline, >=, bool)
-
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(inline, -, typename std::iterator_traits< Derived2 >::difference_type)
-
class
iterator_core_access¶ - #include <iterator_facade.hpp>
-
template<typename
Derived, typenameT, typenameCategory, typenameReference= T&, typenameDistance= std::ptrdiff_t, typenamePointer= void>
structiterator_facade: public hpx::util::detail::iterator_facade_base<Derived, T, Category, Reference, Distance, Pointer>¶ - #include <iterator_facade.hpp>
Subclassed by hpx::util::iterator_adaptor< Derived, Base, Value, Category, Reference, Difference, Pointer >
Public Functions
-
iterator_facade()¶
Protected Types
-
typedef iterator_facade<Derived, T, Category, Reference, Distance, Pointer>
iterator_adaptor_¶
Private Types
-
typedef detail::iterator_facade_base<Derived, T, Category, Reference, Distance, Pointer>
base_type¶
-
-
template<typename
-
namespace
Header hpx/iterator_support/iterator_range.hpp¶
-
namespace
hpx -
namespace
util Functions
-
template<typename
Range, typenameIterator= typename traits::range_iterator<Range>::type, typenameSentinel= typename traits::range_iterator<Range>::type>
std::enable_if<traits::is_range<Range>::value, iterator_range<Iterator, Sentinel>>::typemake_iterator_range(Range &r)¶
-
template<typename
-
namespace
Header hpx/iterator_support/range.hpp¶
-
namespace
hpx -
namespace
util -
namespace
range_adl¶ Functions
-
template<typename
C, typenameIterator= typename detail::iterator<C>::type>
constexpr Iteratorbegin(C &c)¶
-
template<typename
C, typenameIterator= typename detail::iterator<C const>::type>
constexpr Iteratorbegin(C const &c)¶
-
template<typename
C, typenameSentinel= typename detail::sentinel<C>::type>
constexpr Sentinelend(C &c)¶
-
template<typename
C, typenameSentinel= typename detail::sentinel<C const>::type>
constexpr Sentinelend(C const &c)¶
-
template<typename
-
namespace
-
namespace
Header hpx/iterator_support/traits/is_iterator.hpp¶
Header hpx/iterator_support/traits/is_range.hpp¶
Header hpx/iterator_support/traits/is_sentinel_for.hpp¶
-
namespace
hpx -
namespace
traits Variables
-
template<typename Sent, typename Iter>HPX_INLINE_CONSTEXPR_VARIABLE bool hpx::traits::disable_sized_sentinel_for = false
-
-
namespace
Header hpx/iterator_support/transform_iterator.hpp¶
-
namespace
hpx -
namespace
util Functions
-
template<typename
Transformer, typenameIterator>
transform_iterator<Iterator, Transformer>make_transform_iterator(Iterator const &it, Transformer const &f)¶
-
template<typename
Transformer, typenameIterator>
transform_iterator<Iterator, Transformer>make_transform_iterator(Iterator const &it)¶
-
template<typename
Iterator, typenameTransformer, typenameReference, typenameValue, typenameCategory, typenameDifference>
classtransform_iterator: public hpx::util::iterator_adaptor<transform_iterator<Iterator, Transformer, Reference, Value, Category, Difference>, Iterator, value_type, iterator_category, reference_type, difference_type>¶ - #include <transform_iterator.hpp>
Public Functions
-
transform_iterator()¶
-
transform_iterator(Iterator const &it)¶
-
transform_iterator(Iterator const &it, Transformer const &f)¶
-
template<typename
OtherIterator, typenameOtherTransformer, typenameOtherReference, typenameOtherValue, typenameOtherCategory, typenameOtherDifference>transform_iterator(transform_iterator<OtherIterator, OtherTransformer, OtherReference, OtherValue, OtherCategory, OtherDifference> const &t, typename std::enable_if<std::is_convertible<OtherIterator, Iterator>::value && std::is_convertible<OtherTransformer, Transformer>::value && std::is_convertible<OtherCategory, Category>::value && std::is_convertible<OtherDifference, Difference>::value>::type* = nullptr)¶
-
Transformer const &
transformer() const¶
Private Types
-
typedef detail::transform_iterator_base<Iterator, Transformer, Reference, Value, Category, Difference>::type
base_type¶
Private Members
-
Transformer
transformer_¶
Friends
-
friend
hpx::util::hpx::util::iterator_core_access
-
-
template<typename
-
namespace
Header hpx/iterator_support/zip_iterator.hpp¶
-
template<typename
F, typename ...Ts>
structlift_zipped_iterators<F, util::zip_iterator<Ts...>>¶ - #include <zip_iterator.hpp>
Public Types
Public Static Functions
-
template<std::size_t...
Is, typename ...Ts_>
static result_typecall(util::index_pack<Is...>, util::tuple<Ts_...> const &t)¶
-
template<typename ...
Ts_>
static result_typecall(util::zip_iterator<Ts_...> const &iter)¶
-
template<std::size_t...
-
namespace
hpx -
namespace
traits -
namespace
functional¶ -
template<typename
F, typename ...Ts>
structlift_zipped_iterators<F, util::zip_iterator<Ts...>> - #include <zip_iterator.hpp>
Public Types
-
typedef util::zip_iterator<Ts...>::iterator_tuple_type
tuple_type
-
typedef util::tuple<typename element_result_of<typename F::template apply<Ts>, Ts>::type...>
result_type
Public Static Functions
-
template<std::size_t...
Is, typename ...Ts_>
static result_typecall(util::index_pack<Is...>, util::tuple<Ts_...> const &t)
-
template<typename ...
Ts_>
static result_typecall(util::zip_iterator<Ts_...> const &iter)
-
typedef util::zip_iterator<Ts...>::iterator_tuple_type
-
template<typename
-
namespace
-
namespace
util Functions
-
template<typename ...
Ts>
classzip_iterator: public hpx::util::detail::zip_iterator_base<tuple<Ts...>, zip_iterator<Ts...>>¶ - #include <zip_iterator.hpp>
Public Functions
-
zip_iterator()¶
-
zip_iterator(Ts const&... vs)¶
-
zip_iterator(tuple<Ts...> &&t)¶
-
zip_iterator(zip_iterator const &other)¶
-
zip_iterator(zip_iterator &&other)¶
-
zip_iterator &
operator=(zip_iterator const &other)¶
-
zip_iterator &
operator=(zip_iterator &&other)¶
Private Types
-
typedef detail::zip_iterator_base<tuple<Ts...>, zip_iterator<Ts...>>
base_type¶
-
-
template<typename ...
Ts>
classzip_iterator<tuple<Ts...>> : public hpx::util::detail::zip_iterator_base<tuple<Ts...>, zip_iterator<tuple<Ts...>>>¶ - #include <zip_iterator.hpp>
Public Functions
-
zip_iterator()
-
zip_iterator(Ts const&... vs)
-
zip_iterator(tuple<Ts...> &&t)
-
zip_iterator(zip_iterator const &other)
-
zip_iterator(zip_iterator &&other)
-
zip_iterator &
operator=(zip_iterator const &other)
-
zip_iterator &
operator=(zip_iterator &&other)
Private Types
-
typedef detail::zip_iterator_base<tuple<Ts...>, zip_iterator<tuple<Ts...>>>
base_type
-
-
template<typename ...
-
namespace