summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qtmetamacros.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qtmetamacros.h')
-rw-r--r--src/corelib/kernel/qtmetamacros.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/corelib/kernel/qtmetamacros.h b/src/corelib/kernel/qtmetamacros.h
index 2dcd6948aa..fb89722847 100644
--- a/src/corelib/kernel/qtmetamacros.h
+++ b/src/corelib/kernel/qtmetamacros.h
@@ -91,6 +91,34 @@ QT_BEGIN_NAMESPACE
#define Q_INTERFACES(x) QT_ANNOTATE_CLASS(qt_interfaces, x)
#define Q_PROPERTY(...) QT_ANNOTATE_CLASS(qt_property, __VA_ARGS__)
#define Q_PRIVATE_PROPERTY(d, text) QT_ANNOTATE_CLASS2(qt_private_property, d, text)
+#define Q_PRIVATE_QPROPERTY(accessor, type, name, setter, ...) \
+ struct _qt_property_api_##name { \
+ type value() const; \
+ type operator()() const { return value(); } \
+ void setValue(type &&); \
+ void setValue(const type &); \
+ void operator=(const type &v) { setValue(v); } \
+ void operator=(type &&v) { setValue(std::move(v)); } \
+ QPropertyBinding<type> setBinding(const QPropertyBinding<type> &); \
+ QPropertyBinding<type> setBinding(QPropertyBinding<type> &&); \
+ QPropertyBinding<type> operator=(const QPropertyBinding<type> &b) { return setBinding(b); } \
+ QPropertyBinding<type> operator=(QPropertyBinding<type> &&b) { return setBinding(std::move(b)); } \
+ bool setBinding(const QUntypedPropertyBinding &); \
+ template <typename Functor> \
+ QPropertyBinding<type> setBinding(Functor f, \
+ const QPropertyBindingSourceLocation &location = QT_PROPERTY_DEFAULT_BINDING_LOCATION) \
+ { \
+ return setBinding(Qt::makePropertyBinding(f, location)); \
+ } \
+ bool hasBinding() const; \
+ QPropertyBinding<type> binding() const; \
+ QPropertyBinding<type> takeBinding(); \
+ }; \
+ void setter(const type &value);
+#define Q_PRIVATE_QPROPERTIES_BEGIN union {
+#define Q_PRIVATE_QPROPERTY_IMPL(name) \
+ _qt_property_api_##name name;
+#define Q_PRIVATE_QPROPERTIES_END };
#ifndef Q_REVISION
# define Q_REVISION(...)
#endif
@@ -211,6 +239,10 @@ private: \
#define Q_INTERFACES(x) Q_INTERFACES(x)
#define Q_PROPERTY(text) Q_PROPERTY(text)
#define Q_PRIVATE_PROPERTY(d, text) Q_PRIVATE_PROPERTY(d, text)
+#define Q_PRIVATE_QPROPERTY(accessor, type, name, setter, ...) Q_PRIVATE_QPROPERTY(accessor, type, name, setter, __VA_ARGS__)
+#define Q_PRIVATE_QPROPERTIES_BEGIN
+#define Q_PRIVATE_QPROPERTY_IMPL(name)
+#define Q_PRIVATE_QPROPERTIES_END
#define Q_REVISION(...) Q_REVISION(__VA_ARGS__)
#define Q_OVERRIDE(text) Q_OVERRIDE(text)
#define Q_ENUMS(x) Q_ENUMS(x)