Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qttypetraits.h
Go to the documentation of this file.
1// Copyright (C) 2022 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#ifndef QTTYPETRAITS_H
5#define QTTYPETRAITS_H
6
7#include <QtCore/qtconfigmacros.h>
8#include <QtCore/qtdeprecationmarkers.h>
9
10#if defined(__cpp_lib_three_way_comparison) && defined(__cpp_lib_concepts)
11#include <compare>
12#include <concepts>
13#endif
14#include <optional>
15#include <tuple>
16#include <type_traits>
17#include <utility>
18#include <variant>
19
20#if 0
21#pragma qt_class(QtTypeTraits)
22#pragma qt_sync_stop_processing
23#endif
24
25QT_BEGIN_NAMESPACE
26
27// like std::to_underlying
28template <typename Enum>
29constexpr std::underlying_type_t<Enum> qToUnderlying(Enum e) noexcept
30{
31 return static_cast<std::underlying_type_t<Enum>>(e);
32}
33
34#ifndef QT_NO_QASCONST
35#if QT_DEPRECATED_SINCE(6, 6)
36
37// this adds const to non-const objects (like std::as_const)
38template <typename T>
39QT_DEPRECATED_VERSION_X_6_6("Use std::as_const() instead.")
40constexpr typename std::add_const<T>::type &qAsConst(T &t) noexcept { return t; }
41// prevent rvalue arguments:
42template <typename T>
43void qAsConst(const T &&) = delete;
44
45#endif // QT_DEPRECATED_SINCE(6, 6)
46#endif // QT_NO_QASCONST
47
48#ifndef QT_NO_QEXCHANGE
49
50// like std::exchange
51template <typename T, typename U = T>
52constexpr T qExchange(T &t, U &&newValue)
55{
56 T old = std::move(t);
57 t = std::forward<U>(newValue);
58 return old;
59}
60
61#endif // QT_NO_QEXCHANGE
62
63namespace QtPrivate {
64// helper to be used to trigger a "dependent static_assert(false)"
65// (for instance, in a final `else` branch of a `if constexpr`.)
66template <typename T> struct type_dependent_false : std::false_type {};
67template <auto T> struct value_dependent_false : std::false_type {};
68
69// helper detects standard integer types and some of extended integer types,
70// see https://eel.is/c++draft/basic.fundamental#1
71template <typename T> struct is_standard_or_extended_integer_type_helper : std::is_integral<T> {};
72// these are integral, but not considered standard or extended integer types
73// https://eel.is/c++draft/basic.fundamental#11:
74#define QSEIT_EXCLUDE(X)
75 template <> struct is_standard_or_extended_integer_type_helper<X> : std::false_type {}
78#ifdef __cpp_char8_t
80#endif
81QSEIT_EXCLUDE(char16_t);
82QSEIT_EXCLUDE(char32_t);
84#undef QSEIT_EXCLUDE
85template <typename T>
87template <typename T>
89} // QtPrivate
90
91namespace QTypeTraits {
92
93namespace detail {
94template<typename T, typename U,
98 !std::is_same_v<T, bool> && !std::is_same_v<U, bool> &&
99 !std::is_same_v<T, char> && !std::is_same_v<U, char>>>
101{
102 using type = decltype(T() + U());
103};
104}
105
106template <typename T, typename U>
107using Promoted = typename detail::Promoted<T, U>::type;
108
109/*
110 The templates below aim to find out whether one can safely instantiate an operator==() or
111 operator<() for a type.
112
113 This is tricky for containers, as most containers have unconstrained comparison operators, even though they
114 rely on the corresponding operators for its content.
115 This is especially true for all of the STL template classes that have a comparison operator defined, and
116 leads to the situation, that the compiler would try to instantiate the operator, and fail if any
117 of its template arguments does not have the operator implemented.
118
119 The code tries to cover the relevant cases for Qt and the STL, by checking (recusrsively) the value_type
120 of a container (if it exists), and checking the template arguments of pair, tuple and variant.
121*/
122namespace detail {
123
124// find out whether T is a conteiner
125// this is required to check the value type of containers for the existence of the comparison operator
126template <typename, typename = void>
128template <typename T>
130 typename T::value_type,
131 std::is_convertible<decltype(std::declval<T>().begin() != std::declval<T>().end()), bool>
132>> : std::true_type {};
133
134
135// Checks the existence of the comparison operator for the class itself
136QT_WARNING_PUSH
137QT_WARNING_DISABLE_FLOAT_COMPARE
138template <typename, typename = void>
140template <typename T>
141struct has_operator_equal<T, std::void_t<decltype(bool(std::declval<const T&>() == std::declval<const T&>()))>>
142 : std::true_type {};
144
145// Two forward declarations
146template<typename T, bool = is_container<T>::value>
148template<typename T>
150
151// the entry point for the public method
152template<typename T>
154
155// if T isn't a container check if it's a tuple like object
156template<typename T, bool>
157struct expand_operator_equal_container : expand_operator_equal_tuple<T> {};
158// if T::value_type exists, check first T::value_type, then T itself
159template<typename T>
163 std::is_same<T, typename T::value_type>, // avoid endless recursion
166
167// recursively check the template arguments of a tuple like object
168template<typename ...T>
170
171template<typename T>
173template<typename T>
175template<typename T1, typename T2>
177template<typename ...T>
179template<typename ...T>
181
182// the same for operator<(), see above for explanations
183template <typename, typename = void>
185template <typename T>
186struct has_operator_less_than<T, std::void_t<decltype(bool(std::declval<const T&>() < std::declval<const T&>()))>>
187 : std::true_type{};
188
189template<typename T, bool = is_container<T>::value>
191template<typename T>
193
194template<typename T>
196
197template<typename T, bool>
199template<typename T>
207
208template<typename ...T>
210
211template<typename T>
213template<typename T>
215template<typename T1, typename T2>
217template<typename ...T>
219template<typename ...T>
221
222} // namespace detail
223
224template<typename T, typename = void>
226
227template<typename T>
228struct is_dereferenceable<T, std::void_t<decltype(std::declval<T>().operator->())> >
229 : std::true_type {};
230
231template <typename T>
233
234template<typename T>
236template<typename T>
238
239template <typename Container, typename T>
240using has_operator_equal_container = std::disjunction<std::is_base_of<Container, T>, QTypeTraits::has_operator_equal<T>>;
241
242template<typename T>
244template<typename T>
246
247template <typename Container, typename T>
248using has_operator_less_than_container = std::disjunction<std::is_base_of<Container, T>, QTypeTraits::has_operator_less_than<T>>;
249
250template <typename ...T>
252
253template <typename Container, typename ...T>
255
256template <typename ...T>
258
259template <typename Container, typename ...T>
261
262template<typename T>
264template <typename T, typename U>
266#if defined(__cpp_lib_three_way_comparison) && defined(__cpp_lib_concepts)
267template<std::three_way_comparable T>
269template <typename T, typename U>
272#endif // __cpp_lib_three_way_comparison && __cpp_lib_concepts
273template<typename T>
275template<typename T, typename U>
277
278// Intentionally no 'has_operator_compare_three_way_container', because the
279// compilers fail to determine the proper return type in this case
280// template <typename Container, typename T>
281// using has_operator_compare_three_way_container =
282// std::disjunction<std::is_base_of<Container, T>, has_operator_compare_three_way<T>>;
283
284namespace detail {
285
286template<typename T>
288template<typename T>
290
291}
292
293template <typename Stream, typename, typename = void>
295template <typename Stream, typename T>
298template <typename Stream, typename T>
300
301template <typename Stream, typename Container, typename T>
303
304template <typename Stream, typename, typename = void>
306template <typename Stream, typename T>
309template <typename Stream, typename T>
311template <typename Stream, typename Container, typename T>
313
314template <typename Stream, typename T>
316
317} // namespace QTypeTraits
318
319QT_END_NAMESPACE
320
321#endif // QTTYPETRAITS_H
QPropertyBinding< T > makeBinding(const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION) const
Constructs a binding evaluating to the underlying property's value, using a specified source location...
Definition qproperty.h:886
QPropertyBinding< T > binding() const
Returns the currently set binding of the underlying property.
Definition qproperty.h:890
T value() const
Returns the underlying property's current value.
Definition qproperty.h:928
void setValue(const T &value)
Sets the underlying property's value to value.
Definition qproperty.h:938
friend class QPropertyAlias
Definition qproperty.h:866
QBindable(QObject *obj, const QMetaProperty &property)
Definition qproperty.h:880
QPropertyBinding< T > setBinding(Functor &&f, const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION, std::enable_if_t< std::is_invocable_v< Functor > > *=nullptr)
Definition qproperty.h:917
QBindable(const QUntypedBindable &b)
Definition qproperty.h:872
QPropertyBinding< T > setBinding(const QPropertyBinding< T > &binding)
Sets the underlying property's binding to binding.
Definition qproperty.h:901
QBindable(QObject *obj, const char *property)
Definition qproperty.h:883
QPropertyBinding< T > takeBinding()
Removes the currently set binding of the underlying property and returns it.
Definition qproperty.h:895
\inmodule QtCore
\inmodule QtCore
Definition qproperty.h:1076
QObjectBindableProperty(const T &initialValue)
Constructs a property with the provided initialValue.
Definition qproperty.h:1107
QObjectBindableProperty()=default
typename QPropertyData< T >::rvalue_ref rvalue_ref
Definition qproperty.h:1103
typename QPropertyData< T >::value_type value_type
Definition qproperty.h:1101
QObjectBindableProperty(T &&initialValue)
Move-Constructs a property with the provided initialValue.
Definition qproperty.h:1108
typename QPropertyData< T >::arrow_operator_result arrow_operator_result
Definition qproperty.h:1104
QObjectBindableProperty(Functor &&f, const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION, typename std::enable_if_t< std::is_invocable_r_v< T, Functor & > > *=nullptr)
Definition qproperty.h:1114
QObjectBindableProperty(const QPropertyBinding< T > &binding)
Definition qproperty.h:1109
typename QPropertyData< T >::parameter_type parameter_type
Definition qproperty.h:1102
\macro Q_OBJECT_BINDABLE_PROPERTY(containingClass, type, name, signal)
QPropertyBinding< T > binding() const
operator parameter_type() const
typename QPropertyData< T >::value_type value_type
QtPrivate::QPropertyBindingData & bindingData() const
QObjectCompatProperty & operator=(parameter_type newValue)
typename QPropertyData< T >::arrow_operator_result arrow_operator_result
typename QPropertyData< T >::parameter_type parameter_type
parameter_type value() const
QObjectCompatProperty()=default
QPropertyChangeHandler< Functor > onValueChanged(Functor f)
void setValue(parameter_type t)
void removeBindingUnlessInWrapper()
bool setBinding(const QUntypedPropertyBinding &newBinding)
QPropertyBinding< T > setBinding(Functor &&f, const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION, std::enable_if_t< std::is_invocable_v< Functor > > *=nullptr)
arrow_operator_result operator->() const
QObjectCompatProperty(T &&initialValue)
QPropertyNotifier addNotifier(Functor f)
parameter_type operator*() const
QObjectCompatProperty(const T &initialValue)
QPropertyBinding< T > takeBinding()
QPropertyChangeHandler< Functor > subscribe(Functor f)
bool hasBinding() const
QPropertyBinding< T > setBinding(const QPropertyBinding< T > &newBinding)
\macro Q_OBJECT_COMPAT_PROPERTY(containingClass, type, name, callback)
Definition qproperty.h:1342
QObjectComputedProperty()=default
parameter_type value() const
Definition qproperty.h:1360
\inmodule QtCore
Definition qproperty.h:132
QPropertyBinding(const QUntypedPropertyBinding &binding)
Definition qproperty.h:206
QPropertyBinding()=default
QPropertyBinding(Functor &&f, const QPropertyBindingSourceLocation &location)
Definition qproperty.h:200
\inmodule QtCore
Definition qproperty.h:293
\inmodule QtCore
Definition qproperty.h:70
static constexpr bool UseReferences
Definition qproperty.h:76
void setValueBypassingBindings(parameter_type v)
Sets the data value stored in this property to v.
Definition qproperty.h:90
QPropertyData()=default
QPropertyData(parameter_type t)
Definition qproperty.h:85
~QPropertyData()=default
parameter_type valueBypassingBindings() const
Returns the data stored in this property.
Definition qproperty.h:89
\inmodule QtCore
Definition qproperty.h:320
QUntypedPropertyData * aliasData
Definition qproperty.h:255
void(*)(QPropertyObserver *, QUntypedPropertyData *) ChangeHandler
Definition qproperty.h:237
ChangeHandler changeHandler
Definition qproperty.h:254
QPropertyBindingPrivate * binding
Definition qproperty.h:253
\inmodule QtCore
Definition qproperty.h:352
typename QPropertyData< T >::arrow_operator_result arrow_operator_result
Definition qproperty.h:378
QProperty(rvalue_ref initialValue)
Definition qproperty.h:382
void setValue(rvalue_ref newValue)
Definition qproperty.h:447
typename QPropertyData< T >::value_type value_type
Definition qproperty.h:375
QPropertyChangeHandler< Functor > subscribe(Functor f)
Definition qproperty.h:523
QPropertyBinding< T > takeBinding()
Disassociates the binding expression from this property and returns it.
Definition qproperty.h:510
bool hasBinding() const
Definition qproperty.h:503
bool setBinding(const QUntypedPropertyBinding &newBinding)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qproperty.h:482
friend void operator!=(const QProperty &, const QProperty< U > &) QPROPERTY_DECL_DELETED_EQ_OP
QPropertyNotifier addNotifier(Functor f)
Definition qproperty.h:531
typename QPropertyData< T >::rvalue_ref rvalue_ref
Definition qproperty.h:377
QPropertyChangeHandler< Functor > onValueChanged(Functor f)
Registers the given functor f as a callback that shall be called whenever the value of the property c...
Definition qproperty.h:516
QPropertyBinding< T > setBinding(Functor &&f, const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION, std::enable_if_t< std::is_invocable_v< Functor > > *=nullptr)
Definition qproperty.h:492
void setValue(parameter_type newValue)
Assigns newValue to this property and removes the property's associated binding, if present.
Definition qproperty.h:456
QProperty()=default
Constructs a property with a default constructed instance of T.
QProperty(const QPropertyBinding< T > &binding)
Constructs a property that is tied to the provided binding expression.
Definition qproperty.h:383
parameter_type value() const
Returns the value of the property.
Definition qproperty.h:419
QPropertyBinding< T > setBinding(const QPropertyBinding< T > &newBinding)
Associates the value of this property with the provided newBinding expression and returns the previou...
Definition qproperty.h:477
QProperty(Functor &&f, const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION, typename std::enable_if_t< std::is_invocable_r_v< T, Functor & > > *=nullptr)
Definition qproperty.h:388
const QtPrivate::QPropertyBindingData & bindingData() const
Definition qproperty.h:537
typename QPropertyData< T >::parameter_type parameter_type
Definition qproperty.h:376
QProperty< T > & operator=(rvalue_ref newValue)
Definition qproperty.h:465
arrow_operator_result operator->() const
Definition qproperty.h:425
QProperty< T > & operator=(parameter_type newValue)
Assigns newValue to this property and returns a reference to this QProperty.
Definition qproperty.h:471
QPropertyBinding< T > binding() const
Returns the binding expression that is associated with this property.
Definition qproperty.h:505
parameter_type operator*() const
Definition qproperty.h:437
operator parameter_type() const
Definition qproperty.h:442
~QProperty()=default
Destroys the property.
QProperty(parameter_type initialValue)
Definition qproperty.h:381
RAII class around Qt::beginPropertyUpdateGroup()/QtendPropertyUpdateGroup().
Definition qproperty.h:58
~QTimerPrivate() override
QTimerPrivate(QTimer *qq)
Definition qtimer_p.h:27
void setIntervalDuration(std::chrono::nanoseconds nsec)
Definition qtimer_p.h:42
static constexpr int INV_TIMER
Definition qtimer_p.h:40
void setInterval(int msec)
Definition qtimer_p.h:52
bool isActive() const
Definition qtimer_p.h:58
const bool isQTimer
Definition qtimer_p.h:70
QTimerPrivate(std::chrono::nanoseconds nsec, QChronoTimer *qq)
Definition qtimer_p.h:32
Qt::TimerId id
Definition qtimer_p.h:60
\inmodule QtCore
Definition qtimer.h:20
\inmodule QtCore
Definition qproperty.h:730
QUntypedPropertyBinding binding() const
Returns the underlying property's binding if there is any, or a default constructed QUntypedPropertyB...
Definition qproperty.h:810
QUntypedPropertyBinding makeBinding(const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION) const
Creates a binding returning the underlying properties' value, using a specified source location.
Definition qproperty.h:754
bool hasBinding() const
Returns true if the underlying property has a binding.
Definition qproperty.h:840
constexpr QUntypedBindable()=default
Default-constructs a QUntypedBindable.
QMetaType metaType() const
Definition qproperty.h:845
const QtPrivate::QBindableInterface * iface
Definition qproperty.h:734
QPropertyChangeHandler< Functor > onValueChanged(Functor f) const
Installs f as a change handler.
Definition qproperty.h:788
QUntypedPropertyBinding takeBinding()
Removes the currently set binding from the property and returns it.
Definition qproperty.h:759
QPropertyNotifier addNotifier(Functor f)
Installs f as a change handler.
Definition qproperty.h:803
QUntypedPropertyData * data
Definition qproperty.h:733
bool isBindable() const
Definition qproperty.h:751
bool isValid() const
Returns true if the QUntypedBindable is valid.
Definition qproperty.h:750
bool setBinding(const QUntypedPropertyBinding &binding)
Sets the underlying property's binding to binding.
Definition qproperty.h:821
bool isReadOnly() const
Definition qproperty.h:752
QUntypedBindable(Property *p)
Constructs a QUntypedBindable from the property property.
Definition qproperty.h:745
QPropertyChangeHandler< Functor > subscribe(Functor f) const
Behaves like a call to f followed by onValueChanged(f),.
Definition qproperty.h:796
constexpr QUntypedBindable(QUntypedPropertyData *d, const QtPrivate::QBindableInterface *i)
Definition qproperty.h:735
void observe(QPropertyObserver *observer) const
Definition qproperty.h:776
static constexpr QBindableInterface iface
Definition qproperty.h:606
QPropertyBindingData & bindingData()
friend class QT_PREPEND_NAMESPACE(QUntypedBindable)
const QMetaProperty & metaProperty() const
static QPropertyAdaptorSlotObject * cast(QSlotObjectBase *ptr, int propertyIndex)
const QPropertyBindingData & bindingData() const
const T & const_reference()
constexpr bool has_ostream_operator_v
constexpr bool is_dereferenceable_v
constexpr bool has_operator_equal_v
constexpr bool has_stream_operator_v
constexpr bool has_operator_compare_three_way_v
constexpr bool has_istream_operator_v
std::disjunction< std::is_base_of< Container, T >, QTypeTraits::has_operator_equal< T > > has_operator_equal_container
std::disjunction< std::is_base_of< Container, T >, QTypeTraits::has_operator_less_than< T > > has_operator_less_than_container
constexpr bool has_operator_compare_three_way_with_v
constexpr bool has_operator_less_than_v
void printMetaTypeMismatch(QMetaType actual, QMetaType expected)
void printUnsuitableBindableWarning(QAnyStringView prefix, BindableWarnings::Reason reason)
void setter(QUntypedPropertyData *d, const void *value)
void getter(const QUntypedPropertyData *d, void *value)
bool bindingWrapper(QMetaType type, QUntypedPropertyData *d, QtPrivate::QPropertyBindingFunction binding, QUntypedPropertyData *temp, void *value)
QUntypedPropertyBinding setBinding(QUntypedPropertyData *d, const QUntypedPropertyBinding &binding)
Definition qproperty.h:698
constexpr QBindableInterface iface
Definition qproperty.h:717
bool bindingWrapper(QMetaType type, QUntypedPropertyData *d, QtPrivate::QPropertyBindingFunction binding)
Definition qproperty.h:687
QUntypedPropertyBinding makeBinding(const QUntypedPropertyData *d, const QPropertyBindingSourceLocation &location)
Definition qproperty.h:704
void setObserver(const QUntypedPropertyData *d, QPropertyObserver *observer)
void assertObjectType(QObjectPrivate *d)
Definition qobject_p.h:250
Q_CORE_EXPORT bool isAnyBindingEvaluating()
Q_CORE_EXPORT void restoreBindingStatus(BindingEvaluationState *status)
constexpr bool is_standard_or_extended_integer_type_v
const QObject * getQObject(const QObjectPrivate *d)
Definition qobject_p.h:245
Q_CORE_EXPORT bool isPropertyInBindingWrapper(const QUntypedPropertyData *property)
Definition qcompare.h:76
auto makePropertyBinding(Functor &&f, const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION, std::enable_if_t< std::is_invocable_v< Functor > > *=nullptr)
Definition qproperty.h:213
Q_CORE_EXPORT void beginPropertyUpdateGroup()
QPropertyBinding< PropertyType > makePropertyBinding(const QProperty< PropertyType > &otherProperty, const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION)
Definition qproperty.h:567
Q_CORE_EXPORT void endPropertyUpdateGroup()
#define __has_include(x)
#define QT_CONCAT(B, M, m, u)
Definition qobject_p.h:42
QBindingStorage * qGetBindingStorage(QObjectPrivate *o)
Definition qobject_p.h:453
QBindingStorage * qGetBindingStorage(QObjectPrivate::ExtraData *ed)
Definition qobject_p.h:461
const QBindingStorage * qGetBindingStorage(const QObjectPrivate *o)
Definition qobject_p.h:449
#define QPROPERTY_DECL_DELETED_EQ_OP
Definition qproperty.h:410
#define Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(...)
Definition qproperty.h:1335
#define QT_PROPERTY_DEFAULT_BINDING_LOCATION
Definition qproperty.h:47
#define Q_OBJECT_COMPUTED_PROPERTY(Class, Type, name, ...)
Definition qproperty.h:1424
#define Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(...)
constexpr T qExchange(T &t, U &&newValue) noexcept(std::conjunction_v< std::is_nothrow_move_constructible< T >, std::is_nothrow_assignable< T &, U > >)
#define QSEIT_EXCLUDE(X)
QBindingObserverPtr()=default
QPropertyObserver * operator->()
QPropertyBindingPrivate * binding() const noexcept
static QPropertyProxyBindingData * proxyData(QtPrivate::QPropertyBindingData *ptr)
static void fixupAfterMove(QtPrivate::QPropertyBindingData *ptr)
Q_ALWAYS_INLINE void addObserver(QPropertyObserver *observer)
Definition qproperty.cpp:40
const QtPrivate::QPropertyBindingData * ptr
Definition qproperty_p.h:70
static QPropertyBindingDataPointer get(QProperty< T > &property)
Definition qproperty_p.h:92
QPropertyBindingPrivate * binding() const
Definition qproperty_p.h:72
void setObservers(QPropertyObserver *observer)
Definition qproperty_p.h:77
QPropertyObserverPointer firstObserver() const
void setFirstObserver(QPropertyObserver *observer)
QPropertyObserver * next() const
void noSelfDependencies(QPropertyBindingPrivate *binding)
void notify(QUntypedPropertyData *propertyDataPtr)
QPropertyBindingPrivate * binding() const
void evaluateBindings(PendingBindingObserverList &bindingObservers, QBindingStatus *status)
void observeProperty(QPropertyBindingDataPointer property)
QPropertyObserver * ptr
QPropertyObserverPointer nextObserver() const
void setBindingToNotify_unsafe(QPropertyBindingPrivate *binding)
void setChangeHandler(QPropertyObserver::ChangeHandler changeHandler)
void setBindingToNotify(QPropertyBindingPrivate *binding)
void(* BeginCallback)(QObject *caller, int signal_or_method_index, void **argv)
Definition qobject_p.h:63
BeginCallback slot_begin_callback
Definition qobject_p.h:66
EndCallback slot_end_callback
Definition qobject_p.h:68
EndCallback signal_end_callback
Definition qobject_p.h:67
BeginCallback signal_begin_callback
Definition qobject_p.h:65
void(* EndCallback)(QObject *caller, int signal_or_method_index)
Definition qobject_p.h:64
static QtPrivate::QBindableInterface const * getInterface(const QUntypedBindable &bindable)
static QUntypedPropertyData * getPropertyData(const QUntypedBindable &bindable)
QPropertyBindingPrivate * binding
QVarLengthArray< const QPropertyBindingData *, 8 > alreadyCaptureProperties
BindingEvaluationState(QPropertyBindingPrivate *binding, QBindingStatus *status)
BindingEvaluationState * previousState
BindingEvaluationState ** currentState
QtPrivate::BindingEvaluationState ** currentlyEvaluatingBindingList
CompatPropertySafePoint * previousState
CompatPropertySafePoint ** currentState
QUntypedPropertyData * property
QtPrivate::BindingEvaluationState * bindingState
void(*)(const QUntypedPropertyData *d, void *value) Getter
Definition qproperty.h:581
void(*)(const QUntypedPropertyData *d, QPropertyObserver *observer) SetObserver
Definition qproperty.h:586
void(*)(QUntypedPropertyData *d, const void *value) Setter
Definition qproperty.h:582
static constexpr quintptr MetaTypeAccessorFlag
Definition qproperty.h:596