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// Qt-Security score:significant reason:default
4
5#ifndef QTTYPETRAITS_H
6#define QTTYPETRAITS_H
7
8#include <QtCore/qtconfigmacros.h>
9#include <QtCore/qtdeprecationmarkers.h>
10
11#if defined(__cpp_lib_three_way_comparison) && defined(__cpp_lib_concepts)
12#include <compare>
13#include <concepts>
14#endif
15#include <optional>
16#include <tuple>
17#include <type_traits>
18#include <utility>
19#include <variant>
20
21#if 0
22#pragma qt_class(QtTypeTraits)
23#pragma qt_sync_stop_processing
24#endif
25
26QT_BEGIN_NAMESPACE
27
28// like std::to_underlying
29template <typename Enum>
30constexpr std::underlying_type_t<Enum> qToUnderlying(Enum e) noexcept
31{
32 return static_cast<std::underlying_type_t<Enum>>(e);
33}
34
35#ifndef QT_NO_QASCONST
36#if QT_DEPRECATED_SINCE(6, 6)
37
38// this adds const to non-const objects (like std::as_const)
39template <typename T>
40QT_DEPRECATED_VERSION_X_6_6("Use std::as_const() instead.")
41constexpr typename std::add_const<T>::type &qAsConst(T &t) noexcept { return t; }
42// prevent rvalue arguments:
43template <typename T>
44void qAsConst(const T &&) = delete;
45
46#endif // QT_DEPRECATED_SINCE(6, 6)
47#endif // QT_NO_QASCONST
48
49#ifndef QT_NO_QEXCHANGE
50
51// like std::exchange
52template <typename T, typename U = T>
53constexpr T qExchange(T &t, U &&newValue)
56{
57 T old = std::move(t);
58 t = std::forward<U>(newValue);
59 return old;
60}
61
62#endif // QT_NO_QEXCHANGE
63
64namespace QtPrivate {
65// helper to be used to trigger a "dependent static_assert(false)"
66// (for instance, in a final `else` branch of a `if constexpr`.)
67template <typename T> struct type_dependent_false : std::false_type {};
68template <auto T> struct value_dependent_false : std::false_type {};
69
70// helper detects standard integer types and some of extended integer types,
71// see https://eel.is/c++draft/basic.fundamental#1
72template <typename T> struct is_standard_or_extended_integer_type_helper : std::is_integral<T> {};
73// these are integral, but not considered standard or extended integer types
74// https://eel.is/c++draft/basic.fundamental#11:
75#define QSEIT_EXCLUDE(X)
76 template <> struct is_standard_or_extended_integer_type_helper<X> : std::false_type {}
79#ifdef __cpp_char8_t
81#endif
82QSEIT_EXCLUDE(char16_t);
83QSEIT_EXCLUDE(char32_t);
85#undef QSEIT_EXCLUDE
86template <typename T>
88template <typename T>
90} // QtPrivate
91
92namespace QTypeTraits {
93
94namespace detail {
95template<typename T, typename U,
99 !std::is_same_v<T, bool> && !std::is_same_v<U, bool> &&
100 !std::is_same_v<T, char> && !std::is_same_v<U, char>>>
102{
103 using type = decltype(T() + U());
104};
105}
106
107template <typename T, typename U>
108using Promoted = typename detail::Promoted<T, U>::type;
109
110/*
111 The templates below aim to find out whether one can safely instantiate an operator==() or
112 operator<() for a type.
113
114 This is tricky for containers, as most containers have unconstrained comparison operators, even though they
115 rely on the corresponding operators for its content.
116 This is especially true for all of the STL template classes that have a comparison operator defined, and
117 leads to the situation, that the compiler would try to instantiate the operator, and fail if any
118 of its template arguments does not have the operator implemented.
119
120 The code tries to cover the relevant cases for Qt and the STL, by checking (recusrsively) the value_type
121 of a container (if it exists), and checking the template arguments of pair, tuple and variant.
122*/
123namespace detail {
124
125// find out whether T is a conteiner
126// this is required to check the value type of containers for the existence of the comparison operator
127template <typename, typename = void>
129template <typename T>
131 typename T::value_type,
132 std::is_convertible<decltype(std::declval<T>().begin() != std::declval<T>().end()), bool>
133>> : std::true_type {};
134
135
136// Checks the existence of the comparison operator for the class itself
137QT_WARNING_PUSH
138QT_WARNING_DISABLE_FLOAT_COMPARE
139template <typename, typename = void>
141template <typename T>
142struct has_operator_equal<T, std::void_t<decltype(bool(std::declval<const T&>() == std::declval<const T&>()))>>
143 : std::true_type {};
145
146// Two forward declarations
147template<typename T, bool = is_container<T>::value>
149template<typename T>
151
152// the entry point for the public method
153template<typename T>
155
156// if T isn't a container check if it's a tuple like object
157template<typename T, bool>
158struct expand_operator_equal_container : expand_operator_equal_tuple<T> {};
159// if T::value_type exists, check first T::value_type, then T itself
160template<typename T>
164 std::is_same<T, typename T::value_type>, // avoid endless recursion
167
168// recursively check the template arguments of a tuple like object
169template<typename ...T>
171
172template<typename T>
174template<typename T>
176template<typename T1, typename T2>
178template<typename ...T>
180template<typename ...T>
182
183// the same for operator<(), see above for explanations
184template <typename, typename = void>
186template <typename T>
187struct has_operator_less_than<T, std::void_t<decltype(bool(std::declval<const T&>() < std::declval<const T&>()))>>
188 : std::true_type{};
189
190template<typename T, bool = is_container<T>::value>
192template<typename T>
194
195template<typename T>
197
198template<typename T, bool>
200template<typename T>
208
209template<typename ...T>
211
212template<typename T>
214template<typename T>
216template<typename T1, typename T2>
218template<typename ...T>
220template<typename ...T>
222
223} // namespace detail
224
225template<typename T, typename = void>
227
228template<typename T>
229struct is_dereferenceable<T, std::void_t<decltype(std::declval<T>().operator->())> >
230 : std::true_type {};
231
232template <typename T>
234
235template<typename T>
237template<typename T>
239
240template <typename Container, typename T>
241using has_operator_equal_container = std::disjunction<std::is_base_of<Container, T>, QTypeTraits::has_operator_equal<T>>;
242
243template<typename T>
245template<typename T>
247
248template <typename Container, typename T>
249using has_operator_less_than_container = std::disjunction<std::is_base_of<Container, T>, QTypeTraits::has_operator_less_than<T>>;
250
251template <typename ...T>
253
254template <typename Container, typename ...T>
256
257template <typename ...T>
259
260template <typename Container, typename ...T>
262
263template<typename T>
265template <typename T, typename U>
267#if defined(__cpp_lib_three_way_comparison) && defined(__cpp_lib_concepts)
268template<std::three_way_comparable T>
270template <typename T, typename U>
273#endif // __cpp_lib_three_way_comparison && __cpp_lib_concepts
274template<typename T>
276template<typename T, typename U>
278
279// Intentionally no 'has_operator_compare_three_way_container', because the
280// compilers fail to determine the proper return type in this case
281// template <typename Container, typename T>
282// using has_operator_compare_three_way_container =
283// std::disjunction<std::is_base_of<Container, T>, has_operator_compare_three_way<T>>;
284
285namespace detail {
286
287template<typename T>
289template<typename T>
291
292}
293
294template <typename Stream, typename, typename = void>
296template <typename Stream, typename T>
299template <typename Stream, typename T>
301
302template <typename Stream, typename Container, typename T>
304
305template <typename Stream, typename, typename = void>
307template <typename Stream, typename T>
310template <typename Stream, typename T>
312template <typename Stream, typename Container, typename T>
314
315template <typename Stream, typename T>
317
318} // namespace QTypeTraits
319
320QT_END_NAMESPACE
321
322#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:887
QPropertyBinding< T > binding() const
Returns the currently set binding of the underlying property.
Definition qproperty.h:891
T value() const
Returns the underlying property's current value.
Definition qproperty.h:929
void setValue(const T &value)
Sets the underlying property's value to value.
Definition qproperty.h:939
friend class QPropertyAlias
Definition qproperty.h:867
QBindable(QObject *obj, const QMetaProperty &property)
Definition qproperty.h:881
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:918
QBindable(const QUntypedBindable &b)
Definition qproperty.h:873
QPropertyBinding< T > setBinding(const QPropertyBinding< T > &binding)
Sets the underlying property's binding to binding.
Definition qproperty.h:902
QBindable(QObject *obj, const char *property)
Definition qproperty.h:884
QPropertyBinding< T > takeBinding()
Removes the currently set binding of the underlying property and returns it.
Definition qproperty.h:896
\inmodule QtCore
\inmodule QtCore
Definition qproperty.h:1077
QObjectBindableProperty(const T &initialValue)
Constructs a property with the provided initialValue.
Definition qproperty.h:1108
QObjectBindableProperty()=default
typename QPropertyData< T >::rvalue_ref rvalue_ref
Definition qproperty.h:1104
typename QPropertyData< T >::value_type value_type
Definition qproperty.h:1102
QObjectBindableProperty(T &&initialValue)
Move-Constructs a property with the provided initialValue.
Definition qproperty.h:1109
typename QPropertyData< T >::arrow_operator_result arrow_operator_result
Definition qproperty.h:1105
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:1115
QObjectBindableProperty(const QPropertyBinding< T > &binding)
Definition qproperty.h:1110
typename QPropertyData< T >::parameter_type parameter_type
Definition qproperty.h:1103
\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
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:1343
QObjectComputedProperty()=default
parameter_type value() const
Definition qproperty.h:1361
\inmodule QtCore
Definition qproperty.h:133
QPropertyBinding(const QUntypedPropertyBinding &binding)
Definition qproperty.h:207
QPropertyBinding()=default
QPropertyBinding(Functor &&f, const QPropertyBindingSourceLocation &location)
Definition qproperty.h:201
\inmodule QtCore
Definition qproperty.h:294
\inmodule QtCore
Definition qproperty.h:71
static constexpr bool UseReferences
Definition qproperty.h:77
void setValueBypassingBindings(parameter_type v)
Sets the data value stored in this property to v.
Definition qproperty.h:91
QPropertyData()=default
QPropertyData(parameter_type t)
Definition qproperty.h:86
~QPropertyData()=default
parameter_type valueBypassingBindings() const
Returns the data stored in this property.
Definition qproperty.h:90
\inmodule QtCore
Definition qproperty.h:321
QUntypedPropertyData * aliasData
Definition qproperty.h:256
void(*)(QPropertyObserver *, QUntypedPropertyData *) ChangeHandler
Definition qproperty.h:238
ChangeHandler changeHandler
Definition qproperty.h:255
QPropertyBindingPrivate * binding
Definition qproperty.h:254
\inmodule QtCore
Definition qproperty.h:353
typename QPropertyData< T >::arrow_operator_result arrow_operator_result
Definition qproperty.h:379
QProperty(rvalue_ref initialValue)
Definition qproperty.h:383
void setValue(rvalue_ref newValue)
Definition qproperty.h:448
typename QPropertyData< T >::value_type value_type
Definition qproperty.h:376
QPropertyChangeHandler< Functor > subscribe(Functor f)
Definition qproperty.h:524
QPropertyBinding< T > takeBinding()
Disassociates the binding expression from this property and returns it.
Definition qproperty.h:511
bool hasBinding() const
Definition qproperty.h:504
bool setBinding(const QUntypedPropertyBinding &newBinding)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qproperty.h:483
friend void operator!=(const QProperty &, const QProperty< U > &) QPROPERTY_DECL_DELETED_EQ_OP
QPropertyNotifier addNotifier(Functor f)
Definition qproperty.h:532
typename QPropertyData< T >::rvalue_ref rvalue_ref
Definition qproperty.h:378
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:517
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:493
void setValue(parameter_type newValue)
Assigns newValue to this property and removes the property's associated binding, if present.
Definition qproperty.h:457
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:384
parameter_type value() const
Returns the value of the property.
Definition qproperty.h:420
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:478
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:389
const QtPrivate::QPropertyBindingData & bindingData() const
Definition qproperty.h:538
typename QPropertyData< T >::parameter_type parameter_type
Definition qproperty.h:377
QProperty< T > & operator=(rvalue_ref newValue)
Definition qproperty.h:466
arrow_operator_result operator->() const
Definition qproperty.h:426
QProperty< T > & operator=(parameter_type newValue)
Assigns newValue to this property and returns a reference to this QProperty.
Definition qproperty.h:472
QPropertyBinding< T > binding() const
Returns the binding expression that is associated with this property.
Definition qproperty.h:506
parameter_type operator*() const
Definition qproperty.h:438
operator parameter_type() const
Definition qproperty.h:443
~QProperty()=default
Destroys the property.
QProperty(parameter_type initialValue)
Definition qproperty.h:382
RAII class around Qt::beginPropertyUpdateGroup()/QtendPropertyUpdateGroup().
Definition qproperty.h:59
~QTimerPrivate() override
QTimerPrivate(QTimer *qq)
Definition qtimer_p.h:28
void setIntervalDuration(std::chrono::nanoseconds nsec)
Definition qtimer_p.h:43
static constexpr int INV_TIMER
Definition qtimer_p.h:41
void setInterval(int msec)
Definition qtimer_p.h:53
bool isActive() const
Definition qtimer_p.h:59
const bool isQTimer
Definition qtimer_p.h:71
QTimerPrivate(std::chrono::nanoseconds nsec, QChronoTimer *qq)
Definition qtimer_p.h:33
Qt::TimerId id
Definition qtimer_p.h:61
\inmodule QtCore
Definition qtimer.h:21
\inmodule QtCore
Definition qproperty.h:731
QUntypedPropertyBinding binding() const
Returns the underlying property's binding if there is any, or a default constructed QUntypedPropertyB...
Definition qproperty.h:811
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:755
bool hasBinding() const
Returns true if the underlying property has a binding.
Definition qproperty.h:841
constexpr QUntypedBindable()=default
Default-constructs a QUntypedBindable.
QMetaType metaType() const
Definition qproperty.h:846
const QtPrivate::QBindableInterface * iface
Definition qproperty.h:735
QPropertyChangeHandler< Functor > onValueChanged(Functor f) const
Installs f as a change handler.
Definition qproperty.h:789
QUntypedPropertyBinding takeBinding()
Removes the currently set binding from the property and returns it.
Definition qproperty.h:760
QPropertyNotifier addNotifier(Functor f)
Installs f as a change handler.
Definition qproperty.h:804
QUntypedPropertyData * data
Definition qproperty.h:734
bool isBindable() const
Definition qproperty.h:752
bool isValid() const
Returns true if the QUntypedBindable is valid.
Definition qproperty.h:751
bool setBinding(const QUntypedPropertyBinding &binding)
Sets the underlying property's binding to binding.
Definition qproperty.h:822
bool isReadOnly() const
Definition qproperty.h:753
QUntypedBindable(Property *p)
Constructs a QUntypedBindable from the property property.
Definition qproperty.h:746
QPropertyChangeHandler< Functor > subscribe(Functor f) const
Behaves like a call to f followed by onValueChanged(f),.
Definition qproperty.h:797
constexpr QUntypedBindable(QUntypedPropertyData *d, const QtPrivate::QBindableInterface *i)
Definition qproperty.h:736
void observe(QPropertyObserver *observer) const
Definition qproperty.h:777
\inmodule QtCore
Definition qproperty.h:160
static constexpr QBindableInterface iface
Definition qproperty.h:607
QPropertyBindingData & bindingData()
friend class QT_PREPEND_NAMESPACE(QUntypedBindable)
const QMetaProperty & metaProperty() const
static QPropertyAdaptorSlotObject * cast(QSlotObjectBase *ptr, int propertyIndex)
const QPropertyBindingData & bindingData() const
Combined button and popup list for selecting options.
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)
Q_CORE_EXPORT void printSignalArgumentsWithCustomGetter()
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:699
constexpr QBindableInterface iface
Definition qproperty.h:718
bool bindingWrapper(QMetaType type, QUntypedPropertyData *d, QtPrivate::QPropertyBindingFunction binding)
Definition qproperty.h:688
QUntypedPropertyBinding makeBinding(const QUntypedPropertyData *d, const QPropertyBindingSourceLocation &location)
Definition qproperty.h:705
void setObserver(const QUntypedPropertyData *d, QPropertyObserver *observer)
void assertObjectType(QObjectPrivate *d)
Definition qobject_p.h:251
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:246
Q_CORE_EXPORT bool isPropertyInBindingWrapper(const QUntypedPropertyData *property)
Definition qcompare.h:111
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:214
Q_CORE_EXPORT void beginPropertyUpdateGroup()
QPropertyBinding< PropertyType > makePropertyBinding(const QProperty< PropertyType > &otherProperty, const QPropertyBindingSourceLocation &location=QT_PROPERTY_DEFAULT_BINDING_LOCATION)
Definition qproperty.h:568
Q_CORE_EXPORT void endPropertyUpdateGroup()
#define __has_include(x)
#define QT_CONCAT(B, M, m, u)
Definition qobject_p.h:43
QBindingStorage * qGetBindingStorage(QObjectPrivate *o)
Definition qobject_p.h:454
QBindingStorage * qGetBindingStorage(QObjectPrivate::ExtraData *ed)
Definition qobject_p.h:462
const QBindingStorage * qGetBindingStorage(const QObjectPrivate *o)
Definition qobject_p.h:450
#define QPROPERTY_DECL_DELETED_EQ_OP
Definition qproperty.h:411
#define Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(...)
Definition qproperty.h:1336
#define QT_PROPERTY_DEFAULT_BINDING_LOCATION
Definition qproperty.h:48
#define Q_OBJECT_COMPUTED_PROPERTY(Class, Type, name, ...)
Definition qproperty.h:1425
#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:41
const QtPrivate::QPropertyBindingData * ptr
Definition qproperty_p.h:75
static QPropertyBindingDataPointer get(QProperty< T > &property)
Definition qproperty_p.h:97
QPropertyBindingPrivate * binding() const
Definition qproperty_p.h:77
void setObservers(QPropertyObserver *observer)
Definition qproperty_p.h:82
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:64
BeginCallback slot_begin_callback
Definition qobject_p.h:67
EndCallback slot_end_callback
Definition qobject_p.h:69
EndCallback signal_end_callback
Definition qobject_p.h:68
BeginCallback signal_begin_callback
Definition qobject_p.h:66
void(* EndCallback)(QObject *caller, int signal_or_method_index)
Definition qobject_p.h:65
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:582
void(*)(const QUntypedPropertyData *d, QPropertyObserver *observer) SetObserver
Definition qproperty.h:587
void(*)(QUntypedPropertyData *d, const void *value) Setter
Definition qproperty.h:583
static constexpr quintptr MetaTypeAccessorFlag
Definition qproperty.h:597