xref: /llvm-project/offload/liboffload/include/generated/OffloadPrint.hpp (revision fd3907ccb583df99e9c19d2fe84e4e7c52d75de9)
1*fd3907ccSCallum Fare //===- Auto-generated file, part of the LLVM/Offload project --------------===//
2*fd3907ccSCallum Fare //
3*fd3907ccSCallum Fare // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*fd3907ccSCallum Fare // See https://llvm.org/LICENSE.txt for license information.
5*fd3907ccSCallum Fare // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*fd3907ccSCallum Fare //
7*fd3907ccSCallum Fare //===----------------------------------------------------------------------===//
8*fd3907ccSCallum Fare 
9*fd3907ccSCallum Fare // Auto-generated file, do not manually edit.
10*fd3907ccSCallum Fare 
11*fd3907ccSCallum Fare #pragma once
12*fd3907ccSCallum Fare 
13*fd3907ccSCallum Fare #include <OffloadAPI.h>
14*fd3907ccSCallum Fare #include <ostream>
15*fd3907ccSCallum Fare 
16*fd3907ccSCallum Fare template <typename T>
17*fd3907ccSCallum Fare inline ol_result_t printPtr(std::ostream &os, const T *ptr);
18*fd3907ccSCallum Fare template <typename T>
19*fd3907ccSCallum Fare inline void printTagged(std::ostream &os, const void *ptr, T value,
20*fd3907ccSCallum Fare                         size_t size);
21*fd3907ccSCallum Fare template <typename T> struct is_handle : std::false_type {};
22*fd3907ccSCallum Fare template <> struct is_handle<ol_platform_handle_t> : std::true_type {};
23*fd3907ccSCallum Fare template <> struct is_handle<ol_device_handle_t> : std::true_type {};
24*fd3907ccSCallum Fare template <> struct is_handle<ol_context_handle_t> : std::true_type {};
25*fd3907ccSCallum Fare template <typename T> inline constexpr bool is_handle_v = is_handle<T>::value;
26*fd3907ccSCallum Fare 
27*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os, enum ol_errc_t value);
28*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os,
29*fd3907ccSCallum Fare                                 enum ol_platform_info_t value);
30*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os,
31*fd3907ccSCallum Fare                                 enum ol_platform_backend_t value);
32*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os, enum ol_device_type_t value);
33*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os, enum ol_device_info_t value);
34*fd3907ccSCallum Fare 
35*fd3907ccSCallum Fare ///////////////////////////////////////////////////////////////////////////////
36*fd3907ccSCallum Fare /// @brief Print operator for the ol_errc_t type
37*fd3907ccSCallum Fare /// @returns std::ostream &
38*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os, enum ol_errc_t value) {
39*fd3907ccSCallum Fare   switch (value) {
40*fd3907ccSCallum Fare   case OL_ERRC_SUCCESS:
41*fd3907ccSCallum Fare     os << "OL_ERRC_SUCCESS";
42*fd3907ccSCallum Fare     break;
43*fd3907ccSCallum Fare   case OL_ERRC_INVALID_VALUE:
44*fd3907ccSCallum Fare     os << "OL_ERRC_INVALID_VALUE";
45*fd3907ccSCallum Fare     break;
46*fd3907ccSCallum Fare   case OL_ERRC_INVALID_PLATFORM:
47*fd3907ccSCallum Fare     os << "OL_ERRC_INVALID_PLATFORM";
48*fd3907ccSCallum Fare     break;
49*fd3907ccSCallum Fare   case OL_ERRC_DEVICE_NOT_FOUND:
50*fd3907ccSCallum Fare     os << "OL_ERRC_DEVICE_NOT_FOUND";
51*fd3907ccSCallum Fare     break;
52*fd3907ccSCallum Fare   case OL_ERRC_INVALID_DEVICE:
53*fd3907ccSCallum Fare     os << "OL_ERRC_INVALID_DEVICE";
54*fd3907ccSCallum Fare     break;
55*fd3907ccSCallum Fare   case OL_ERRC_DEVICE_LOST:
56*fd3907ccSCallum Fare     os << "OL_ERRC_DEVICE_LOST";
57*fd3907ccSCallum Fare     break;
58*fd3907ccSCallum Fare   case OL_ERRC_UNINITIALIZED:
59*fd3907ccSCallum Fare     os << "OL_ERRC_UNINITIALIZED";
60*fd3907ccSCallum Fare     break;
61*fd3907ccSCallum Fare   case OL_ERRC_OUT_OF_RESOURCES:
62*fd3907ccSCallum Fare     os << "OL_ERRC_OUT_OF_RESOURCES";
63*fd3907ccSCallum Fare     break;
64*fd3907ccSCallum Fare   case OL_ERRC_UNSUPPORTED_VERSION:
65*fd3907ccSCallum Fare     os << "OL_ERRC_UNSUPPORTED_VERSION";
66*fd3907ccSCallum Fare     break;
67*fd3907ccSCallum Fare   case OL_ERRC_UNSUPPORTED_FEATURE:
68*fd3907ccSCallum Fare     os << "OL_ERRC_UNSUPPORTED_FEATURE";
69*fd3907ccSCallum Fare     break;
70*fd3907ccSCallum Fare   case OL_ERRC_INVALID_ARGUMENT:
71*fd3907ccSCallum Fare     os << "OL_ERRC_INVALID_ARGUMENT";
72*fd3907ccSCallum Fare     break;
73*fd3907ccSCallum Fare   case OL_ERRC_INVALID_NULL_HANDLE:
74*fd3907ccSCallum Fare     os << "OL_ERRC_INVALID_NULL_HANDLE";
75*fd3907ccSCallum Fare     break;
76*fd3907ccSCallum Fare   case OL_ERRC_INVALID_NULL_POINTER:
77*fd3907ccSCallum Fare     os << "OL_ERRC_INVALID_NULL_POINTER";
78*fd3907ccSCallum Fare     break;
79*fd3907ccSCallum Fare   case OL_ERRC_INVALID_SIZE:
80*fd3907ccSCallum Fare     os << "OL_ERRC_INVALID_SIZE";
81*fd3907ccSCallum Fare     break;
82*fd3907ccSCallum Fare   case OL_ERRC_INVALID_ENUMERATION:
83*fd3907ccSCallum Fare     os << "OL_ERRC_INVALID_ENUMERATION";
84*fd3907ccSCallum Fare     break;
85*fd3907ccSCallum Fare   case OL_ERRC_UNSUPPORTED_ENUMERATION:
86*fd3907ccSCallum Fare     os << "OL_ERRC_UNSUPPORTED_ENUMERATION";
87*fd3907ccSCallum Fare     break;
88*fd3907ccSCallum Fare   case OL_ERRC_UNKNOWN:
89*fd3907ccSCallum Fare     os << "OL_ERRC_UNKNOWN";
90*fd3907ccSCallum Fare     break;
91*fd3907ccSCallum Fare   default:
92*fd3907ccSCallum Fare     os << "unknown enumerator";
93*fd3907ccSCallum Fare     break;
94*fd3907ccSCallum Fare   }
95*fd3907ccSCallum Fare   return os;
96*fd3907ccSCallum Fare }
97*fd3907ccSCallum Fare 
98*fd3907ccSCallum Fare ///////////////////////////////////////////////////////////////////////////////
99*fd3907ccSCallum Fare /// @brief Print operator for the ol_platform_info_t type
100*fd3907ccSCallum Fare /// @returns std::ostream &
101*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os,
102*fd3907ccSCallum Fare                                 enum ol_platform_info_t value) {
103*fd3907ccSCallum Fare   switch (value) {
104*fd3907ccSCallum Fare   case OL_PLATFORM_INFO_NAME:
105*fd3907ccSCallum Fare     os << "OL_PLATFORM_INFO_NAME";
106*fd3907ccSCallum Fare     break;
107*fd3907ccSCallum Fare   case OL_PLATFORM_INFO_VENDOR_NAME:
108*fd3907ccSCallum Fare     os << "OL_PLATFORM_INFO_VENDOR_NAME";
109*fd3907ccSCallum Fare     break;
110*fd3907ccSCallum Fare   case OL_PLATFORM_INFO_VERSION:
111*fd3907ccSCallum Fare     os << "OL_PLATFORM_INFO_VERSION";
112*fd3907ccSCallum Fare     break;
113*fd3907ccSCallum Fare   case OL_PLATFORM_INFO_BACKEND:
114*fd3907ccSCallum Fare     os << "OL_PLATFORM_INFO_BACKEND";
115*fd3907ccSCallum Fare     break;
116*fd3907ccSCallum Fare   default:
117*fd3907ccSCallum Fare     os << "unknown enumerator";
118*fd3907ccSCallum Fare     break;
119*fd3907ccSCallum Fare   }
120*fd3907ccSCallum Fare   return os;
121*fd3907ccSCallum Fare }
122*fd3907ccSCallum Fare 
123*fd3907ccSCallum Fare ///////////////////////////////////////////////////////////////////////////////
124*fd3907ccSCallum Fare /// @brief Print type-tagged ol_platform_info_t enum value
125*fd3907ccSCallum Fare /// @returns std::ostream &
126*fd3907ccSCallum Fare template <>
127*fd3907ccSCallum Fare inline void printTagged(std::ostream &os, const void *ptr,
128*fd3907ccSCallum Fare                         ol_platform_info_t value, size_t size) {
129*fd3907ccSCallum Fare   if (ptr == NULL) {
130*fd3907ccSCallum Fare     printPtr(os, ptr);
131*fd3907ccSCallum Fare     return;
132*fd3907ccSCallum Fare   }
133*fd3907ccSCallum Fare 
134*fd3907ccSCallum Fare   switch (value) {
135*fd3907ccSCallum Fare   case OL_PLATFORM_INFO_NAME: {
136*fd3907ccSCallum Fare     printPtr(os, (const char *)ptr);
137*fd3907ccSCallum Fare     break;
138*fd3907ccSCallum Fare   }
139*fd3907ccSCallum Fare   case OL_PLATFORM_INFO_VENDOR_NAME: {
140*fd3907ccSCallum Fare     printPtr(os, (const char *)ptr);
141*fd3907ccSCallum Fare     break;
142*fd3907ccSCallum Fare   }
143*fd3907ccSCallum Fare   case OL_PLATFORM_INFO_VERSION: {
144*fd3907ccSCallum Fare     printPtr(os, (const char *)ptr);
145*fd3907ccSCallum Fare     break;
146*fd3907ccSCallum Fare   }
147*fd3907ccSCallum Fare   case OL_PLATFORM_INFO_BACKEND: {
148*fd3907ccSCallum Fare     const ol_platform_backend_t *const tptr =
149*fd3907ccSCallum Fare         (const ol_platform_backend_t *const)ptr;
150*fd3907ccSCallum Fare     os << (const void *)tptr << " (";
151*fd3907ccSCallum Fare     os << *tptr;
152*fd3907ccSCallum Fare     os << ")";
153*fd3907ccSCallum Fare     break;
154*fd3907ccSCallum Fare   }
155*fd3907ccSCallum Fare   default:
156*fd3907ccSCallum Fare     os << "unknown enumerator";
157*fd3907ccSCallum Fare     break;
158*fd3907ccSCallum Fare   }
159*fd3907ccSCallum Fare }
160*fd3907ccSCallum Fare ///////////////////////////////////////////////////////////////////////////////
161*fd3907ccSCallum Fare /// @brief Print operator for the ol_platform_backend_t type
162*fd3907ccSCallum Fare /// @returns std::ostream &
163*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os,
164*fd3907ccSCallum Fare                                 enum ol_platform_backend_t value) {
165*fd3907ccSCallum Fare   switch (value) {
166*fd3907ccSCallum Fare   case OL_PLATFORM_BACKEND_UNKNOWN:
167*fd3907ccSCallum Fare     os << "OL_PLATFORM_BACKEND_UNKNOWN";
168*fd3907ccSCallum Fare     break;
169*fd3907ccSCallum Fare   case OL_PLATFORM_BACKEND_CUDA:
170*fd3907ccSCallum Fare     os << "OL_PLATFORM_BACKEND_CUDA";
171*fd3907ccSCallum Fare     break;
172*fd3907ccSCallum Fare   case OL_PLATFORM_BACKEND_AMDGPU:
173*fd3907ccSCallum Fare     os << "OL_PLATFORM_BACKEND_AMDGPU";
174*fd3907ccSCallum Fare     break;
175*fd3907ccSCallum Fare   default:
176*fd3907ccSCallum Fare     os << "unknown enumerator";
177*fd3907ccSCallum Fare     break;
178*fd3907ccSCallum Fare   }
179*fd3907ccSCallum Fare   return os;
180*fd3907ccSCallum Fare }
181*fd3907ccSCallum Fare 
182*fd3907ccSCallum Fare ///////////////////////////////////////////////////////////////////////////////
183*fd3907ccSCallum Fare /// @brief Print operator for the ol_device_type_t type
184*fd3907ccSCallum Fare /// @returns std::ostream &
185*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os, enum ol_device_type_t value) {
186*fd3907ccSCallum Fare   switch (value) {
187*fd3907ccSCallum Fare   case OL_DEVICE_TYPE_DEFAULT:
188*fd3907ccSCallum Fare     os << "OL_DEVICE_TYPE_DEFAULT";
189*fd3907ccSCallum Fare     break;
190*fd3907ccSCallum Fare   case OL_DEVICE_TYPE_ALL:
191*fd3907ccSCallum Fare     os << "OL_DEVICE_TYPE_ALL";
192*fd3907ccSCallum Fare     break;
193*fd3907ccSCallum Fare   case OL_DEVICE_TYPE_GPU:
194*fd3907ccSCallum Fare     os << "OL_DEVICE_TYPE_GPU";
195*fd3907ccSCallum Fare     break;
196*fd3907ccSCallum Fare   case OL_DEVICE_TYPE_CPU:
197*fd3907ccSCallum Fare     os << "OL_DEVICE_TYPE_CPU";
198*fd3907ccSCallum Fare     break;
199*fd3907ccSCallum Fare   default:
200*fd3907ccSCallum Fare     os << "unknown enumerator";
201*fd3907ccSCallum Fare     break;
202*fd3907ccSCallum Fare   }
203*fd3907ccSCallum Fare   return os;
204*fd3907ccSCallum Fare }
205*fd3907ccSCallum Fare 
206*fd3907ccSCallum Fare ///////////////////////////////////////////////////////////////////////////////
207*fd3907ccSCallum Fare /// @brief Print operator for the ol_device_info_t type
208*fd3907ccSCallum Fare /// @returns std::ostream &
209*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os, enum ol_device_info_t value) {
210*fd3907ccSCallum Fare   switch (value) {
211*fd3907ccSCallum Fare   case OL_DEVICE_INFO_TYPE:
212*fd3907ccSCallum Fare     os << "OL_DEVICE_INFO_TYPE";
213*fd3907ccSCallum Fare     break;
214*fd3907ccSCallum Fare   case OL_DEVICE_INFO_PLATFORM:
215*fd3907ccSCallum Fare     os << "OL_DEVICE_INFO_PLATFORM";
216*fd3907ccSCallum Fare     break;
217*fd3907ccSCallum Fare   case OL_DEVICE_INFO_NAME:
218*fd3907ccSCallum Fare     os << "OL_DEVICE_INFO_NAME";
219*fd3907ccSCallum Fare     break;
220*fd3907ccSCallum Fare   case OL_DEVICE_INFO_VENDOR:
221*fd3907ccSCallum Fare     os << "OL_DEVICE_INFO_VENDOR";
222*fd3907ccSCallum Fare     break;
223*fd3907ccSCallum Fare   case OL_DEVICE_INFO_DRIVER_VERSION:
224*fd3907ccSCallum Fare     os << "OL_DEVICE_INFO_DRIVER_VERSION";
225*fd3907ccSCallum Fare     break;
226*fd3907ccSCallum Fare   default:
227*fd3907ccSCallum Fare     os << "unknown enumerator";
228*fd3907ccSCallum Fare     break;
229*fd3907ccSCallum Fare   }
230*fd3907ccSCallum Fare   return os;
231*fd3907ccSCallum Fare }
232*fd3907ccSCallum Fare 
233*fd3907ccSCallum Fare ///////////////////////////////////////////////////////////////////////////////
234*fd3907ccSCallum Fare /// @brief Print type-tagged ol_device_info_t enum value
235*fd3907ccSCallum Fare /// @returns std::ostream &
236*fd3907ccSCallum Fare template <>
237*fd3907ccSCallum Fare inline void printTagged(std::ostream &os, const void *ptr,
238*fd3907ccSCallum Fare                         ol_device_info_t value, size_t size) {
239*fd3907ccSCallum Fare   if (ptr == NULL) {
240*fd3907ccSCallum Fare     printPtr(os, ptr);
241*fd3907ccSCallum Fare     return;
242*fd3907ccSCallum Fare   }
243*fd3907ccSCallum Fare 
244*fd3907ccSCallum Fare   switch (value) {
245*fd3907ccSCallum Fare   case OL_DEVICE_INFO_TYPE: {
246*fd3907ccSCallum Fare     const ol_device_type_t *const tptr = (const ol_device_type_t *const)ptr;
247*fd3907ccSCallum Fare     os << (const void *)tptr << " (";
248*fd3907ccSCallum Fare     os << *tptr;
249*fd3907ccSCallum Fare     os << ")";
250*fd3907ccSCallum Fare     break;
251*fd3907ccSCallum Fare   }
252*fd3907ccSCallum Fare   case OL_DEVICE_INFO_PLATFORM: {
253*fd3907ccSCallum Fare     const ol_platform_handle_t *const tptr =
254*fd3907ccSCallum Fare         (const ol_platform_handle_t *const)ptr;
255*fd3907ccSCallum Fare     os << (const void *)tptr << " (";
256*fd3907ccSCallum Fare     os << *tptr;
257*fd3907ccSCallum Fare     os << ")";
258*fd3907ccSCallum Fare     break;
259*fd3907ccSCallum Fare   }
260*fd3907ccSCallum Fare   case OL_DEVICE_INFO_NAME: {
261*fd3907ccSCallum Fare     printPtr(os, (const char *)ptr);
262*fd3907ccSCallum Fare     break;
263*fd3907ccSCallum Fare   }
264*fd3907ccSCallum Fare   case OL_DEVICE_INFO_VENDOR: {
265*fd3907ccSCallum Fare     printPtr(os, (const char *)ptr);
266*fd3907ccSCallum Fare     break;
267*fd3907ccSCallum Fare   }
268*fd3907ccSCallum Fare   case OL_DEVICE_INFO_DRIVER_VERSION: {
269*fd3907ccSCallum Fare     printPtr(os, (const char *)ptr);
270*fd3907ccSCallum Fare     break;
271*fd3907ccSCallum Fare   }
272*fd3907ccSCallum Fare   default:
273*fd3907ccSCallum Fare     os << "unknown enumerator";
274*fd3907ccSCallum Fare     break;
275*fd3907ccSCallum Fare   }
276*fd3907ccSCallum Fare }
277*fd3907ccSCallum Fare 
278*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os,
279*fd3907ccSCallum Fare                                 const ol_error_struct_t *Err) {
280*fd3907ccSCallum Fare   if (Err == nullptr) {
281*fd3907ccSCallum Fare     os << "OL_SUCCESS";
282*fd3907ccSCallum Fare   } else {
283*fd3907ccSCallum Fare     os << Err->Code;
284*fd3907ccSCallum Fare   }
285*fd3907ccSCallum Fare   return os;
286*fd3907ccSCallum Fare }
287*fd3907ccSCallum Fare 
288*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os,
289*fd3907ccSCallum Fare                                 const struct ol_get_platform_params_t *params) {
290*fd3907ccSCallum Fare   os << ".NumEntries = ";
291*fd3907ccSCallum Fare   os << *params->pNumEntries;
292*fd3907ccSCallum Fare   os << ", ";
293*fd3907ccSCallum Fare   os << ".Platforms = ";
294*fd3907ccSCallum Fare   os << "{";
295*fd3907ccSCallum Fare   for (size_t i = 0; i < *params->pNumEntries; i++) {
296*fd3907ccSCallum Fare     if (i > 0) {
297*fd3907ccSCallum Fare       os << ", ";
298*fd3907ccSCallum Fare     }
299*fd3907ccSCallum Fare     printPtr(os, (*params->pPlatforms)[i]);
300*fd3907ccSCallum Fare   }
301*fd3907ccSCallum Fare   os << "}";
302*fd3907ccSCallum Fare   return os;
303*fd3907ccSCallum Fare }
304*fd3907ccSCallum Fare 
305*fd3907ccSCallum Fare inline std::ostream &
306*fd3907ccSCallum Fare operator<<(std::ostream &os,
307*fd3907ccSCallum Fare            const struct ol_get_platform_count_params_t *params) {
308*fd3907ccSCallum Fare   os << ".NumPlatforms = ";
309*fd3907ccSCallum Fare   printPtr(os, *params->pNumPlatforms);
310*fd3907ccSCallum Fare   return os;
311*fd3907ccSCallum Fare }
312*fd3907ccSCallum Fare 
313*fd3907ccSCallum Fare inline std::ostream &
314*fd3907ccSCallum Fare operator<<(std::ostream &os,
315*fd3907ccSCallum Fare            const struct ol_get_platform_info_params_t *params) {
316*fd3907ccSCallum Fare   os << ".Platform = ";
317*fd3907ccSCallum Fare   printPtr(os, *params->pPlatform);
318*fd3907ccSCallum Fare   os << ", ";
319*fd3907ccSCallum Fare   os << ".PropName = ";
320*fd3907ccSCallum Fare   os << *params->pPropName;
321*fd3907ccSCallum Fare   os << ", ";
322*fd3907ccSCallum Fare   os << ".PropSize = ";
323*fd3907ccSCallum Fare   os << *params->pPropSize;
324*fd3907ccSCallum Fare   os << ", ";
325*fd3907ccSCallum Fare   os << ".PropValue = ";
326*fd3907ccSCallum Fare   printTagged(os, *params->pPropValue, *params->pPropName, *params->pPropSize);
327*fd3907ccSCallum Fare   return os;
328*fd3907ccSCallum Fare }
329*fd3907ccSCallum Fare 
330*fd3907ccSCallum Fare inline std::ostream &
331*fd3907ccSCallum Fare operator<<(std::ostream &os,
332*fd3907ccSCallum Fare            const struct ol_get_platform_info_size_params_t *params) {
333*fd3907ccSCallum Fare   os << ".Platform = ";
334*fd3907ccSCallum Fare   printPtr(os, *params->pPlatform);
335*fd3907ccSCallum Fare   os << ", ";
336*fd3907ccSCallum Fare   os << ".PropName = ";
337*fd3907ccSCallum Fare   os << *params->pPropName;
338*fd3907ccSCallum Fare   os << ", ";
339*fd3907ccSCallum Fare   os << ".PropSizeRet = ";
340*fd3907ccSCallum Fare   printPtr(os, *params->pPropSizeRet);
341*fd3907ccSCallum Fare   return os;
342*fd3907ccSCallum Fare }
343*fd3907ccSCallum Fare 
344*fd3907ccSCallum Fare inline std::ostream &
345*fd3907ccSCallum Fare operator<<(std::ostream &os,
346*fd3907ccSCallum Fare            const struct ol_get_device_count_params_t *params) {
347*fd3907ccSCallum Fare   os << ".Platform = ";
348*fd3907ccSCallum Fare   printPtr(os, *params->pPlatform);
349*fd3907ccSCallum Fare   os << ", ";
350*fd3907ccSCallum Fare   os << ".NumDevices = ";
351*fd3907ccSCallum Fare   printPtr(os, *params->pNumDevices);
352*fd3907ccSCallum Fare   return os;
353*fd3907ccSCallum Fare }
354*fd3907ccSCallum Fare 
355*fd3907ccSCallum Fare inline std::ostream &operator<<(std::ostream &os,
356*fd3907ccSCallum Fare                                 const struct ol_get_device_params_t *params) {
357*fd3907ccSCallum Fare   os << ".Platform = ";
358*fd3907ccSCallum Fare   printPtr(os, *params->pPlatform);
359*fd3907ccSCallum Fare   os << ", ";
360*fd3907ccSCallum Fare   os << ".NumEntries = ";
361*fd3907ccSCallum Fare   os << *params->pNumEntries;
362*fd3907ccSCallum Fare   os << ", ";
363*fd3907ccSCallum Fare   os << ".Devices = ";
364*fd3907ccSCallum Fare   os << "{";
365*fd3907ccSCallum Fare   for (size_t i = 0; i < *params->pNumEntries; i++) {
366*fd3907ccSCallum Fare     if (i > 0) {
367*fd3907ccSCallum Fare       os << ", ";
368*fd3907ccSCallum Fare     }
369*fd3907ccSCallum Fare     printPtr(os, (*params->pDevices)[i]);
370*fd3907ccSCallum Fare   }
371*fd3907ccSCallum Fare   os << "}";
372*fd3907ccSCallum Fare   return os;
373*fd3907ccSCallum Fare }
374*fd3907ccSCallum Fare 
375*fd3907ccSCallum Fare inline std::ostream &
376*fd3907ccSCallum Fare operator<<(std::ostream &os, const struct ol_get_device_info_params_t *params) {
377*fd3907ccSCallum Fare   os << ".Device = ";
378*fd3907ccSCallum Fare   printPtr(os, *params->pDevice);
379*fd3907ccSCallum Fare   os << ", ";
380*fd3907ccSCallum Fare   os << ".PropName = ";
381*fd3907ccSCallum Fare   os << *params->pPropName;
382*fd3907ccSCallum Fare   os << ", ";
383*fd3907ccSCallum Fare   os << ".PropSize = ";
384*fd3907ccSCallum Fare   os << *params->pPropSize;
385*fd3907ccSCallum Fare   os << ", ";
386*fd3907ccSCallum Fare   os << ".PropValue = ";
387*fd3907ccSCallum Fare   printTagged(os, *params->pPropValue, *params->pPropName, *params->pPropSize);
388*fd3907ccSCallum Fare   return os;
389*fd3907ccSCallum Fare }
390*fd3907ccSCallum Fare 
391*fd3907ccSCallum Fare inline std::ostream &
392*fd3907ccSCallum Fare operator<<(std::ostream &os,
393*fd3907ccSCallum Fare            const struct ol_get_device_info_size_params_t *params) {
394*fd3907ccSCallum Fare   os << ".Device = ";
395*fd3907ccSCallum Fare   printPtr(os, *params->pDevice);
396*fd3907ccSCallum Fare   os << ", ";
397*fd3907ccSCallum Fare   os << ".PropName = ";
398*fd3907ccSCallum Fare   os << *params->pPropName;
399*fd3907ccSCallum Fare   os << ", ";
400*fd3907ccSCallum Fare   os << ".PropSizeRet = ";
401*fd3907ccSCallum Fare   printPtr(os, *params->pPropSizeRet);
402*fd3907ccSCallum Fare   return os;
403*fd3907ccSCallum Fare }
404*fd3907ccSCallum Fare 
405*fd3907ccSCallum Fare ///////////////////////////////////////////////////////////////////////////////
406*fd3907ccSCallum Fare // @brief Print pointer value
407*fd3907ccSCallum Fare template <typename T>
408*fd3907ccSCallum Fare inline ol_result_t printPtr(std::ostream &os, const T *ptr) {
409*fd3907ccSCallum Fare   if (ptr == nullptr) {
410*fd3907ccSCallum Fare     os << "nullptr";
411*fd3907ccSCallum Fare   } else if constexpr (std::is_pointer_v<T>) {
412*fd3907ccSCallum Fare     os << (const void *)(ptr) << " (";
413*fd3907ccSCallum Fare     printPtr(os, *ptr);
414*fd3907ccSCallum Fare     os << ")";
415*fd3907ccSCallum Fare   } else if constexpr (std::is_void_v<T> || is_handle_v<T *>) {
416*fd3907ccSCallum Fare     os << (const void *)ptr;
417*fd3907ccSCallum Fare   } else if constexpr (std::is_same_v<std::remove_cv_t<T>, char>) {
418*fd3907ccSCallum Fare     os << (const void *)(ptr) << " (";
419*fd3907ccSCallum Fare     os << ptr;
420*fd3907ccSCallum Fare     os << ")";
421*fd3907ccSCallum Fare   } else {
422*fd3907ccSCallum Fare     os << (const void *)(ptr) << " (";
423*fd3907ccSCallum Fare     os << *ptr;
424*fd3907ccSCallum Fare     os << ")";
425*fd3907ccSCallum Fare   }
426*fd3907ccSCallum Fare 
427*fd3907ccSCallum Fare   return OL_SUCCESS;
428*fd3907ccSCallum Fare }
429