17
17
#include < ostream>
18
18
19
19
namespace ur_params {
20
+ template <typename T> struct is_handle : std::false_type {};
21
+ template <> struct is_handle <ur_loader_config_handle_t > : std::true_type {};
22
+ template <> struct is_handle <ur_adapter_handle_t > : std::true_type {};
23
+ template <> struct is_handle <ur_platform_handle_t > : std::true_type {};
24
+ template <> struct is_handle <ur_device_handle_t > : std::true_type {};
25
+ template <> struct is_handle <ur_context_handle_t > : std::true_type {};
26
+ template <> struct is_handle <ur_event_handle_t > : std::true_type {};
27
+ template <> struct is_handle <ur_program_handle_t > : std::true_type {};
28
+ template <> struct is_handle <ur_kernel_handle_t > : std::true_type {};
29
+ template <> struct is_handle <ur_queue_handle_t > : std::true_type {};
30
+ template <> struct is_handle <ur_native_handle_t > : std::true_type {};
31
+ template <> struct is_handle <ur_sampler_handle_t > : std::true_type {};
32
+ template <> struct is_handle <ur_mem_handle_t > : std::true_type {};
33
+ template <> struct is_handle <ur_physical_mem_handle_t > : std::true_type {};
34
+ template <> struct is_handle <ur_usm_pool_handle_t > : std::true_type {};
35
+ template <> struct is_handle <ur_exp_image_handle_t > : std::true_type {};
36
+ template <> struct is_handle <ur_exp_image_mem_handle_t > : std::true_type {};
37
+ template <> struct is_handle <ur_exp_interop_mem_handle_t > : std::true_type {};
38
+ template <>
39
+ struct is_handle <ur_exp_interop_semaphore_handle_t > : std::true_type {};
40
+ template <>
41
+ struct is_handle <ur_exp_command_buffer_handle_t > : std::true_type {};
42
+ template <typename T> inline constexpr bool is_handle_v = is_handle<T>::value;
20
43
template <typename T> inline void serializePtr (std::ostream &os, T *ptr);
21
44
template <typename T>
22
45
inline void serializeFlag (std::ostream &os, uint32_t flag);
@@ -15268,10 +15291,6 @@ operator<<(std::ostream &os,
15268
15291
}
15269
15292
15270
15293
namespace ur_params {
15271
- // https://devblogs.microsoft.com/oldnewthing/20190710-00/?p=102678
15272
- template <typename , typename = void > constexpr bool is_type_complete_v = false ;
15273
- template <typename T>
15274
- constexpr bool is_type_complete_v<T, std::void_t <decltype (sizeof (T))>> = true ;
15275
15294
15276
15295
template <typename T> inline void serializePtr (std::ostream &os, T *ptr) {
15277
15296
if (ptr == nullptr ) {
@@ -15280,7 +15299,7 @@ template <typename T> inline void serializePtr(std::ostream &os, T *ptr) {
15280
15299
os << (void *)(ptr) << " (" ;
15281
15300
serializePtr (os, *ptr);
15282
15301
os << " )" ;
15283
- } else if constexpr (std::is_void_v<T> || !is_type_complete_v<T >) {
15302
+ } else if constexpr (std::is_void_v<T> || is_handle_v<T * >) {
15284
15303
os << (void *)ptr;
15285
15304
} else if constexpr (std::is_same_v<std::remove_cv_t <T>, char >) {
15286
15305
os << (void *)(ptr) << " (" ;
0 commit comments