QtBase  v6.3.1
qobjectdefs.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2022 The Qt Company Ltd.
4 ** Copyright (C) 2019 Intel Corporation.
5 ** Contact: https://www.qt.io/licensing/
6 **
7 ** This file is part of the QtCore module of the Qt Toolkit.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** Commercial License Usage
11 ** Licensees holding valid commercial Qt licenses may use this file in
12 ** accordance with the commercial license agreement provided with the
13 ** Software or, alternatively, in accordance with the terms contained in
14 ** a written agreement between you and The Qt Company. For licensing terms
15 ** and conditions see https://www.qt.io/terms-conditions. For further
16 ** information use the contact form at https://www.qt.io/contact-us.
17 **
18 ** GNU Lesser General Public License Usage
19 ** Alternatively, this file may be used under the terms of the GNU Lesser
20 ** General Public License version 3 as published by the Free Software
21 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
22 ** packaging of this file. Please review the following information to
23 ** ensure the GNU Lesser General Public License version 3 requirements
24 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
25 **
26 ** GNU General Public License Usage
27 ** Alternatively, this file may be used under the terms of the GNU
28 ** General Public License version 2.0 or (at your option) the GNU General
29 ** Public license version 3 or any later version approved by the KDE Free
30 ** Qt Foundation. The licenses are as published by the Free Software
31 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
32 ** included in the packaging of this file. Please review the following
33 ** information to ensure the GNU General Public License requirements will
34 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
35 ** https://www.gnu.org/licenses/gpl-3.0.html.
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40 
41 #ifndef QOBJECTDEFS_H
42 #define QOBJECTDEFS_H
43 
44 #if defined(__OBJC__) && !defined(__cplusplus)
45 # warning "File built in Objective-C mode (.m), but using Qt requires Objective-C++ (.mm)"
46 #endif
47 
48 #include <QtCore/qnamespace.h>
49 #include <QtCore/qobjectdefs_impl.h>
50 #include <QtCore/qtmetamacros.h>
51 
53 
54 class QByteArray;
55 struct QArrayData;
56 
57 class QString;
58 
59 #ifndef QT_NO_META_MACROS
60 // macro for onaming members
61 #ifdef METHOD
62 #undef METHOD
63 #endif
64 #ifdef SLOT
65 #undef SLOT
66 #endif
67 #ifdef SIGNAL
68 #undef SIGNAL
69 #endif
70 #endif // QT_NO_META_MACROS
71 
72 Q_CORE_EXPORT const char *qFlagLocation(const char *method);
73 
74 #ifndef QT_NO_META_MACROS
75 # define QMETHOD_CODE 0 // member type codes
76 # define QSLOT_CODE 1
77 # define QSIGNAL_CODE 2
78 # define QT_PREFIX_CODE(code, a) QT_STRINGIFY(code) #a
79 # define QT_STRINGIFY_METHOD(a) QT_PREFIX_CODE(QMETHOD_CODE, a)
80 # define QT_STRINGIFY_SLOT(a) QT_PREFIX_CODE(QSLOT_CODE, a)
81 # define QT_STRINGIFY_SIGNAL(a) QT_PREFIX_CODE(QSIGNAL_CODE, a)
82 # ifndef QT_NO_DEBUG
83 # define QLOCATION "\0" __FILE__ ":" QT_STRINGIFY(__LINE__)
84 # ifndef QT_NO_KEYWORDS
85 # define METHOD(a) qFlagLocation(QT_STRINGIFY_METHOD(a) QLOCATION)
86 # endif
87 # define SLOT(a) qFlagLocation(QT_STRINGIFY_SLOT(a) QLOCATION)
88 # define SIGNAL(a) qFlagLocation(QT_STRINGIFY_SIGNAL(a) QLOCATION)
89 # else
90 # ifndef QT_NO_KEYWORDS
91 # define METHOD(a) QT_STRINGIFY_METHOD(a)
92 # endif
93 # define SLOT(a) QT_STRINGIFY_SLOT(a)
94 # define SIGNAL(a) QT_STRINGIFY_SIGNAL(a)
95 # endif
96 #endif // QT_NO_META_MACROS
97 
98 #define Q_ARG(type, data) QArgument<type >(#type, data)
99 #define Q_RETURN_ARG(type, data) QReturnArgument<type >(#type, data)
100 
101 class QObject;
102 class QMetaMethod;
103 class QMetaEnum;
104 class QMetaProperty;
105 class QMetaClassInfo;
106 
107 namespace QtPrivate {
108 class QMetaTypeInterface;
109 }
110 
112 {
113  void **arguments;
114 };
115 
116 class Q_CORE_EXPORT QGenericArgument
117 {
118 public:
119  inline QGenericArgument(const char *aName = nullptr, const void *aData = nullptr)
120  : _data(aData), _name(aName) {}
121  inline void *data() const { return const_cast<void *>(_data); }
122  inline const char *name() const { return _name; }
123 
124 private:
125  const void *_data;
126  const char *_name;
127 };
128 
129 class Q_CORE_EXPORT QGenericReturnArgument: public QGenericArgument
130 {
131 public:
132  inline QGenericReturnArgument(const char *aName = nullptr, void *aData = nullptr)
133  : QGenericArgument(aName, aData)
134  {}
135 };
136 
137 template <class T>
139 {
140 public:
141  inline QArgument(const char *aName, const T &aData)
142  : QGenericArgument(aName, static_cast<const void *>(&aData))
143  {}
144 };
145 template <class T>
146 class QArgument<T &>: public QGenericArgument
147 {
148 public:
149  inline QArgument(const char *aName, T &aData)
150  : QGenericArgument(aName, static_cast<const void *>(&aData))
151  {}
152 };
153 
154 
155 template <typename T>
157 {
158 public:
159  inline QReturnArgument(const char *aName, T &aData)
160  : QGenericReturnArgument(aName, static_cast<void *>(&aData))
161  {}
162 };
163 
164 struct Q_CORE_EXPORT QMetaObject
165 {
166  class Connection;
167  const char *className() const;
168  const QMetaObject *superClass() const;
169 
170  bool inherits(const QMetaObject *metaObject) const noexcept;
172  { return const_cast<QObject *>(cast(const_cast<const QObject *>(obj))); }
173  const QObject *cast(const QObject *obj) const;
174 
175 #if !defined(QT_NO_TRANSLATION) || defined(Q_CLANG_QDOC)
176  QString tr(const char *s, const char *c, int n = -1) const;
177 #endif // QT_NO_TRANSLATION
178 
179  QMetaType metaType() const;
180 
181  int methodOffset() const;
182  int enumeratorOffset() const;
183  int propertyOffset() const;
184  int classInfoOffset() const;
185 
186  int constructorCount() const;
187  int methodCount() const;
188  int enumeratorCount() const;
189  int propertyCount() const;
190  int classInfoCount() const;
191 
192  int indexOfConstructor(const char *constructor) const;
193  int indexOfMethod(const char *method) const;
194  int indexOfSignal(const char *signal) const;
195  int indexOfSlot(const char *slot) const;
196  int indexOfEnumerator(const char *name) const;
197  int indexOfProperty(const char *name) const;
198  int indexOfClassInfo(const char *name) const;
199 
200  QMetaMethod constructor(int index) const;
201  QMetaMethod method(int index) const;
202  QMetaEnum enumerator(int index) const;
203  QMetaProperty property(int index) const;
204  QMetaClassInfo classInfo(int index) const;
205  QMetaProperty userProperty() const;
206 
207  static bool checkConnectArgs(const char *signal, const char *method);
208  static bool checkConnectArgs(const QMetaMethod &signal,
209  const QMetaMethod &method);
210  static QByteArray normalizedSignature(const char *method);
211  static QByteArray normalizedType(const char *type);
212 
213  // internal index-based connect
214  static Connection connect(const QObject *sender, int signal_index,
215  const QObject *receiver, int method_index,
216  int type = 0, int *types = nullptr);
217  // internal index-based disconnect
218  static bool disconnect(const QObject *sender, int signal_index,
219  const QObject *receiver, int method_index);
220  static bool disconnectOne(const QObject *sender, int signal_index,
221  const QObject *receiver, int method_index);
222  // internal slot-name based connect
223  static void connectSlotsByName(QObject *o);
224 
225  // internal index-based signal activation
226  static void activate(QObject *sender, int signal_index, void **argv);
227  static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv);
228  static void activate(QObject *sender, int signal_offset, int local_signal_index, void **argv);
229 
230  static bool invokeMethod(QObject *obj, const char *member,
233  QGenericArgument val0 = QGenericArgument(nullptr),
243 
244  static inline bool invokeMethod(QObject *obj, const char *member,
246  QGenericArgument val0 = QGenericArgument(nullptr),
256  {
257  return invokeMethod(obj, member, Qt::AutoConnection, ret, val0, val1, val2, val3,
258  val4, val5, val6, val7, val8, val9);
259  }
260 
261  static inline bool invokeMethod(QObject *obj, const char *member,
263  QGenericArgument val0 = QGenericArgument(nullptr),
273  {
274  return invokeMethod(obj, member, type, QGenericReturnArgument(), val0, val1, val2,
275  val3, val4, val5, val6, val7, val8, val9);
276  }
277 
278  static inline bool invokeMethod(QObject *obj, const char *member,
279  QGenericArgument val0 = QGenericArgument(nullptr),
289  {
290  return invokeMethod(obj, member, Qt::AutoConnection, QGenericReturnArgument(), val0,
291  val1, val2, val3, val4, val5, val6, val7, val8, val9);
292  }
293 
294 #ifdef Q_CLANG_QDOC
295  template<typename Functor, typename FunctorReturnType>
296  static bool invokeMethod(QObject *context, Functor function, Qt::ConnectionType type = Qt::AutoConnection, FunctorReturnType *ret = nullptr);
297  template<typename Functor, typename FunctorReturnType>
298  static bool invokeMethod(QObject *context, Functor function, FunctorReturnType *ret);
299 #else
300 
301  // invokeMethod() for member function pointer
302  template <typename Func>
303  static typename std::enable_if<QtPrivate::FunctionPointer<Func>::IsPointerToMemberFunction
307  Func function,
310  {
311  return invokeMethodImpl(object, new QtPrivate::QSlotObjectWithNoArgs<Func>(function), type, ret);
312  }
313 
314  template <typename Func>
315  static typename std::enable_if<QtPrivate::FunctionPointer<Func>::IsPointerToMemberFunction
319  Func function,
321  {
322  return invokeMethodImpl(object, new QtPrivate::QSlotObjectWithNoArgs<Func>(function), Qt::AutoConnection, ret);
323  }
324 
325  // invokeMethod() for function pointer (not member)
326  template <typename Func>
327  static typename std::enable_if<!QtPrivate::FunctionPointer<Func>::IsPointerToMemberFunction
330  invokeMethod(QObject *context, Func function,
333  {
334  return invokeMethodImpl(context, new QtPrivate::QFunctorSlotObjectWithNoArgsImplicitReturn<Func>(function), type, ret);
335  }
336 
337  template <typename Func>
338  static typename std::enable_if<!QtPrivate::FunctionPointer<Func>::IsPointerToMemberFunction
341  invokeMethod(QObject *context, Func function,
343  {
345  }
346 
347  // invokeMethod() for Functor
348  template <typename Func>
349  static typename std::enable_if<!QtPrivate::FunctionPointer<Func>::IsPointerToMemberFunction
352  invokeMethod(QObject *context, Func function,
353  Qt::ConnectionType type = Qt::AutoConnection, decltype(function()) *ret = nullptr)
354  {
355  return invokeMethodImpl(context,
356  new QtPrivate::QFunctorSlotObjectWithNoArgs<Func, decltype(function())>(std::move(function)),
357  type,
358  ret);
359  }
360 
361  template <typename Func>
362  static typename std::enable_if<!QtPrivate::FunctionPointer<Func>::IsPointerToMemberFunction
365  invokeMethod(QObject *context, Func function, decltype(function()) *ret)
366  {
367  return invokeMethodImpl(context,
368  new QtPrivate::QFunctorSlotObjectWithNoArgs<Func, decltype(function())>(std::move(function)),
370  ret);
371  }
372 
373 #endif
374 
384  QGenericArgument val9 = QGenericArgument()) const;
385 
386  enum Call {
395  BindableProperty
396  };
397 
398  int static_metacall(Call, int, void **) const;
399  static int metacall(QObject *, Call, int, void **);
400 
401  template <const QMetaObject &MO> static constexpr const QMetaObject *staticMetaObject()
402  {
403  return &MO;
404  }
405 
406  struct SuperData {
408  SuperData() = default;
409  constexpr SuperData(std::nullptr_t) : direct(nullptr) {}
410  constexpr SuperData(const QMetaObject *mo) : direct(mo) {}
411 
412  constexpr const QMetaObject *operator->() const { return operator const QMetaObject *(); }
413 
414 #ifdef QT_NO_DATA_RELOCATION
415  using Getter = const QMetaObject *(*)();
416  Getter indirect = nullptr;
417  constexpr SuperData(Getter g) : direct(nullptr), indirect(g) {}
418  constexpr operator const QMetaObject *() const
419  { return indirect ? indirect() : direct; }
420  template <const QMetaObject &MO> static constexpr SuperData link()
421  { return SuperData(QMetaObject::staticMetaObject<MO>); }
422 #else
423  constexpr operator const QMetaObject *() const
424  { return direct; }
425  template <const QMetaObject &MO> static constexpr SuperData link()
426  { return SuperData(QMetaObject::staticMetaObject<MO>()); }
427 #endif
428  };
429 
430  struct Data { // private data
432  const uint *stringdata;
433  const uint *data;
434  typedef void (*StaticMetacallFunction)(QObject *, QMetaObject::Call, int, void **);
435  StaticMetacallFunction static_metacall;
438  void *extradata; //reserved for future use
439  } d;
440 
441 private:
442  static bool invokeMethodImpl(QObject *object, QtPrivate::QSlotObjectBase *slot, Qt::ConnectionType type, void *ret);
443  friend class QTimer;
444 };
445 
446 class Q_CORE_EXPORT QMetaObject::Connection {
447  void *d_ptr; //QObjectPrivate::Connection*
448  explicit Connection(void *data) : d_ptr(data) { }
449  friend class QObject;
450  friend class QObjectPrivate;
451  friend struct QMetaObject;
452  bool isConnected_helper() const;
453 public:
458 #ifdef Q_QDOC
459  operator bool() const;
460 #else
461  // still using the restricted bool trick here, in order to support
462  // code using copy-init (e.g. `bool ok = connect(...)`)
463  typedef void *Connection::*RestrictedBool;
464  operator RestrictedBool() const { return d_ptr && isConnected_helper() ? &Connection::d_ptr : nullptr; }
465 #endif
466 
467  Connection(Connection &&other) noexcept : d_ptr(qExchange(other.d_ptr, nullptr)) {}
469  void swap(Connection &other) noexcept { qt_ptr_swap(d_ptr, other.d_ptr); }
470 };
471 
473 {
474  lhs.swap(rhs);
475 }
476 
478 { return d.superdata; }
479 
480 namespace QtPrivate {
481  /* Trait that tells is a the Object has a Q_OBJECT macro */
482  template <typename Object> struct HasQ_OBJECT_Macro {
483  template <typename T>
484  static char test(int (T::*)(QMetaObject::Call, int, void **));
485  static int test(int (Object::*)(QMetaObject::Call, int, void **));
486  enum { Value = sizeof(test(&Object::qt_metacall)) == sizeof(int) };
487  };
488 }
489 
491 
492 #endif // QOBJECTDEFS_H
#define value
[5]
Definition: main.cpp:55
QArgument(const char *aName, T &aData)
Definition: qobjectdefs.h:149
QArgument(const char *aName, const T &aData)
Definition: qobjectdefs.h:141
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:85
The QGenericArgument class is an internal helper class for marshalling arguments.
Definition: qobjectdefs.h:117
QGenericArgument(const char *aName=nullptr, const void *aData=nullptr)
Definition: qobjectdefs.h:119
void * data() const
Definition: qobjectdefs.h:121
const char * name() const
Definition: qobjectdefs.h:122
The QGenericReturnArgument class is an internal helper class for marshalling arguments.
Definition: qobjectdefs.h:130
QGenericReturnArgument(const char *aName=nullptr, void *aData=nullptr)
Definition: qobjectdefs.h:132
The QMetaClassInfo class provides additional information about a class.
Definition: qmetaobject.h:362
The QMetaEnum class provides meta-data about an enumerator.
Definition: qmetaobject.h:220
The QMetaMethod class provides meta-data about a member function.
Definition: qmetaobject.h:54
The QMetaProperty class provides meta-data about a property.
Definition: qmetaobject.h:277
The QMetaType class manages named types in the meta-object system.
Definition: qmetatype.h:328
The QObject class is the base class of all Qt objects.
Definition: qobject.h:125
QObject * sender() const
Definition: qobject.cpp:2472
QScopedPointer< QObjectData > d_ptr
Definition: qobject.h:436
QReturnArgument(const char *aName, T &aData)
Definition: qobjectdefs.h:159
The QString class provides a Unicode character string.
Definition: qstring.h:388
The QTimer class provides repetitive and single-shot timers.
Definition: qtimer.h:58
auto signal
auto mo
[7]
auto it unsigned count const
Definition: hb-iter.hh:848
ConnectionType
Definition: qnamespace.h:1304
@ AutoConnection
Definition: qnamespace.h:1305
void
Definition: png.h:1080
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char * method
unsigned int uint
Definition: qglobal.h:334
#define QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(Class)
Definition: qglobal.h:563
Q_CORE_EXPORT const char * qFlagLocation(const char *method)
Definition: qobject.cpp:2368
void swap(QMetaObject::Connection &lhs, QMetaObject::Connection &rhs) noexcept
Definition: qobjectdefs.h:472
GLenum type
Definition: qopengl.h:270
GLuint index
[2]
GLsizei GLenum GLenum * types
const void * indirect
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLboolean GLboolean g
GLuint name
GLfloat n
GLhandleARB obj
[2]
Definition: qopenglext.h:4164
const GLubyte * c
Definition: qopenglext.h:12701
GLdouble s
[6]
Definition: qopenglext.h:235
#define tr(X)
const char property[13]
Definition: qwizard.cpp:136
const char className[16]
[1]
Definition: qwizard.cpp:135
connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection)
obj metaObject() -> className()
QObject::connect nullptr
timer inherits("QTimer")
myObject disconnect()
[26]
QSharedPointer< T > other(t)
[5]
const uint * data
Definition: qobjectdefs.h:433
StaticMetacallFunction static_metacall
Definition: qobjectdefs.h:435
const QtPrivate::QMetaTypeInterface *const * metaTypes
Definition: qobjectdefs.h:437
SuperData superdata
Definition: qobjectdefs.h:431
const uint * stringdata
Definition: qobjectdefs.h:432
const SuperData * relatedMetaObjects
Definition: qobjectdefs.h:436
static constexpr SuperData link()
Definition: qobjectdefs.h:425
constexpr SuperData(std::nullptr_t)
Definition: qobjectdefs.h:409
constexpr SuperData(const QMetaObject *mo)
Definition: qobjectdefs.h:410
constexpr const QMetaObject * operator->() const
Definition: qobjectdefs.h:412
const QMetaObject * direct
Definition: qobjectdefs.h:407
The QMetaObject class contains meta-information about Qt objects.
Definition: qobjectdefs.h:165
static constexpr const QMetaObject * staticMetaObject()
Definition: qobjectdefs.h:401
static std::enable_if<!QtPrivate::FunctionPointer< Func >::IsPointerToMemberFunction &&!std::is_convertible< Func, const char * >::value &&QtPrivate::FunctionPointer< Func >::ArgumentCount==0, bool >::type invokeMethod(QObject *context, Func function, Qt::ConnectionType type=Qt::AutoConnection, typename QtPrivate::FunctionPointer< Func >::ReturnType *ret=nullptr)
Definition: qobjectdefs.h:330
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericArgument val0=QGenericArgument(nullptr), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
Definition: qobjectdefs.h:261
static bool invokeMethod(QObject *obj, const char *member, QGenericArgument val0=QGenericArgument(nullptr), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
Definition: qobjectdefs.h:278
static std::enable_if< QtPrivate::FunctionPointer< Func >::IsPointerToMemberFunction &&!std::is_convertible< Func, const char * >::value &&QtPrivate::FunctionPointer< Func >::ArgumentCount==0, bool >::type invokeMethod(typename QtPrivate::FunctionPointer< Func >::Object *object, Func function, Qt::ConnectionType type=Qt::AutoConnection, typename QtPrivate::FunctionPointer< Func >::ReturnType *ret=nullptr)
Definition: qobjectdefs.h:306
static std::enable_if<!QtPrivate::FunctionPointer< Func >::IsPointerToMemberFunction &&QtPrivate::FunctionPointer< Func >::ArgumentCount==-1 &&!std::is_convertible< Func, const char * >::value, bool >::type invokeMethod(QObject *context, Func function, decltype(function()) *ret)
Definition: qobjectdefs.h:365
static std::enable_if<!QtPrivate::FunctionPointer< Func >::IsPointerToMemberFunction &&QtPrivate::FunctionPointer< Func >::ArgumentCount==-1 &&!std::is_convertible< Func, const char * >::value, bool >::type invokeMethod(QObject *context, Func function, Qt::ConnectionType type=Qt::AutoConnection, decltype(function()) *ret=nullptr)
Definition: qobjectdefs.h:352
QObject * cast(QObject *obj) const
Definition: qobjectdefs.h:171
Connection & operator=(const Connection &other)
static std::enable_if< QtPrivate::FunctionPointer< Func >::IsPointerToMemberFunction &&!std::is_convertible< Func, const char * >::value &&QtPrivate::FunctionPointer< Func >::ArgumentCount==0, bool >::type invokeMethod(typename QtPrivate::FunctionPointer< Func >::Object *object, Func function, typename QtPrivate::FunctionPointer< Func >::ReturnType *ret)
Definition: qobjectdefs.h:318
static bool invokeMethod(QObject *obj, const char *member, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(nullptr), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
Definition: qobjectdefs.h:244
void *Connection::* RestrictedBool
Definition: qobjectdefs.h:463
@ RegisterMethodArgumentMetaType
Definition: qobjectdefs.h:394
@ RegisterPropertyMetaType
Definition: qobjectdefs.h:393
static std::enable_if<!QtPrivate::FunctionPointer< Func >::IsPointerToMemberFunction &&!std::is_convertible< Func, const char * >::value &&QtPrivate::FunctionPointer< Func >::ArgumentCount==0, bool >::type invokeMethod(QObject *context, Func function, typename QtPrivate::FunctionPointer< Func >::ReturnType *ret)
Definition: qobjectdefs.h:341
Connection(Connection &&other) noexcept
Definition: qobjectdefs.h:467
const QMetaObject * superClass() const
Definition: qobjectdefs.h:477
struct QMetaObject::Data d
Connection(const Connection &other)
static char test(int(T::*)(QMetaObject::Call, int, void **))
static int test(int(Object::*)(QMetaObject::Call, int, void **))
Definition: main.cpp:38
Container newInstance()
#define rhs