15 #include <type_traits>
23 inline typename std::enable_if<!std::is_pointer<T>::value,
void>::type
25 std::cout <<
"<unknown> : " << val << std::endl;
29 inline typename std::enable_if<std::is_pointer<T>::value,
void>::type
31 std::cout <<
"<unknown> : " <<
reinterpret_cast<const void *
>(val)
36 std::cout <<
"pi_platform : " << val << std::endl;
39 template <>
inline void print<>(
PiEvent val) {
40 std::cout <<
"pi_event : " << val << std::endl;
43 template <>
inline void print<>(
PiMem val) {
44 std::cout <<
"pi_mem : " << val << std::endl;
47 template <>
inline void print<>(
PiEvent *val) {
48 std::cout <<
"pi_event * : " << val;
50 std::cout <<
"[ " << *val <<
" ... ]";
52 std::cout <<
"[ nullptr ]";
53 std::cout << std::endl;
56 template <>
inline void print<>(
const PiEvent *val) {
57 std::cout <<
"const pi_event * : " << val;
59 std::cout <<
"[ " << *val <<
" ... ]";
61 std::cout <<
"[ nullptr ]";
62 std::cout << std::endl;
66 std::cout <<
"pi_buffer_region origin/size : " << rgn->
origin <<
"/"
67 << rgn->
size << std::endl;
71 std::cout <<
"pi_buff_rect_region width_bytes/height/depth : "
77 std::cout <<
"pi_buff_rect_offset x_bytes/y/z : " << off->
x_bytes <<
"/"
82 std::cout <<
"pi_image_region width/height/depth : " << rgn->
width <<
"/"
87 std::cout <<
"pi_image_offset x/y/z : " << off->
x <<
"/" << off->
y <<
"/"
88 << off->
z << std::endl;
92 std::cout <<
"image_desc w/h/d : " << desc->
image_width <<
" / "
96 <<
" -- num_mip_lvls/num_smpls/image_type : "
102 std::cout <<
"pi_result : ";
104 std::cout <<
"PI_SUCCESS" << std::endl;
106 std::cout << val << std::endl;
110 template <>
inline void print<>(std::nullptr_t) {
111 std::cout <<
"<nullptr>" << std::endl;
114 template <>
inline void print<>(
char *val) {
115 std::cout <<
"<char * > : " <<
static_cast<void *
>(val) << std::endl;
118 template <>
inline void print<>(
const char *val) {
119 std::cout <<
"<const char *>: " << val << std::endl;
123 template <
typename Arg0,
typename... Args>
136 std::cout <<
"\t[out]pi_event * : " << val;
138 std::cout <<
"[ " << *val <<
" ... ]";
140 std::cout <<
"[ nullptr ]";
141 std::cout << std::endl;
147 std::cout <<
"\t[out]pi_mem * : " << val;
149 std::cout <<
"[ " << *val <<
" ... ]";
151 std::cout <<
"[ nullptr ]";
152 std::cout << std::endl;
157 printOut(
void *val) { std::cout <<
"\t[out]void * : " << val << std::endl; }
162 std::cout <<
"\t[out]<unknown> ** : " << val;
164 std::cout <<
"[ " << *val <<
" ... ]";
166 std::cout <<
"[ nullptr ]";
167 std::cout << std::endl;
172 template <
typename Arg0,
typename... Args>
174 using T = decltype(arg0);