21 #ifndef ROCPRIM_ITERATOR_TRANSFORM_ITERATOR_HPP_ 22 #define ROCPRIM_ITERATOR_TRANSFORM_ITERATOR_HPP_ 26 #include <type_traits> 28 #include "../config.hpp" 29 #include "../detail/match_result_type.hpp" 34 BEGIN_ROCPRIM_NAMESPACE
54 typename ::rocprim::detail::invoke_result<
55 UnaryFunction,
typename std::iterator_traits<InputIterator>::value_type
70 using difference_type =
typename std::iterator_traits<InputIterator>::difference_type;
76 #ifndef DOXYGEN_SHOULD_SKIP_THIS 80 ROCPRIM_HOST_DEVICE
inline 88 ROCPRIM_HOST_DEVICE
inline 90 : iterator_(iterator), transform_(transform)
94 #ifndef DOXYGEN_SHOULD_SKIP_THIS 95 ROCPRIM_HOST_DEVICE
inline 102 ROCPRIM_HOST_DEVICE
inline 110 ROCPRIM_HOST_DEVICE
inline 117 ROCPRIM_HOST_DEVICE
inline 125 ROCPRIM_HOST_DEVICE
inline 128 return transform_(*iterator_);
131 ROCPRIM_HOST_DEVICE
inline 137 ROCPRIM_HOST_DEVICE
inline 144 ROCPRIM_HOST_DEVICE
inline 150 ROCPRIM_HOST_DEVICE
inline 153 iterator_ += distance;
157 ROCPRIM_HOST_DEVICE
inline 163 ROCPRIM_HOST_DEVICE
inline 166 iterator_ -= distance;
170 ROCPRIM_HOST_DEVICE
inline 173 return iterator_ - other.iterator_;
176 ROCPRIM_HOST_DEVICE
inline 179 return iterator_ == other.iterator_;
182 ROCPRIM_HOST_DEVICE
inline 185 return iterator_ != other.iterator_;
188 ROCPRIM_HOST_DEVICE
inline 191 return iterator_ < other.iterator_;
194 ROCPRIM_HOST_DEVICE
inline 197 return iterator_ <= other.iterator_;
200 ROCPRIM_HOST_DEVICE
inline 203 return iterator_ > other.iterator_;
206 ROCPRIM_HOST_DEVICE
inline 209 return iterator_ >= other.iterator_;
216 #endif // DOXYGEN_SHOULD_SKIP_THIS 219 InputIterator iterator_;
220 UnaryFunction transform_;
223 #ifndef DOXYGEN_SHOULD_SKIP_THIS 229 ROCPRIM_HOST_DEVICE
inline 234 return iterator + distance;
236 #endif // DOXYGEN_SHOULD_SKIP_THIS 252 ROCPRIM_HOST_DEVICE
inline 259 END_ROCPRIM_NAMESPACE
264 #endif // ROCPRIM_ITERATOR_TRANSFORM_ITERATOR_HPP_
ROCPRIM_HOST_DEVICE transform_iterator< InputIterator, UnaryFunction > make_transform_iterator(InputIterator iterator, UnaryFunction transform)
make_transform_iterator creates a transform_iterator using iterator as the underlying iterator and tr...
Definition: transform_iterator.hpp:254
hipError_t transform(InputIterator input, OutputIterator output, const size_t size, UnaryFunction transform_op, const hipStream_t stream=0, bool debug_synchronous=false)
Parallel transform primitive for device level.
Definition: device_transform.hpp:135