3#include <CoreFoundation/CoreFoundation.h>
28 inline std::string OSStatusToString(OSStatus error) {
29 uint32_t be = CFSwapInt32HostToBig(
static_cast<uint32_t
>(error));
30 const unsigned char c1 =
static_cast<unsigned char>((be >> 24) & 0xFF);
31 const unsigned char c2 =
static_cast<unsigned char>((be >> 16) & 0xFF);
32 const unsigned char c3 =
static_cast<unsigned char>((be >> 8) & 0xFF);
33 const unsigned char c4 =
static_cast<unsigned char>((be >> 0) & 0xFF);
35 auto is_printable = [](
unsigned char c) ->
bool {
36 return c >= 32 && c <= 126;
39 if (is_printable(c1) && is_printable(c2) && is_printable(c3) && is_printable(c4)) {
42 buf[1] =
static_cast<char>(c1);
43 buf[2] =
static_cast<char>(c2);
44 buf[3] =
static_cast<char>(c3);
45 buf[4] =
static_cast<char>(c4);
48 return std::string(buf);
51 return std::to_string(
static_cast<int32_t
>(error));
59 inline std::ostream &operator<<(std::ostream &os,
StatusView v) {
60 return os << OSStatusToString(v.e);
64 inline detail::StatusView Status(OSStatus e) {
65 return detail::StatusView {e};
Definition coreaudio_helpers.h:55