iterator_support¶
#include <compatibility/hpx/util/transform_iterator.hpp>
¶
#include <compatibility/hpx/util/range.hpp>
¶
#include <compatibility/hpx/util/iterator_facade.hpp>
¶
#include <compatibility/hpx/util/iterator_adaptor.hpp>
¶
#include <compatibility/hpx/util/iterator_range.hpp>
¶
#include <compatibility/hpx/traits/is_range.hpp>
¶
#include <compatibility/hpx/traits/is_iterator.hpp>
¶
#include <hpx/iterator_support/transform_iterator.hpp>
¶
-
namespace
hpx
-
namespace
util
Functions
-
template <typename Transformer, typename Iterator>
transform_iterator<Iterator, Transformer>make_transform_iterator
(Iterator const &it, Transformer const &f)¶
-
template <typename Transformer, typename Iterator>
transform_iterator<Iterator, Transformer>make_transform_iterator
(Iterator const &it)¶
-
template <typename Iterator, typename Transformer, typename Reference, typename Value, typename Category, typename Difference>
classtransform_iterator
: public hpx::util::iterator_adaptor<transform_iterator<Iterator, Transformer, Reference, Value, Category, Difference>, Iterator, value_type, iterator_category, reference_type, difference_type>¶ Public Functions
-
transform_iterator
()¶
-
transform_iterator
(Iterator const &it)¶
-
transform_iterator
(Iterator const &it, Transformer const &f)¶
-
template <typename OtherIterator, typename OtherTransformer, typename OtherReference, typename OtherValue, typename OtherCategory, typename OtherDifference>
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 Transformer, typename Iterator>
-
namespace
#include <hpx/iterator_support/range.hpp>
¶
-
namespace
hpx
-
namespace
util
-
namespace
range_adl
¶ Functions
- template <typename C, typename Iterator = typename detail::iterator<C>::type>
-
HPX_HOST_DEVICE Iterator hpx::util::range_adl::begin(C & c)
- template <typename C, typename Iterator = typename detail::iterator<C const>::type>
-
HPX_HOST_DEVICE Iterator hpx::util::range_adl::begin(C const & c)
- template <typename C, typename Sentinel = typename detail::sentinel<C>::type>
-
HPX_HOST_DEVICE Sentinel hpx::util::range_adl::end(C & c)
- template <typename C, typename Sentinel = typename detail::sentinel<C const>::type>
-
HPX_HOST_DEVICE Sentinel hpx::util::range_adl::end(C const & c)
- template <typename C, typename Iterator = typename detail::iterator<C const>::type, typename Sentinel = typename detail::sentinel<C const>::type>
-
HPX_HOST_DEVICE std::size_t hpx::util::range_adl::size(C const & c)
- template <typename C, typename Iterator = typename detail::iterator<C const>::type, typename Sentinel = typename detail::sentinel<C const>::type>
-
HPX_HOST_DEVICE bool hpx::util::range_adl::empty(C const & c)
-
namespace
-
namespace
#include <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, typename T, typename Category, typename Reference, typename Distance, typename Pointer>
-
HPX_HOST_DEVICE util::detail::postfix_increment_result<Derived, typename Derived::value_type, typename Derived::reference>::type hpx::util::operator++(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)
- template <typename Derived, typename T, typename Category, typename Reference, typename Distance, typename Pointer>
-
HPX_HOST_DEVICE Derived hpx::util::operator+(iterator_facade < Derived, T, Category, Reference, Distance, Pointer > const & it, typename Derived::difference_type n)
- template <typename Derived, typename T, typename Category, typename Reference, typename Distance, typename Pointer>
-
HPX_HOST_DEVICE Derived hpx::util::operator+(typename Derived::difference_type n, iterator_facade < Derived, T, Category, Reference, Distance, Pointer > const & it)
-
class
iterator_core_access
¶ Public Static Functions
- template <typename Iterator1, typename Iterator2>
-
static HPX_HOST_DEVICE bool hpx::util::iterator_core_access::equal(Iterator1 const & lhs, Iterator2 const & rhs)
- template <typename Iterator>
-
static HPX_HOST_DEVICE void hpx::util::iterator_core_access::increment(Iterator & it)
- template <typename Iterator>
-
static HPX_HOST_DEVICE void hpx::util::iterator_core_access::decrement(Iterator & it)
- template <typename Reference, typename Iterator>
-
static HPX_HOST_DEVICE Reference hpx::util::iterator_core_access::dereference(Iterator const & it)
- template <typename Iterator, typename Distance>
-
static HPX_HOST_DEVICE void hpx::util::iterator_core_access::advance(Iterator & it, Distance n)
- template <typename Iterator1, typename Iterator2>
-
static HPX_HOST_DEVICE std::iterator_traits<Iterator1>::difference_type hpx::util::iterator_core_access::distance_to(Iterator1 const & lhs, Iterator2 const & rhs)
-
template <typename Derived, typename T, typename Category, typename Reference = T&, typename Distance = std::ptrdiff_t, typename Pointer = void>
structiterator_facade
: public hpx::util::detail::iterator_facade_base<Derived, T, Category, Reference, Distance, Pointer>¶ Subclassed by hpx::util::iterator_adaptor< Derived, Base, Value, Category, Reference, Difference, Pointer >
Public Functions
-
HPX_HOST_DEVICE
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
¶
-
HPX_HOST_DEVICE
-
namespace
#include <hpx/iterator_support/iterator_adaptor.hpp>
¶
-
namespace
hpx
-
namespace
util
-
template <typename Derived, typename Base, typename Value = void, typename Category = void, typename Reference = void, typename Difference = void, typename Pointer = void>
classiterator_adaptor
: public hpx::util::iterator_facade<Derived, value_type, iterator_category, reference_type, difference_type, Pointer>¶ Subclassed by hpx::util::transform_iterator< Iterator, Transformer, Reference, Value, Category, Difference >
Public Types
-
typedef Base
base_type
¶
Public Functions
-
HPX_HOST_DEVICE
iterator_adaptor
()¶
-
HPX_HOST_DEVICE
iterator_adaptor
(Base const &iter)¶
-
HPX_HOST_DEVICE Base const& hpx::util::iterator_adaptor::base() const
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_
¶
Protected Functions
-
HPX_HOST_DEVICE Base const& hpx::util::iterator_adaptor::base_reference() const
-
HPX_HOST_DEVICE Base& hpx::util::iterator_adaptor::base_reference()
Private Functions
-
HPX_HOST_DEVICE base_adaptor_type::reference hpx::util::iterator_adaptor::dereference() const
- template <typename OtherDerived, typename OtherIterator, typename V, typename C, typename R, typename D, typename P>
-
HPX_HOST_DEVICE bool hpx::util::iterator_adaptor::equal(iterator_adaptor < OtherDerived, OtherIterator, V, C, R, D, P > const & x) const
- template <typename DifferenceType>
-
HPX_HOST_DEVICE void hpx::util::iterator_adaptor::advance(DifferenceType n)
-
HPX_HOST_DEVICE void hpx::util::iterator_adaptor::increment()
- template <typename Iterator = Base, typename Enable = typename std::enable_if< traits::is_bidirectional_iterator<Iterator>::value>::type>
-
HPX_HOST_DEVICE void hpx::util::iterator_adaptor::decrement()
- template <typename OtherDerived, typename OtherIterator, typename V, typename C, typename R, typename D, typename P>
-
HPX_HOST_DEVICE base_adaptor_type::difference_type hpx::util::iterator_adaptor::distance_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 Derived, typename Base, typename Value = void, typename Category = void, typename Reference = void, typename Difference = void, typename Pointer = void>
-
namespace
#include <hpx/iterator_support/iterator_range.hpp>
¶
-
namespace
hpx
-
namespace
util
Functions
-
template <typename Range, typename Iterator = typename traits::range_iterator<Range>::type, typename Sentinel = 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 Range, typename Iterator = typename traits::range_iterator<Range const>::type, typename Sentinel = typename traits::range_iterator<Range const>::type>
std::enable_if<traits::is_range<Range>::value, iterator_range<Iterator, Sentinel>>::typemake_iterator_range
(Range const &r)
-
template <typename Iterator, typename Sentinel = Iterator>
std::enable_if<traits::is_iterator<Iterator>::value, iterator_range<Iterator, Sentinel>>::typemake_iterator_range
(Iterator iterator, Sentinel sentinel)¶
-
template <typename Range, typename Iterator = typename traits::range_iterator<Range>::type, typename Sentinel = typename traits::range_iterator<Range>::type>
-
namespace
#include <hpx/iterator_support/zip_iterator.hpp>
¶
-
template <typename F, typename... Ts>
template<>
structlift_zipped_iterators
<F, util::zip_iterator<Ts...>>¶ Public Types
-
typedef util::zip_iterator<Ts...>::iterator_tuple_type
tuple_type
¶
Public Static Functions
-
template <std::size_t... Is, typename... Ts_>
static result_typecall
(util::detail::pack_c<std::size_t, 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
-
namespace
hpx
-
namespace
traits
-
namespace
functional
¶ -
template <typename F, typename... Ts>
template<>
structlift_zipped_iterators
<F, util::zip_iterator<Ts...>> Public Types
-
typedef util::zip_iterator<Ts...>::iterator_tuple_type
tuple_type
Public Static Functions
-
template <std::size_t... Is, typename... Ts_>
static result_typecall
(util::detail::pack_c<std::size_t, 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 F, typename... Ts>
-
namespace
-
namespace
util
Functions
- template <typename… Ts>
-
HPX_HOST_DEVICE zip_iterator<typename decay<Ts>::type...> hpx::util::make_zip_iterator(Ts &&... vs)
-
template <typename... Ts>
classzip_iterator
: public hpx::util::detail::zip_iterator_base<tuple<Ts...>, zip_iterator<Ts...>>¶ Public Functions
-
HPX_HOST_DEVICE
zip_iterator
()¶
-
HPX_HOST_DEVICE
zip_iterator
(Ts const&... vs)¶
-
HPX_HOST_DEVICE
zip_iterator
(zip_iterator const &other)¶
-
HPX_HOST_DEVICE
zip_iterator
(zip_iterator &&other)¶
-
HPX_HOST_DEVICE zip_iterator& hpx::util::zip_iterator::operator=(zip_iterator const & other)
-
HPX_HOST_DEVICE zip_iterator& hpx::util::zip_iterator::operator=(zip_iterator && other)
- template <typename… Ts_>
-
HPX_HOST_DEVICE std::enable_if< detail::are_tuples_compatible_not_same< typename zip_iterator::iterator_tuple_type, typename zip_iterator<Ts_...>::iterator_tuple_type&&>::value, zip_iterator&>::type hpx::util::zip_iterator::operator=(zip_iterator < Ts_... > const & other)
- template <typename… Ts_>
-
HPX_HOST_DEVICE std::enable_if< detail::are_tuples_compatible_not_same< typename zip_iterator::iterator_tuple_type, typename zip_iterator<Ts_...>::iterator_tuple_type&&>::value, zip_iterator&>::type hpx::util::zip_iterator::operator=(zip_iterator < Ts_... > && other)
Private Types
-
typedef detail::zip_iterator_base<tuple<Ts...>, zip_iterator<Ts...>>
base_type
¶
-
HPX_HOST_DEVICE
-
template <typename... Ts>
template<>
classzip_iterator
<tuple<Ts...>> : public hpx::util::detail::zip_iterator_base<tuple<Ts...>, zip_iterator<tuple<Ts...>>>¶ Public Functions
-
HPX_HOST_DEVICE
zip_iterator
()
-
HPX_HOST_DEVICE
zip_iterator
(Ts const&... vs)¶
-
HPX_HOST_DEVICE
zip_iterator
(zip_iterator const &other)¶
-
HPX_HOST_DEVICE
zip_iterator
(zip_iterator &&other)¶
-
HPX_HOST_DEVICE zip_iterator& hpx::util::zip_iterator::operator=(zip_iterator const & other)
-
HPX_HOST_DEVICE zip_iterator& hpx::util::zip_iterator::operator=(zip_iterator && other)
- template <typename… Ts_>
-
HPX_HOST_DEVICE std::enable_if< detail::are_tuples_compatible_not_same< typename zip_iterator::iterator_tuple_type, typename zip_iterator<Ts_...>::iterator_tuple_type&&>::value, zip_iterator&>::type hpx::util::zip_iterator::operator=(zip_iterator < Ts_... > const & other)
- template <typename… Ts_>
-
HPX_HOST_DEVICE std::enable_if< detail::are_tuples_compatible_not_same< typename zip_iterator::iterator_tuple_type, typename zip_iterator<Ts_...>::iterator_tuple_type&&>::value, zip_iterator&>::type hpx::util::zip_iterator::operator=(zip_iterator < Ts_... > && other)
Private Types
-
typedef detail::zip_iterator_base<tuple<Ts...>, zip_iterator<tuple<Ts...>>>
base_type
-
HPX_HOST_DEVICE
-
namespace