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>
149struct expand_operator_equal_tuple;
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>
160struct expand_operator_equal_container<T, true> :
161 std::conjunction<
162 std::disjunction<
163 std::is_same<T, typename T::value_type>, // avoid endless recursion
164 expand_operator_equal<typename T::value_type>
165 >, expand_operator_equal_tuple<T>> {};
166
167// recursively check the template arguments of a tuple like object
168template<typename ...T>
170
171template<typename T>
172struct expand_operator_equal_tuple : has_operator_equal<T> {};
173template<typename T>
174struct expand_operator_equal_tuple<std::optional<T>> : expand_operator_equal_recursive<T> {};
175template<typename T1, typename T2>
176struct expand_operator_equal_tuple<std::pair<T1, T2>> : expand_operator_equal_recursive<T1, T2> {};
177template<typename ...T>
178struct expand_operator_equal_tuple<std::tuple<T...>> : expand_operator_equal_recursive<T...> {};
179template<typename ...T>
180struct expand_operator_equal_tuple<std::variant<T...>> : expand_operator_equal_recursive<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>
190struct expand_operator_less_than_container;
191template<typename T>
192struct expand_operator_less_than_tuple;
193
194template<typename T>
196
197template<typename T, bool>
198struct expand_operator_less_than_container : expand_operator_less_than_tuple<T> {};
199template<typename T>
200struct expand_operator_less_than_container<T, true> :
201 std::conjunction<
202 std::disjunction<
203 std::is_same<T, typename T::value_type>,
204 expand_operator_less_than<typename T::value_type>
205 >, expand_operator_less_than_tuple<T>
206 > {};
207
208template<typename ...T>
210
211template<typename T>
212struct expand_operator_less_than_tuple : has_operator_less_than<T> {};
213template<typename T>
214struct expand_operator_less_than_tuple<std::optional<T>> : expand_operator_less_than_recursive<T> {};
215template<typename T1, typename T2>
216struct expand_operator_less_than_tuple<std::pair<T1, T2>> : expand_operator_less_than_recursive<T1, T2> {};
217template<typename ...T>
218struct expand_operator_less_than_tuple<std::tuple<T...>> : expand_operator_less_than_recursive<T...> {};
219template<typename ...T>
220struct expand_operator_less_than_tuple<std::variant<T...>> : expand_operator_less_than_recursive<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:834
QPropertyBinding< T > binding() const
Returns the currently set binding of the underlying property.
Definition qproperty.h:838
T value() const
Returns the underlying property's current value.
Definition qproperty.h:876
void setValue(const T &value)
Sets the underlying property's value to value.
Definition qproperty.h:886
friend class QPropertyAlias
Definition qproperty.h:814
QBindable(QObject *obj, const QMetaProperty &property)
Definition qproperty.h:828
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:865
QBindable(const QUntypedBindable &b)
Definition qproperty.h:820
QPropertyBinding< T > setBinding(const QPropertyBinding< T > &binding)
Sets the underlying property's binding to binding.
Definition qproperty.h:849
QBindable(QObject *obj, const char *property)
Definition qproperty.h:831
QPropertyBinding< T > takeBinding()
Removes the currently set binding of the underlying property and returns it.
Definition qproperty.h:843
\inmodule QtCore
\inmodule QtCore
Definition qproperty.h:1024
QPropertyNotifier addNotifier(Functor f)
Subscribes the given functor f as a callback that is called whenever the value of the property change...
Definition qproperty.h:1199
QObjectBindableProperty(const T &initialValue)
Constructs a property with the provided initialValue.
Definition qproperty.h:1055
QObjectBindableProperty()=default
void notify()
Programmatically signals a change of the property.
Definition qproperty.h:1110
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:1184
QObjectBindableProperty(T &&initialValue)
Move-Constructs a property with the provided initialValue.
Definition qproperty.h:1056
parameter_type value() const
Returns the value of the property.
Definition qproperty.h:1071
bool setBinding(const QUntypedPropertyBinding &newBinding)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qproperty.h:1145
void setValue(rvalue_ref t)
Assigns newValue to this property and removes the property's associated binding, if present.
Definition qproperty.h:1115
QPropertyBinding< T > takeBinding()
Disassociates the binding expression from this property and returns it.
Definition qproperty.h:1178
arrow_operator_result operator->() const
Definition qproperty.h:1077
const QtPrivate::QPropertyBindingData & bindingData() const
Definition qproperty.h:1205
parameter_type operator*() const
Definition qproperty.h:1089
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:1062
void setValue(parameter_type t)
Definition qproperty.h:1099
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:1138
QObjectBindableProperty(const QPropertyBinding< T > &binding)
Definition qproperty.h:1057
QPropertyBinding< T > binding() const
Returns the binding expression that is associated with this property.
Definition qproperty.h:1172
bool hasBinding() const
Returns true if the property is associated with a binding; false otherwise.
Definition qproperty.h:1166
QObjectBindableProperty & operator=(rvalue_ref newValue)
Definition qproperty.h:1126
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:1155
QObjectBindableProperty & operator=(parameter_type newValue)
Definition qproperty.h:1132
QPropertyChangeHandler< Functor > subscribe(Functor f)
Subscribes the given functor f as a callback that is called immediately and whenever the value of the...
Definition qproperty.h:1191
\macro Q_OBJECT_BINDABLE_PROPERTY(containingClass, type, name, signal)
QPropertyBinding< T > binding() const
operator parameter_type() const
QtPrivate::QPropertyBindingData & bindingData() const
QObjectCompatProperty & operator=(parameter_type newValue)
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:1274
QObjectComputedProperty()=default
parameter_type value() const
Definition qproperty.h:1292
\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
Q_NODISCARD_CTOR QPropertyChangeHandler(Functor handler)
Definition qproperty.h:297
\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
ChangeHandler changeHandler
Definition qproperty.h:254
QPropertyBindingPrivate * binding
Definition qproperty.h:253
\inmodule QtCore
Definition qproperty.h:352
QProperty(rvalue_ref initialValue)
Definition qproperty.h:371
void setValue(rvalue_ref newValue)
Definition qproperty.h:415
QPropertyChangeHandler< Functor > subscribe(Functor f)
Subscribes the given functor f as a callback that is called immediately and whenever the value of the...
Definition qproperty.h:491
QPropertyBinding< T > takeBinding()
Disassociates the binding expression from this property and returns it.
Definition qproperty.h:478
bool hasBinding() const
Definition qproperty.h:471
bool setBinding(const QUntypedPropertyBinding &newBinding)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qproperty.h:450
QPropertyNotifier addNotifier(Functor f)
Subscribes the given functor f as a callback that is called whenever the value of the property change...
Definition qproperty.h:499
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:484
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:460
void setValue(parameter_type newValue)
Assigns newValue to this property and removes the property's associated binding, if present.
Definition qproperty.h:424
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:372
parameter_type value() const
Returns the value of the property.
Definition qproperty.h:387
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:445
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:377
const QtPrivate::QPropertyBindingData & bindingData() const
Definition qproperty.h:505
QProperty< T > & operator=(rvalue_ref newValue)
Definition qproperty.h:433
arrow_operator_result operator->() const
Definition qproperty.h:393
QProperty< T > & operator=(parameter_type newValue)
Assigns newValue to this property and returns a reference to this QProperty.
Definition qproperty.h:439
QPropertyBinding< T > binding() const
Returns the binding expression that is associated with this property.
Definition qproperty.h:473
parameter_type operator*() const
Definition qproperty.h:405
operator parameter_type() const
Definition qproperty.h:410
~QProperty()=default
Destroys the property.
QProperty(parameter_type initialValue)
Definition qproperty.h:370
RAII class around Qt::beginPropertyUpdateGroup()/Qt::endPropertyUpdateGroup().
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:680
QUntypedPropertyBinding binding() const
Returns the underlying property's binding if there is any, or a default constructed QUntypedPropertyB...
Definition qproperty.h:758
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:704
bool hasBinding() const
Returns true if the underlying property has a binding.
Definition qproperty.h:788
constexpr QUntypedBindable()=default
Default-constructs a QUntypedBindable.
QMetaType metaType() const
Definition qproperty.h:793
const QtPrivate::QBindableInterface * iface
Definition qproperty.h:684
QPropertyChangeHandler< Functor > onValueChanged(Functor f) const
Installs f as a change handler.
Definition qproperty.h:736
QUntypedPropertyBinding takeBinding()
Removes the currently set binding from the property and returns it.
Definition qproperty.h:709
QPropertyNotifier addNotifier(Functor f)
Installs f as a change handler.
Definition qproperty.h:751
QUntypedPropertyData * data
Definition qproperty.h:683
bool isBindable() const
Definition qproperty.h:701
bool isValid() const
Returns true if the QUntypedBindable is valid.
Definition qproperty.h:700
bool setBinding(const QUntypedPropertyBinding &binding)
Sets the underlying property's binding to binding.
Definition qproperty.h:769
bool isReadOnly() const
Definition qproperty.h:702
QUntypedBindable(Property *p)
Constructs a QUntypedBindable from the property property.
Definition qproperty.h:695
QPropertyChangeHandler< Functor > subscribe(Functor f) const
Behaves like a call to f followed by onValueChanged(f),.
Definition qproperty.h:744
constexpr QUntypedBindable(QUntypedPropertyData *d, const QtPrivate::QBindableInterface *i)
Definition qproperty.h:685
void observe(QPropertyObserver *observer) const
Definition qproperty.h:724
static constexpr QBindableInterface iface
Definition qproperty.h:556
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
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:648
constexpr QBindableInterface iface
Definition qproperty.h:667
bool bindingWrapper(QMetaType type, QUntypedPropertyData *d, QtPrivate::QPropertyBindingFunction binding)
Definition qproperty.h:637
QUntypedPropertyBinding makeBinding(const QUntypedPropertyData *d, const QPropertyBindingSourceLocation &location)
Definition qproperty.h:654
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:517
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:472
QBindingStorage * qGetBindingStorage(QObjectPrivate::ExtraData *ed)
Definition qobject_p.h:480
const QBindingStorage * qGetBindingStorage(const QObjectPrivate *o)
Definition qobject_p.h:468
#define Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(...)
Definition qproperty.h:1267
#define QT_PROPERTY_DEFAULT_BINDING_LOCATION
Definition qproperty.h:47
#define Q_OBJECT_COMPUTED_PROPERTY(Class, Type, name, ...)
Definition qproperty.h:1356
#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)
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
static constexpr quintptr MetaTypeAccessorFlag
Definition qproperty.h:546