21 constexpr inline QMetaMethod() : mobj(
nullptr), data({
nullptr }) {}
23 QByteArray methodSignature()
const;
24 QByteArray name()
const;
25 QByteArrayView nameView()
const;
26 const char *typeName()
const;
27 int returnType()
const;
28 QMetaType returnMetaType()
const;
29 int parameterCount()
const;
30 int parameterType(
int index)
const;
31 QMetaType parameterMetaType(
int index)
const;
32 void getParameterTypes(
int *types)
const;
33 QList<QByteArray> parameterTypes()
const;
34 QByteArray parameterTypeName(
int index)
const;
35 QList<QByteArray> parameterNames()
const;
36 const char *tag()
const;
37 enum Access { Private, Protected, Public };
38 Access access()
const;
40 Method = QMETHOD_CODE,
41 Signal QT7_ONLY(= QSIGNAL_CODE),
42 Slot QT7_ONLY(= QSLOT_CODE),
45 MethodType methodType()
const;
46 enum Attributes { Compatibility = 0x1, Cloned = 0x2, Scriptable = 0x4 };
47 int attributes()
const;
48 int methodIndex()
const;
49 int relativeMethodIndex()
const;
53 inline const QMetaObject *enclosingMetaObject()
const {
return mobj; }
55#if QT_VERSION <= QT_VERSION_CHECK(7
, 0
, 0
)
56 bool invoke(QObject *object,
57 Qt::ConnectionType connectionType,
58 QGenericReturnArgument returnValue,
59 QGenericArgument val0 = QGenericArgument(
nullptr),
60 QGenericArgument val1 = QGenericArgument(),
61 QGenericArgument val2 = QGenericArgument(),
62 QGenericArgument val3 = QGenericArgument(),
63 QGenericArgument val4 = QGenericArgument(),
64 QGenericArgument val5 = QGenericArgument(),
65 QGenericArgument val6 = QGenericArgument(),
66 QGenericArgument val7 = QGenericArgument(),
67 QGenericArgument val8 = QGenericArgument(),
68 QGenericArgument val9 = QGenericArgument())
const;
69 inline bool invoke(QObject *object,
70 QGenericReturnArgument returnValue,
71 QGenericArgument val0 = QGenericArgument(
nullptr),
72 QGenericArgument val1 = QGenericArgument(),
73 QGenericArgument val2 = QGenericArgument(),
74 QGenericArgument val3 = QGenericArgument(),
75 QGenericArgument val4 = QGenericArgument(),
76 QGenericArgument val5 = QGenericArgument(),
77 QGenericArgument val6 = QGenericArgument(),
78 QGenericArgument val7 = QGenericArgument(),
79 QGenericArgument val8 = QGenericArgument(),
80 QGenericArgument val9 = QGenericArgument())
const
82 return invoke(object, Qt::AutoConnection, returnValue,
83 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
85 inline bool invoke(QObject *object,
86 Qt::ConnectionType connectionType,
87 QGenericArgument val0,
88 QGenericArgument val1 = QGenericArgument(),
89 QGenericArgument val2 = QGenericArgument(),
90 QGenericArgument val3 = QGenericArgument(),
91 QGenericArgument val4 = QGenericArgument(),
92 QGenericArgument val5 = QGenericArgument(),
93 QGenericArgument val6 = QGenericArgument(),
94 QGenericArgument val7 = QGenericArgument(),
95 QGenericArgument val8 = QGenericArgument(),
96 QGenericArgument val9 = QGenericArgument())
const
98 return invoke(object, connectionType, QGenericReturnArgument(),
99 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
101 inline bool invoke(QObject *object,
102 QGenericArgument val0,
103 QGenericArgument val1 = QGenericArgument(),
104 QGenericArgument val2 = QGenericArgument(),
105 QGenericArgument val3 = QGenericArgument(),
106 QGenericArgument val4 = QGenericArgument(),
107 QGenericArgument val5 = QGenericArgument(),
108 QGenericArgument val6 = QGenericArgument(),
109 QGenericArgument val7 = QGenericArgument(),
110 QGenericArgument val8 = QGenericArgument(),
111 QGenericArgument val9 = QGenericArgument())
const
113 return invoke(object, Qt::AutoConnection, QGenericReturnArgument(),
114 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
116 bool invokeOnGadget(
void *gadget,
117 QGenericReturnArgument returnValue,
118 QGenericArgument val0 = QGenericArgument(
nullptr),
119 QGenericArgument val1 = QGenericArgument(),
120 QGenericArgument val2 = QGenericArgument(),
121 QGenericArgument val3 = QGenericArgument(),
122 QGenericArgument val4 = QGenericArgument(),
123 QGenericArgument val5 = QGenericArgument(),
124 QGenericArgument val6 = QGenericArgument(),
125 QGenericArgument val7 = QGenericArgument(),
126 QGenericArgument val8 = QGenericArgument(),
127 QGenericArgument val9 = QGenericArgument())
const;
128 inline bool invokeOnGadget(
void *gadget,
129 QGenericArgument val0,
130 QGenericArgument val1 = QGenericArgument(),
131 QGenericArgument val2 = QGenericArgument(),
132 QGenericArgument val3 = QGenericArgument(),
133 QGenericArgument val4 = QGenericArgument(),
134 QGenericArgument val5 = QGenericArgument(),
135 QGenericArgument val6 = QGenericArgument(),
136 QGenericArgument val7 = QGenericArgument(),
137 QGenericArgument val8 = QGenericArgument(),
138 QGenericArgument val9 = QGenericArgument())
const
140 return invokeOnGadget(gadget, QGenericReturnArgument(),
141 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
145 template <
typename ReturnArg,
typename... Args>
149 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
151 invoke(QObject *obj, Qt::ConnectionType c, QTemplatedMetaMethodReturnArgument<ReturnArg> r,
152 Args &&... arguments)
const
154 auto h = QtPrivate::invokeMethodHelper(r, std::forward<Args>(arguments)...);
155 return invokeImpl(*
this, obj, c, h.parameterCount(), h.parameters.data(),
156 h.typeNames.data(), h.metaTypes.data());
159 template <
typename... Args>
163 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
165 invoke(QObject *obj, Qt::ConnectionType c, Args &&... arguments)
const
167 return invoke(obj, c, QTemplatedMetaMethodReturnArgument<
void>{}, std::forward<Args>(arguments)...);
170 template <
typename ReturnArg,
typename... Args>
174 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
176 invoke(QObject *obj, QTemplatedMetaMethodReturnArgument<ReturnArg> r, Args &&... arguments)
const
178 return invoke(obj, Qt::AutoConnection, r, std::forward<Args>(arguments)...);
181 template <
typename... Args>
185 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
187 invoke(QObject *obj, Args &&... arguments)
const
189 return invoke(obj, Qt::AutoConnection, std::forward<Args>(arguments)...);
192 template <
typename ReturnArg,
typename... Args>
196 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
198 invokeOnGadget(
void *gadget, QTemplatedMetaMethodReturnArgument<ReturnArg> r, Args &&... arguments)
const
200 auto h = QtPrivate::invokeMethodHelper(r, std::forward<Args>(arguments)...);
201 return invokeImpl(*
this, gadget, Qt::ConnectionType(-1), h.parameterCount(),
202 h.parameters.data(), h.typeNames.data(), h.metaTypes.data());
205 template <
typename... Args>
209 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
211 invokeOnGadget(
void *gadget, Args &&... arguments)
const
213 return invokeOnGadget(gadget, QTemplatedMetaMethodReturnArgument<
void>{}, std::forward<Args>(arguments)...);
216 inline bool isValid()
const {
return mobj !=
nullptr; }
218 template <
typename PointerToMemberFunction>
219 static inline QMetaMethod fromSignal(PointerToMemberFunction signal)
221 typedef QtPrivate::FunctionPointer<PointerToMemberFunction> SignalType;
222 static_assert(QtPrivate::HasQ_OBJECT_Macro<
typename SignalType::Object>::Value,
223 "No Q_OBJECT in the class with the signal");
224 return fromSignalImpl(&SignalType::Object::staticMetaObject,
225 reinterpret_cast<
void **>(&signal));
229 static bool invokeImpl(QMetaMethod self,
void *target, Qt::ConnectionType, qsizetype paramCount,
230 const void *
const *parameters,
const char *
const *typeNames,
231 const QtPrivate::QMetaTypeInterface *
const *metaTypes);
232 static QMetaMethod fromSignalImpl(
const QMetaObject *,
void **);
233 static QMetaMethod fromRelativeMethodIndex(
const QMetaObject *mobj,
int index);
234 static QMetaMethod fromRelativeConstructorIndex(
const QMetaObject *mobj,
int index);
240 uint name()
const {
return d[0]; }
241 uint argc()
const {
return d[1]; }
242 uint parameters()
const {
return d[2]; }
243 uint tag()
const {
return d[3]; }
244 uint flags()
const {
return d[4]; }
245 uint metaTypeOffset()
const {
return d[5]; }
246 bool operator==(
const Data &other)
const {
return d == other.d; }
251 constexpr QMetaMethod(
const QMetaObject *metaObject,
const Data &data_)
252 : mobj(metaObject), data(data_)
256 const QMetaObject *mobj;
258 friend struct QMetaObject;
259 friend struct QMetaObjectPrivate;
260 friend class QObject;
263 friend bool comparesEqual(
const QMetaMethod &lhs,
const QMetaMethod &rhs)
noexcept
264 {
return lhs.data == rhs.data; }
265 Q_DECLARE_EQUALITY_COMPARABLE(QMetaMethod)
341 constexpr QMetaProperty() : mobj(
nullptr), data({
nullptr }) {}
343 const char *name()
const;
344 const char *typeName()
const;
345#if QT_DEPRECATED_SINCE(6
, 0
)
347 QT_WARNING_DISABLE_DEPRECATED
348 QT_DEPRECATED_VERSION_6_0
349 QVariant::Type type()
const
350 {
int t = userType();
return t >= QMetaType::User ? QVariant::UserType : QVariant::Type(t); }
353 int userType()
const {
return typeId(); }
354 int typeId()
const {
return metaType().id(); }
355 QMetaType metaType()
const;
356 int propertyIndex()
const;
357 int relativePropertyIndex()
const;
359 bool isReadable()
const;
360 bool isWritable()
const;
361 bool isResettable()
const;
362 bool isDesignable()
const;
363 bool isScriptable()
const;
364 bool isStored()
const;
366 bool isConstant()
const;
367 bool isFinal()
const;
368 bool isRequired()
const;
369 bool isBindable()
const;
371 bool isFlagType()
const;
372 bool isEnumType()
const;
373 QMetaEnum enumerator()
const;
375 bool hasNotifySignal()
const;
376 QMetaMethod notifySignal()
const;
377 int notifySignalIndex()
const;
379 int revision()
const;
381 QVariant read(
const QObject *obj)
const;
382 bool write(QObject *obj,
const QVariant &value)
const;
383 bool write(QObject *obj, QVariant &&value)
const;
384 bool reset(QObject *obj)
const;
386 QUntypedBindable bindable(QObject *object)
const;
388 QVariant readOnGadget(
const void *gadget)
const;
389 bool writeOnGadget(
void *gadget,
const QVariant &value)
const;
390 bool writeOnGadget(
void *gadget, QVariant &&value)
const;
391 bool resetOnGadget(
void *gadget)
const;
393 bool hasStdCppSet()
const;
394 bool isAlias()
const;
395 inline bool isValid()
const {
return isReadable(); }
396 inline const QMetaObject *enclosingMetaObject()
const {
return mobj; }
399#if QT_DEPRECATED_SINCE(6
, 4
)
400 QT_DEPRECATED_VERSION_X_6_4(
"obsolete, simply returns typeId()")
401 int registerPropertyType()
const;
407 uint name()
const {
return d[0]; }
408 uint type()
const {
return d[1]; }
409 uint flags()
const {
return d[2]; }
410 uint notifyIndex()
const {
return d[3]; }
411 uint revision()
const {
return d[4]; }
413 int index(
const QMetaObject *mobj)
const;
418 QMetaProperty(
const QMetaObject *mobj,
int index);
419 static Data getMetaPropertyData(
const QMetaObject *mobj,
int index);
421 const QMetaObject *mobj;
424 friend struct QMetaObject;
425 friend struct QMetaObjectPrivate;