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
qpropertyprivate.h
Go to the documentation of this file.
1
// Copyright (C) 2020 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
// Qt-Security score:significant reason:default
4
5
#
ifndef
QPROPERTYPRIVATE_H
6
#
define
QPROPERTYPRIVATE_H
7
8
//
9
// W A R N I N G
10
// -------------
11
//
12
// This file is not part of the Qt API. It exists purely as an
13
// implementation detail. This header file may change from version to
14
// version without notice, or even be removed.
15
//
16
// We mean it.
17
//
18
19
#
include
<
QtCore
/
qglobal
.
h
>
20
#
include
<
QtCore
/
qtaggedpointer
.
h
>
21
#
include
<
QtCore
/
qmetatype
.
h
>
22
#
include
<
QtCore
/
qcontainerfwd
.
h
>
23
#
include
<
QtCore
/
qttypetraits
.
h
>
24
25
#
include
<
functional
>
26
27
QT_BEGIN_NAMESPACE
28
29
class
QBindingStorage;
30
31
template
<
typename
Class,
typename
T,
auto
Offset,
auto
Setter,
auto
Signal,
auto
Getter>
32
class
QObjectCompatProperty
;
33
34
class
QPropertyBindingPrivatePtr
;
35
using
PendingBindingObserverList = QVarLengthArray<QPropertyBindingPrivatePtr>;
36
37
namespace
QtPrivate
{
38
// QPropertyBindingPrivatePtr operates on a RefCountingMixin solely so that we can inline
39
// the constructor and copy constructor
40
struct
RefCounted
{
41
42
int
refCount
()
const
{
return
ref; }
43
void
addRef
() { ++ref; }
44
bool
deref
() {
return
--ref != 0; }
45
46
private
:
47
int
ref = 0;
48
};
49
}
50
51
class
QQmlPropertyBinding;
52
class
QPropertyBindingPrivate;
53
class
QPropertyBindingPrivatePtr
54
{
55
public
:
56
using
T
=
QtPrivate
::
RefCounted
;
57
T
&
operator
*()
const
{
return
*d; }
58
T
*
operator
->()
noexcept
{
return
d; }
59
T
*
operator
->()
const
noexcept
{
return
d; }
60
explicit
operator
T
*() {
return
d; }
61
explicit
operator
const
T
*()
const
noexcept
{
return
d; }
62
T
*
data
()
const
noexcept
{
return
d; }
63
T
*
get
()
const
noexcept
{
return
d; }
64
const
T
*
constData
()
const
noexcept
{
return
d; }
65
T
*
take
()
noexcept
{
T
*x = d; d =
nullptr
;
return
x; }
66
67
QPropertyBindingPrivatePtr
()
noexcept
:
d
(
nullptr
) { }
68
~
QPropertyBindingPrivatePtr
()
69
{
70
if
(d && !d->deref())
71
destroyAndFreeMemory();
72
}
73
Q_CORE_EXPORT
void
destroyAndFreeMemory
();
74
75
explicit
QPropertyBindingPrivatePtr
(
T
*data)
noexcept
:
d
(
data
) {
if
(d) d->addRef(); }
76
QPropertyBindingPrivatePtr
(
const
QPropertyBindingPrivatePtr
&o)
noexcept
77
:
d
(
o
.
d
) {
if
(d) d->addRef(); }
78
79
void
reset
(
T
*ptr =
nullptr
)
noexcept
;
80
81
QPropertyBindingPrivatePtr
&
operator
=(
const
QPropertyBindingPrivatePtr
&o)
noexcept
82
{
83
reset
(
o.d
)
;
84
return
*
this
;
85
}
86
QPropertyBindingPrivatePtr
&
operator
=(
T
*o)
noexcept
87
{
88
reset
(
o
)
;
89
return
*
this
;
90
}
91
QPropertyBindingPrivatePtr
(
QPropertyBindingPrivatePtr
&&o)
noexcept
:
d
(
std
::
exchange
(
o
.
d
,
nullptr
)) {}
92
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP
(
QPropertyBindingPrivatePtr
)
93
94
operator
bool
()
const
noexcept
{
return
d
!=
nullptr
; }
95
bool
operator
!()
const
noexcept
{
return
d
==
nullptr
; }
96
97
void
swap
(
QPropertyBindingPrivatePtr
&
other
)
noexcept
98
{
qt_ptr_swap
(
d
,
other
.
d
); }
99
100
private
:
101
friend
bool
comparesEqual
(
const
QPropertyBindingPrivatePtr
&
lhs
,
102
const
QPropertyBindingPrivatePtr
&
rhs
)
noexcept
103
{
return
lhs
.
d
==
rhs
.
d
; }
104
Q_DECLARE_EQUALITY_COMPARABLE
(
QPropertyBindingPrivatePtr
)
105
friend
bool
comparesEqual
(
const
QPropertyBindingPrivatePtr
&
lhs
,
106
const
T
*
rhs
)
noexcept
107
{
return
lhs
.
d
==
rhs
; }
108
Q_DECLARE_EQUALITY_COMPARABLE
(
QPropertyBindingPrivatePtr
,
T
*)
109
friend
bool
comparesEqual
(
const
QPropertyBindingPrivatePtr
&
lhs
,
110
std
::
nullptr_t
)
noexcept
111
{
return
!
lhs
; }
112
Q_DECLARE_EQUALITY_COMPARABLE
(
QPropertyBindingPrivatePtr
,
std
::
nullptr_t
)
113
114
QtPrivate
::
RefCounted
*
d
;
115
};
116
117
class
QUntypedPropertyBinding;
118
class
QPropertyBindingPrivate;
119
struct
QPropertyBindingDataPointer
;
120
class
QPropertyObserver;
121
struct
QPropertyObserverPointer
;
122
123
class
QUntypedPropertyData
124
{
125
};
126
127
namespace
QtPrivate
{
128
template
<
typename
T
>
129
using
IsUntypedPropertyData
=
std
::
enable_if_t
<
std
::
is_base_of_v
<
QUntypedPropertyData
,
T
>,
bool
>;
130
}
131
132
template
<
typename
T>
133
class
QPropertyData
;
134
135
// Used for grouped property evaluations
136
namespace
QtPrivate
{
137
class
QPropertyBindingData;
138
}
139
struct
QPropertyDelayedNotifications
;
140
struct
QPropertyProxyBindingData
141
{
142
// acts as QPropertyBindingData::d_ptr
143
quintptr
d_ptr
;
144
/*
145
The two members below store the original binding data and property
146
data pointer of the property which gets proxied.
147
They are set in QPropertyDelayedNotifications::addProperty
148
*/
149
const
QtPrivate
::QPropertyBindingData *
originalBindingData
;
150
QUntypedPropertyData
*
propertyData
;
151
};
152
153
namespace
QtPrivate
{
154
struct
BindingEvaluationState
;
155
156
/* used in BindingFunctionVTable::createFor; on all other compilers, void would work, but on
157
MSVC this causes C2182 when compiling in C++20 mode. As we only need to provide some default
158
value which gets ignored, we introduce this dummy type.
159
*/
160
struct
MSVCWorkAround
{};
161
162
struct
BindingFunctionVTable
163
{
164
using
CallFn
=
bool
(*)(
QMetaType
,
QUntypedPropertyData
*,
void
*);
165
using
DtorFn
=
void
(*)(
void
*);
166
using
MoveCtrFn
=
void
(*)(
void
*,
void
*);
167
const
CallFn
call
;
168
const
DtorFn
destroy
;
169
const
MoveCtrFn
moveConstruct
;
170
const
qsizetype
size
;
171
172
template
<
typename
Callable,
typename
PropertyType=
MSVCWorkAround
>
173
static
constexpr
BindingFunctionVTable
createFor
()
174
{
175
static_assert
(
alignof
(Callable) <=
alignof
(std::max_align_t),
"Bindings do not support overaligned functors!"
);
176
return
{
177
/*call=*/
[](QMetaType metaType,
QUntypedPropertyData
*dataPtr,
void
*f){
178
if
constexpr
(!
std
::is_invocable_v<Callable>) {
179
// we got an untyped callable
180
static_assert
(std::is_invocable_r_v<
bool
, Callable, QMetaType, QUntypedPropertyData *> );
181
auto
untypedEvaluationFunction =
static_cast
<Callable *>(f);
182
return
std
::invoke(*untypedEvaluationFunction, metaType, dataPtr);
183
}
else
if
constexpr
(!
std
::is_same_v<PropertyType,
MSVCWorkAround
>) {
184
Q_UNUSED(metaType);
185
QPropertyData
<PropertyType> *propertyPtr =
static_cast
<
QPropertyData
<PropertyType> *>(dataPtr);
186
// That is allowed by POSIX even if Callable is a function pointer
187
auto
evaluationFunction =
static_cast
<Callable *>(f);
188
PropertyType newValue =
std
::invoke(*evaluationFunction);
189
if
constexpr
(QTypeTraits::has_operator_equal_v<PropertyType>) {
190
if
(newValue == propertyPtr->valueBypassingBindings())
191
return
false
;
192
}
193
propertyPtr->setValueBypassingBindings(
std
::move(newValue));
194
return
true
;
195
}
else
{
196
// Our code will never instantiate this
197
Q_UNREACHABLE_RETURN(
false
);
198
}
199
},
200
/*destroy*/
[](
void
*f){
static_cast
<Callable *>(f)->~Callable(); },
201
/*moveConstruct*/
[](
void
*addr,
void
*other){
202
new
(addr) Callable(
std
::move(*
static_cast
<Callable *>(other)));
203
},
204
/*size*/
sizeof
(Callable)
205
};
206
}
207
};
208
209
template
<
typename
Callable
,
typename
PropertyType
=
MSVCWorkAround
>
210
inline
constexpr
BindingFunctionVTable
bindingFunctionVTable
=
BindingFunctionVTable
::
createFor
<
Callable
,
PropertyType
>();
211
212
213
// writes binding result into dataPtr
214
struct
QPropertyBindingFunction
{
215
const
QtPrivate
::
BindingFunctionVTable
*
vtable
;
216
void
*
functor
;
217
};
218
219
using
QPropertyObserverCallback
=
void
(*)(
QUntypedPropertyData
*);
220
using
QPropertyBindingWrapper
=
bool
(*)(
QMetaType
,
QUntypedPropertyData
*dataPtr,
QPropertyBindingFunction
);
221
222
/*!
223
\internal
224
A property normally consists of the actual property value and metadata for the binding system.
225
QPropertyBindingData is the latter part. It stores a pointer to either
226
- a (potentially empty) linked list of notifiers, in case there is no binding set,
227
- an actual QUntypedPropertyBinding when the property has a binding,
228
- or a pointer to QPropertyProxyBindingData when notifications occur inside a grouped update.
229
230
\sa QPropertyDelayedNotifications, beginPropertyUpdateGroup
231
*/
232
class
Q_CORE_EXPORT
QPropertyBindingData
233
{
234
// Mutable because the address of the observer of the currently evaluating binding is stored here, for
235
// notification later when the value changes.
236
mutable
quintptr
d_ptr
= 0;
237
friend
struct
QT_PREPEND_NAMESPACE
(
QPropertyBindingDataPointer
);
238
friend
class
QT_PREPEND_NAMESPACE
(
QQmlPropertyBinding
);
239
friend
struct
QT_PREPEND_NAMESPACE
(
QPropertyDelayedNotifications
);
240
241
template
<
typename
Class
,
typename
T
,
auto
Offset
,
auto
Setter
,
auto
Signal
,
auto
Getter
>
242
friend
class
QT_PREPEND_NAMESPACE
(
QObjectCompatProperty
);
243
244
Q_DISABLE_COPY
(
QPropertyBindingData
)
245
public
:
246
QPropertyBindingData
() =
default
;
247
QPropertyBindingData
(
QPropertyBindingData
&&
other
);
248
QPropertyBindingData
&
operator
=(
QPropertyBindingData
&&
other
) =
delete
;
249
~
QPropertyBindingData
();
250
251
// Is d_ptr pointing to a binding (1) or list of notifiers (0)?
252
static
inline
constexpr
quintptr
BindingBit
= 0x1;
253
// Is d_ptr pointing to QPropertyProxyBindingData (1) or to an actual binding/list of notifiers?
254
static
inline
constexpr
quintptr
DelayedNotificationBit
= 0x2;
255
256
bool
hasBinding
()
const
{
return
d_ptr
&
BindingBit
; }
257
bool
isNotificationDelayed
()
const
{
return
d_ptr
&
DelayedNotificationBit
; }
258
259
QUntypedPropertyBinding
setBinding
(
const
QUntypedPropertyBinding
&
newBinding
,
260
QUntypedPropertyData
*
propertyDataPtr
,
261
QPropertyObserverCallback
staticObserverCallback
=
nullptr
,
262
QPropertyBindingWrapper
bindingWrapper
=
nullptr
);
263
264
QPropertyBindingPrivate
*
binding
()
const
265
{
266
quintptr
dd
=
d
();
267
if
(
dd
&
BindingBit
)
268
return
reinterpret_cast
<
QPropertyBindingPrivate
*>(
dd
-
BindingBit
);
269
return
nullptr
;
270
271
}
272
273
void
evaluateIfDirty
(
const
QUntypedPropertyData
*)
const
;
// ### Kept for BC reasons, unused
274
275
void
removeBinding
()
276
{
277
if
(
hasBinding
())
278
removeBinding_helper
();
279
}
280
281
void
registerWithCurrentlyEvaluatingBinding
(
QtPrivate
::
BindingEvaluationState
*
currentBinding
)
const
282
{
283
if
(!
currentBinding
)
284
return
;
285
registerWithCurrentlyEvaluatingBinding_helper
(
currentBinding
);
286
}
287
void
registerWithCurrentlyEvaluatingBinding
()
const
;
288
void
notifyObservers
(
QUntypedPropertyData
*
propertyDataPtr
)
const
;
289
void
notifyObservers
(
QUntypedPropertyData
*
propertyDataPtr
,
QBindingStorage
*
storage
)
const
;
290
private
:
291
/*!
292
\internal
293
Returns a reference to d_ptr, except when d_ptr points to a proxy.
294
In that case, a reference to proxy->d_ptr is returned instead.
295
296
To properly support proxying, direct access to d_ptr only occurs when
297
- a function actually deals with proxying (e.g.
298
QPropertyDelayedNotifications::addProperty),
299
- only the tag value is accessed (e.g. hasBinding) or
300
- inside a constructor.
301
*/
302
quintptr
&
d_ref
()
const
303
{
304
quintptr
&
d
=
d_ptr
;
305
if
(
isNotificationDelayed
())
306
return
proxyData
()->
d_ptr
;
307
return
d
;
308
}
309
quintptr
d
()
const
{
return
d_ref
(); }
310
QPropertyProxyBindingData
*
proxyData
()
const
311
{
312
Q_ASSERT
(
isNotificationDelayed
());
313
return
reinterpret_cast
<
QPropertyProxyBindingData
*>(
d_ptr
& ~(
BindingBit
|
DelayedNotificationBit
));
314
}
315
void
registerWithCurrentlyEvaluatingBinding_helper
(
BindingEvaluationState
*
currentBinding
)
const
;
316
void
removeBinding_helper
();
317
318
enum
NotificationResult
{
Delayed
,
Evaluated
};
319
NotificationResult
notifyObserver_helper
(
320
QUntypedPropertyData
*
propertyDataPtr
,
QBindingStorage
*
storage
,
321
QPropertyObserverPointer
observer
,
322
PendingBindingObserverList
&
bindingObservers
)
const
;
323
};
324
325
template
<
typename
T,
typename
Tag>
326
class
QTagPreservingPointerToPointer
327
{
328
public
:
329
constexpr
QTagPreservingPointerToPointer
() =
default
;
330
331
QTagPreservingPointerToPointer
(T **ptr)
332
:
d
(
reinterpret_cast
<
quintptr
*>(
ptr
))
333
{}
334
335
QTagPreservingPointerToPointer
<T, Tag> &
operator
=(T **ptr)
336
{
337
d =
reinterpret_cast
<quintptr *>(ptr);
338
return
*
this
;
339
}
340
341
QTagPreservingPointerToPointer
<T, Tag> &
operator
=(QTaggedPointer<T, Tag> *ptr)
342
{
343
d =
reinterpret_cast
<quintptr *>(ptr);
344
return
*
this
;
345
}
346
347
void
clear
()
348
{
349
d =
nullptr
;
350
}
351
352
void
setPointer
(T *ptr)
353
{
354
*d =
reinterpret_cast
<quintptr>(ptr) | (*d & QTaggedPointer<T, Tag>::tagMask());
355
}
356
357
T *
get
()
const
358
{
359
return
reinterpret_cast
<T*>(*d & QTaggedPointer<T, Tag>::pointerMask());
360
}
361
362
explicit
operator
bool
()
const
363
{
364
return
d !=
nullptr
;
365
}
366
367
private
:
368
quintptr *d =
nullptr
;
369
};
370
371
namespace
detail
{
372
template
<
typename
F>
373
struct
ExtractClassFromFunctionPointer
;
374
375
template
<
typename
T,
typename
C>
376
struct
ExtractClassFromFunctionPointer
<T
C
::*> {
using
Class
= C; };
377
378
constexpr
size_t
getOffset
(size_t o)
379
{
380
return
o;
381
}
382
constexpr
size_t
getOffset
(size_t (*offsetFn)())
383
{
384
return
offsetFn
();
385
}
386
}
387
388
}
// namespace QtPrivate
389
390
QT_END_NAMESPACE
391
392
#
endif
// QPROPERTYPRIVATE_H
QObjectCompatProperty
\macro Q_OBJECT_BINDABLE_PROPERTY(containingClass, type, name, signal)
Definition
qproperty_p.h:533
QPropertyBindingPrivatePtr
Definition
qpropertyprivate.h:54
QPropertyBindingPrivatePtr::operator const T *
operator const T *() const noexcept
Definition
qpropertyprivate.h:61
QPropertyBindingPrivatePtr::operator=
QPropertyBindingPrivatePtr & operator=(const QPropertyBindingPrivatePtr &o) noexcept
Definition
qpropertyprivate.h:81
QPropertyBindingPrivatePtr::operator=
QPropertyBindingPrivatePtr & operator=(T *o) noexcept
Definition
qpropertyprivate.h:86
QPropertyBindingPrivatePtr::T
QtPrivate::RefCounted T
Definition
qpropertyprivate.h:56
QPropertyBindingPrivatePtr::operator->
T * operator->() const noexcept
Definition
qpropertyprivate.h:59
QPropertyBindingPrivatePtr::get
T * get() const noexcept
Definition
qpropertyprivate.h:63
QPropertyBindingPrivatePtr::~QPropertyBindingPrivatePtr
~QPropertyBindingPrivatePtr()
Definition
qpropertyprivate.h:68
QPropertyBindingPrivatePtr::destroyAndFreeMemory
Q_CORE_EXPORT void destroyAndFreeMemory()
Definition
qproperty.cpp:24
QPropertyBindingPrivatePtr::QPropertyBindingPrivatePtr
QPropertyBindingPrivatePtr(QPropertyBindingPrivatePtr &&o) noexcept
Definition
qpropertyprivate.h:91
QPropertyBindingPrivatePtr::take
T * take() noexcept
Definition
qpropertyprivate.h:65
QPropertyBindingPrivatePtr::QPropertyBindingPrivatePtr
QPropertyBindingPrivatePtr(const QPropertyBindingPrivatePtr &o) noexcept
Definition
qpropertyprivate.h:76
QPropertyBindingPrivatePtr::operator*
T & operator*() const
Definition
qpropertyprivate.h:57
QPropertyBindingPrivatePtr::data
T * data() const noexcept
Definition
qpropertyprivate.h:62
QPropertyBindingPrivatePtr::reset
void reset(T *ptr=nullptr) noexcept
Definition
qproperty.cpp:29
QPropertyBindingPrivatePtr::constData
const T * constData() const noexcept
Definition
qpropertyprivate.h:64
QPropertyBindingPrivatePtr::operator->
T * operator->() noexcept
Definition
qpropertyprivate.h:58
QPropertyBindingPrivatePtr::QPropertyBindingPrivatePtr
QPropertyBindingPrivatePtr(T *data) noexcept
Definition
qpropertyprivate.h:75
QPropertyBindingPrivatePtr::QPropertyBindingPrivatePtr
QPropertyBindingPrivatePtr() noexcept
Definition
qpropertyprivate.h:67
QPropertyBindingPrivatePtr::operator T*
operator T*()
Definition
qpropertyprivate.h:60
QPropertyData
\inmodule QtCore
Definition
qproperty.h:71
QUntypedPropertyData
Definition
qpropertyprivate.h:124
QtPrivate::QPropertyBindingData
Definition
qpropertyprivate.h:233
QtPrivate::QTagPreservingPointerToPointer
Definition
qpropertyprivate.h:327
QtPrivate::QTagPreservingPointerToPointer::operator=
QTagPreservingPointerToPointer< T, Tag > & operator=(T **ptr)
Definition
qpropertyprivate.h:335
QtPrivate::QTagPreservingPointerToPointer::get
T * get() const
Definition
qpropertyprivate.h:357
QtPrivate::QTagPreservingPointerToPointer::QTagPreservingPointerToPointer
QTagPreservingPointerToPointer(T **ptr)
Definition
qpropertyprivate.h:331
QtPrivate::QTagPreservingPointerToPointer::setPointer
void setPointer(T *ptr)
Definition
qpropertyprivate.h:352
QtPrivate::QTagPreservingPointerToPointer::operator bool
operator bool() const
Definition
qpropertyprivate.h:362
QtPrivate::QTagPreservingPointerToPointer::clear
void clear()
Definition
qpropertyprivate.h:347
QtPrivate::QTagPreservingPointerToPointer::operator=
QTagPreservingPointerToPointer< T, Tag > & operator=(QTaggedPointer< T, Tag > *ptr)
Definition
qpropertyprivate.h:341
QtPrivate::QTagPreservingPointerToPointer::QTagPreservingPointerToPointer
constexpr QTagPreservingPointerToPointer()=default
QtPrivate::detail
Definition
qmetatype.h:339
QtPrivate::detail::getOffset
constexpr size_t getOffset(size_t o)
Definition
qpropertyprivate.h:378
QtPrivate::detail::getOffset
constexpr size_t getOffset(size_t(*offsetFn)())
Definition
qpropertyprivate.h:382
QtPrivate
Definition
qalloc.h:29
QtPrivate::bindingFunctionVTable
constexpr BindingFunctionVTable bindingFunctionVTable
Definition
qpropertyprivate.h:210
QtPrivate::QPropertyObserverCallback
void(*)(QUntypedPropertyData *) QPropertyObserverCallback
Definition
qpropertyprivate.h:219
QtPrivate::QPropertyBindingWrapper
bool(*)(QMetaType, QUntypedPropertyData *dataPtr, QPropertyBindingFunction) QPropertyBindingWrapper
Definition
qpropertyprivate.h:220
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
QPropertyBindingDataPointer
Definition
qproperty_p.h:74
QPropertyDelayedNotifications
Definition
qproperty.cpp:71
QPropertyObserverPointer
Definition
qproperty_p.h:128
QPropertyProxyBindingData
Definition
qpropertyprivate.h:141
QPropertyProxyBindingData::d_ptr
quintptr d_ptr
Definition
qpropertyprivate.h:143
QPropertyProxyBindingData::propertyData
QUntypedPropertyData * propertyData
Definition
qpropertyprivate.h:150
QPropertyProxyBindingData::originalBindingData
const QtPrivate::QPropertyBindingData * originalBindingData
Definition
qpropertyprivate.h:149
QtPrivate::BindingEvaluationState
Definition
qproperty_p.h:205
QtPrivate::BindingFunctionVTable
Definition
qpropertyprivate.h:163
QtPrivate::BindingFunctionVTable::call
const CallFn call
Definition
qpropertyprivate.h:167
QtPrivate::BindingFunctionVTable::destroy
const DtorFn destroy
Definition
qpropertyprivate.h:168
QtPrivate::BindingFunctionVTable::CallFn
bool(*)(QMetaType, QUntypedPropertyData *, void *) CallFn
Definition
qpropertyprivate.h:164
QtPrivate::BindingFunctionVTable::moveConstruct
const MoveCtrFn moveConstruct
Definition
qpropertyprivate.h:169
QtPrivate::BindingFunctionVTable::size
const qsizetype size
Definition
qpropertyprivate.h:170
QtPrivate::BindingFunctionVTable::DtorFn
void(*)(void *) DtorFn
Definition
qpropertyprivate.h:165
QtPrivate::BindingFunctionVTable::createFor
static constexpr BindingFunctionVTable createFor()
Definition
qpropertyprivate.h:173
QtPrivate::BindingFunctionVTable::MoveCtrFn
void(*)(void *, void *) MoveCtrFn
Definition
qpropertyprivate.h:166
QtPrivate::MSVCWorkAround
Definition
qpropertyprivate.h:160
QtPrivate::QPropertyBindingFunction
Definition
qpropertyprivate.h:214
QtPrivate::QPropertyBindingFunction::functor
void * functor
Definition
qpropertyprivate.h:216
QtPrivate::QPropertyBindingFunction::vtable
const QtPrivate::BindingFunctionVTable * vtable
Definition
qpropertyprivate.h:215
QtPrivate::RefCounted
Definition
qpropertyprivate.h:40
QtPrivate::RefCounted::refCount
int refCount() const
Definition
qpropertyprivate.h:42
QtPrivate::RefCounted::addRef
void addRef()
Definition
qpropertyprivate.h:43
QtPrivate::RefCounted::deref
bool deref()
Definition
qpropertyprivate.h:44
QtPrivate::detail::ExtractClassFromFunctionPointer< T C::* >
Definition
qpropertyprivate.h:376
QtPrivate::detail::ExtractClassFromFunctionPointer< T C::* >::Class
C Class
Definition
qpropertyprivate.h:376
QtPrivate::detail::ExtractClassFromFunctionPointer
Definition
qpropertyprivate.h:373
qtbase
src
corelib
kernel
qpropertyprivate.h
Generated on
for Qt by
1.18.0