Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qapple_utils_p.h
Go to the documentation of this file.
1
// Copyright (C) 2026 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
//
5
// W A R N I N G
6
// -------------
7
//
8
// This file is not part of the Qt API. It exists purely as an
9
// implementation detail. This header file may change from version to
10
// version without notice, or even be removed.
11
//
12
// We mean it.
13
//
14
15
#
ifndef
QAPPLE_UTILS_P_H
16
#
define
QAPPLE_UTILS_P_H
17
18
#
include
<
QtCore
/
qdebug
.
h
>
19
#
include
<
QtCore
/
qendian
.
h
>
20
#
include
<
QtCore
/
qglobal
.
h
>
21
#
include
<
QtCore
/
private
/
qcore_mac_p
.
h
>
22
23
#
include
<
QtMultimedia
/
private
/
qiteratorfacade_p
.
h
>
24
25
#
ifdef
Q_OS_MACOS
26
#
include
<
CoreAudioTypes
/
CoreAudioTypes
.
h
>
27
#
endif
28
29
#
include
<
CoreFoundation
/
CFArray
.
h
>
30
31
QT_BEGIN_NAMESPACE
32
33
namespace
QtMultimediaPrivate
{
34
35
struct
QOSStatus
36
{
37
OSStatus
status
;
38
explicit
QOSStatus
(OSStatus s) :
status
(
s
) {}
39
40
friend
QDebug
operator
<<(QDebug dbg,
const
QOSStatus
&qos)
41
{
42
QDebugStateSaver saver(dbg);
43
dbg.noquote();
44
45
if
(qos.status == noErr) {
46
dbg <<
"noErr"
;
47
return
dbg;
48
}
49
50
std::array<
char
, 4> buf;
51
qToBigEndian(qos.status, buf.data());
52
53
bool
isPrintable = std::all_of(buf.begin(), buf.end(), [](
unsigned
char
c) {
54
return
std::isprint(c);
55
});
56
57
if
(isPrintable)
58
return
dbg << QLatin1String(buf.data(), buf.size());
59
else
60
return
dbg << qos.status;
61
}
62
};
63
64
template
<
typename
T>
65
class
CFArrayIterator
66
:
public
IteratorFacade
<
CFArrayIterator
<
T
>,
T
,
std
::
random_access_iterator_tag
,
T
>
67
{
68
public
:
69
static_assert
(
std
::
is_pointer_v
<
T
>,
"CFArrayIterator must be instantiated with a pointer type"
);
70
71
using
difference_type
=
std
::
ptrdiff_t
;
72
73
CFArrayIterator
() =
default
;
74
CFArrayIterator
(QCFType<CFArrayRef> array, CFIndex index)
75
: m_array(std::move(array)), m_index(index)
76
{
77
}
78
79
T
dereference
()
const
{
return
static_cast
<T>(CFArrayGetValueAtIndex(m_array, m_index)); }
80
81
void
advance_by
(difference_type n) { m_index += n; }
82
83
difference_type
distance_to
(
const
CFArrayIterator
&other)
const
84
{
85
return
other.m_index - m_index;
86
}
87
88
private
:
89
QCFType<CFArrayRef> m_array{};
90
CFIndex
m_index
{};
91
};
92
93
template
<
typename
T =
CFTypeRef
>
94
class
CFArrayRange
95
{
96
public
:
97
static_assert
(
std
::
is_pointer_v
<
T
>,
"CFArrayRange must be instantiated with a pointer type"
);
98
99
using
iterator
=
CFArrayIterator
<T>;
100
101
CFArrayRange
() =
default
;
102
explicit
CFArrayRange
(QCFType<CFArrayRef> array) :
m_array
(
std
::
move
(
array
)) {}
103
104
iterator
begin
()
const
{
return
iterator
(
m_array
, 0); }
105
iterator
end
()
const
{
return
iterator
(
m_array
,
m_array
?
CFArrayGetCount
(
m_array
) : 0); }
106
107
bool
empty
()
const
{
return
m_array
==
nullptr
||
CFArrayGetCount
(
m_array
) == 0; }
108
109
std
::
size_t
size
()
const
110
{
111
return
m_array
?
static_cast
<
std
::
size_t
>(
CFArrayGetCount
(
m_array
)) : 0;
112
}
113
114
private
:
115
QCFType
<
CFArrayRef
>
m_array
;
116
};
117
118
}
// namespace QtMultimediaPrivate
119
120
QT_END_NAMESPACE
121
122
#
endif
// QAPPLE_UTILS_P_H
QtMultimediaPrivate::CFArrayIterator
Definition
qapple_utils_p.h:67
QtMultimediaPrivate::CFArrayIterator::dereference
T dereference() const
Definition
qapple_utils_p.h:79
QtMultimediaPrivate::CFArrayIterator::advance_by
void advance_by(difference_type n)
Definition
qapple_utils_p.h:81
QtMultimediaPrivate::CFArrayIterator::CFArrayIterator
CFArrayIterator()=default
QtMultimediaPrivate::CFArrayIterator::distance_to
difference_type distance_to(const CFArrayIterator &other) const
Definition
qapple_utils_p.h:83
QtMultimediaPrivate::CFArrayRange
Definition
qapple_utils_p.h:95
QtMultimediaPrivate::CFArrayRange::iterator
CFArrayIterator< T > iterator
Definition
qapple_utils_p.h:99
QtMultimediaPrivate::CFArrayRange::CFArrayRange
CFArrayRange()=default
QtMultimediaPrivate::impl
Definition
qaudiosystem_p.h:257
QtMultimediaPrivate::QOSStatus
Definition
qapple_utils_p.h:36
QtMultimediaPrivate::QOSStatus::status
OSStatus status
Definition
qapple_utils_p.h:37
QtMultimediaPrivate::QOSStatus::QOSStatus
QOSStatus(OSStatus s)
Definition
qapple_utils_p.h:38
QtMultimediaPrivate::QOSStatus::operator<<
friend QDebug operator<<(QDebug dbg, const QOSStatus &qos)
Definition
qapple_utils_p.h:40
qtmultimedia
src
multimedia
darwin
qapple_utils_p.h
Generated on
for Qt by
1.18.0