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