Skip to content

Commit 3f2fe6c

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

File tree

3 files changed

+110
-106
lines changed

3 files changed

+110
-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: 17 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!
@@ -175,6 +177,21 @@ template <typename iterator> class iterator_range {
175177
iterator End;
176178
const size_t Size;
177179
};
180+
181+
template <typename iterator, class Pred>
182+
bool all_of(iterator_range<iterator> R, Pred &&P) {
183+
return std::all_of(R.begin(), R.end(), std::forward<Pred>(P));
184+
}
185+
186+
template <typename iterator, class Pred>
187+
bool any_of(iterator_range<iterator> R, Pred &&P) {
188+
return std::any_of(R.begin(), R.end(), std::forward<Pred>(P));
189+
}
190+
191+
template <typename iterator, class Pred>
192+
bool none_of(iterator_range<iterator> R, Pred &&P) {
193+
return std::none_of(R.begin(), R.end(), std::forward<Pred>(P));
194+
}
178195
} // namespace detail
179196
} // namespace _V1
180197
} // namespace sycl

0 commit comments

Comments
 (0)