Skip to content

Commit acf4d32

Browse files
[NFC][SYCL] Add device_images_range helper
1 parent c0929c3 commit acf4d32

File tree

3 files changed

+107
-106
lines changed

3 files changed

+107
-106
lines changed

sycl/source/detail/device_image_impl.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,6 +1338,18 @@ class device_image_impl
13381338
std::unique_ptr<DynRTDeviceBinaryImage> MMergedImageStorage = nullptr;
13391339
};
13401340

1341+
using device_images_iterator =
1342+
variadic_iterator<device_image_plain,
1343+
std::vector<device_image_plain>::const_iterator,
1344+
std::set<device_image_impl *>::const_iterator>;
1345+
class device_images_range : public iterator_range<device_images_iterator> {
1346+
private:
1347+
using Base = iterator_range<device_images_iterator>;
1348+
1349+
public:
1350+
using Base::Base;
1351+
};
1352+
13411353
} // namespace detail
13421354
} // namespace _V1
13431355
} // namespace sycl

sycl/source/detail/helpers.hpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ template <typename SyclTy, typename... Iterators> class variadic_iterator {
9090
},
9191
It);
9292
}
93+
94+
pointer operator->() { return &this->operator*(); }
9395
};
9496

9597
// Non-owning!
@@ -174,6 +176,18 @@ template <typename iterator> class iterator_range {
174176
iterator Begin;
175177
iterator End;
176178
const size_t Size;
179+
180+
template <class Pred> friend bool all_of(iterator_range R, Pred &&P) {
181+
return std::all_of(R.begin(), R.end(), std::forward<Pred>(P));
182+
}
183+
184+
template <class Pred> friend bool any_of(iterator_range R, Pred &&P) {
185+
return std::any_of(R.begin(), R.end(), std::forward<Pred>(P));
186+
}
187+
188+
template <class Pred> friend bool none_of(iterator_range R, Pred &&P) {
189+
return std::none_of(R.begin(), R.end(), std::forward<Pred>(P));
190+
}
177191
};
178192
} // namespace detail
179193
} // namespace _V1

0 commit comments

Comments
 (0)