39#include "../util_namespace.cuh"
40#include "../util_macro.cuh"
42#if (THRUST_VERSION >= 100700)
44 #include <thrust/iterator/iterator_facade.h>
45 #include <thrust/iterator/iterator_traits.h>
65template <
typename OffsetT = ptrdiff_t>
77#if (THRUST_VERSION >= 100700)
79 typedef typename thrust::detail::iterator_facade_category<
80 thrust::any_system_tag,
81 thrust::random_access_traversal_tag,
93#if defined(_WIN32) || !defined(_WIN64)
130 template <
typename Distance>
138 template <
typename Distance>
146 template <
typename Distance>
154 template <
typename Distance>
164 return offset - other.offset;
168 template <
typename Distance>
184 offset = other.offset;
189 __host__ __device__ __forceinline__
void operator=(T
const&)
193 __host__ __device__ __forceinline__
operator void*()
const {
return NULL; }
198 return (offset == rhs.offset);
204 return (offset != rhs.offset);
210 os <<
"[" << itr.offset <<
"]";
__host__ __device__ __forceinline__ bool operator==(const self_type &rhs)
Equal to.
__host__ __device__ __forceinline__ difference_type operator-(self_type other) const
Distance.
__host__ __device__ __forceinline__ void operator=(T const &)
Assignment to anything else (no-op)
__host__ __device__ __forceinline__ self_type & operator*()
Indirection.
__host__ __device__ __forceinline__ self_type operator++(int)
Postfix increment.
void reference
The type of a reference to an element the iterator can point to.
OffsetT difference_type
Type to express the result of subtracting one iterator from another.
__host__ __device__ __forceinline__ self_type & operator-=(Distance n)
Subtraction assignment.
__host__ __device__ __forceinline__ self_type operator++()
Prefix increment.
DiscardOutputIterator self_type
My own type.
__host__ __device__ __forceinline__ self_type & operator+=(Distance n)
Addition assignment.
friend std::ostream & operator<<(std::ostream &os, const self_type &itr)
ostream operator
void value_type
The type of the element the iterator can point to.
void pointer
The type of a pointer to an element the iterator can point to.
std::random_access_iterator_tag iterator_category
The iterator category.
__host__ __device__ __forceinline__ DiscardOutputIterator(OffsetT offset=0)
Constructor.
__host__ __device__ __forceinline__ bool operator!=(const self_type &rhs)
Not equal to.
__host__ __device__ __forceinline__ self_type operator+(Distance n) const
Addition.
__host__ __device__ __forceinline__ pointer operator->()
Structure dereference.
__host__ __device__ __forceinline__ self_type operator-(Distance n) const
Subtraction.
__host__ __device__ __forceinline__ self_type & operator[](Distance n)
Array subscript.
__host__ __device__ __forceinline__ void operator=(self_type const &other)
Assignment to self (no-op)
#define CUB_MAX(a, b)
Select maximum(a, b)
Optional outer namespace(s)
OffsetT OffsetT
[in] Total number of input data items