8#if defined(__OBJC__) && !defined(__cplusplus)
9# warning "File built in Objective-C mode (.m), but using Qt requires Objective-C++ (.mm)"
12#include <QtCore/qnamespace.h>
13#include <QtCore/qobjectdefs_impl.h>
14#include <QtCore/qtmetamacros.h>
23#ifndef QT_NO_META_MACROS
38#ifndef QT_NO_META_MACROS
39# define QMETHOD_CODE 0
41# define QSIGNAL_CODE 2
42# define QT_PREFIX_CODE(code, a) QT_STRINGIFY(code) #a
43# define QT_STRINGIFY_METHOD(a) QT_PREFIX_CODE(QMETHOD_CODE, a)
44# define QT_STRINGIFY_SLOT(a) QT_PREFIX_CODE(QSLOT_CODE, a)
45# define QT_STRINGIFY_SIGNAL(a) QT_PREFIX_CODE(QSIGNAL_CODE, a)
47# define QLOCATION "\0" __FILE__ ":" QT_STRINGIFY(__LINE__)
48# ifndef QT_NO_KEYWORDS
49# define METHOD(a) qFlagLocation(QT_STRINGIFY_METHOD(a) QLOCATION)
51# define SLOT(a) qFlagLocation(QT_STRINGIFY_SLOT(a) QLOCATION)
52# define SIGNAL(a) qFlagLocation(QT_STRINGIFY_SIGNAL(a) QLOCATION)
54# ifndef QT_NO_KEYWORDS
55# define METHOD(a) QT_STRINGIFY_METHOD(a)
57# define SLOT(a) QT_STRINGIFY_SLOT(a)
58# define SIGNAL(a) QT_STRINGIFY_SIGNAL(a)
62#define Q_ARG(Type, data) QtPrivate::Invoke::argument<Type>(QT_STRINGIFY(Type), data)
63#define Q_RETURN_ARG(Type, data) QtPrivate::Invoke::returnArgument<Type>(QT_STRINGIFY(Type), data)
72class QMetaTypeInterface;
81#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
85 inline QGenericArgument(
const char *aName =
nullptr,
const void *aData =
nullptr)
86 : _data(aData), _name(aName) {}
87 inline void *
data()
const {
return const_cast<void *
>(_data); }
88 inline const char *
name()
const {
return _name; }
107 inline QArgument(
const char *aName,
const T &aData)
115 inline QArgument(
const char *aName, T &aData)
125 inline QReturnArgument(
const char *aName, T &aData)
147#if QT_VERSION <= QT_VERSION_CHECK(7, 0, 0)
148template <
typename... Args>
159 if constexpr ((std::is_lvalue_reference_v<T> && std::is_const_v<std::remove_reference_t<T>>) ||
160 !std::is_reference_v<T>) {
161 return { qMetaTypeInterfaceForType<T>(),
name, std::addressof(
t) };
163 return {
nullptr,
name, std::addressof(
t) };
169 return { qMetaTypeInterfaceForType<T>(),
name, std::addressof(
t) };
178 return std::addressof(
t);
182 return qMetaTypeInterfaceForType<T>();
190{
return a.metaType; }
193template <
typename T>
inline const void *
dataHelper(
const char *) =
delete;
196template <
typename T>
inline const void *
dataHelper(
const char16_t *) =
delete;
210 decltype(
params) parameters;
211 decltype(
names) typeNames;
212 decltype(
types) metaTypes;
236#if !defined(QT_NO_TRANSLATION) || defined(Q_QDOC)
237 QString tr(
const char *
s,
const char *
c,
int n = -1)
const;
242 int methodOffset()
const;
243 int enumeratorOffset()
const;
244 int propertyOffset()
const;
245 int classInfoOffset()
const;
247 int constructorCount()
const;
248 int methodCount()
const;
249 int enumeratorCount()
const;
250 int propertyCount()
const;
251 int classInfoCount()
const;
253 int indexOfConstructor(
const char *constructor)
const;
254 int indexOfMethod(
const char *
method)
const;
255 int indexOfSignal(
const char *
signal)
const;
256 int indexOfSlot(
const char *slot)
const;
257 int indexOfEnumerator(
const char *
name)
const;
258 int indexOfProperty(
const char *
name)
const;
259 int indexOfClassInfo(
const char *
name)
const;
268 static bool checkConnectArgs(
const char *
signal,
const char *
method);
276 const QObject *receiver,
int method_index,
280 const QObject *receiver,
int method_index);
281 static bool disconnectOne(
const QObject *sender,
int signal_index,
282 const QObject *receiver,
int method_index);
284 static void connectSlotsByName(
QObject *
o);
287 static void activate(
QObject *sender,
int signal_index,
void **argv);
288 static void activate(
QObject *sender,
const QMetaObject *,
int local_signal_index,
void **argv);
289 static void activate(
QObject *sender,
int signal_offset,
int local_signal_index,
void **argv);
291#if QT_VERSION <= QT_VERSION_CHECK(7, 0, 0)
292 static bool invokeMethod(
QObject *
obj,
const char *member,
320 val4, val5, val6, val7, val8, val9);
337 val3, val4, val5, val6, val7, val8, val9);
353 val1, val2, val3, val4, val5, val6, val7, val8, val9);
357 template <
typename... Args>
static
367 return invokeMethodImpl(
obj, member,
c,
h.parameterCount(),
h.parameters.data(),
368 h.typeNames.data(),
h.metaTypes.data());
371 template <
typename... Args>
static
380 return invokeMethod(
obj, member,
c,
r, std::forward<Args>(
arguments)...);
383 template <
typename... Args>
static
395 template <
typename... Args>
static
408 template<
typename Functor,
typename FunctorReturnType>
410 template<
typename Functor,
typename FunctorReturnType>
413 template <
typename Func>
414 static std::enable_if_t<!std::disjunction_v<std::is_convertible<Func, const char *>,
423 "QMetaObject::invokeMethod cannot call functions with arguments!");
425 return invokeMethodImpl(
object, QtPrivate::makeCallableObject<Prototype>(std::forward<Func>(
function)),
type,
ret);
428 template <
typename Func>
429 static std::enable_if_t<!std::disjunction_v<std::is_convertible<Func, const char *>,
441#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
454 template <
typename... Args>
463 return newInstanceImpl(
this,
h.parameterCount(),
h.parameters.data(),
464 h.typeNames.data(),
h.metaTypes.data());
481 int static_metacall(Call,
int,
void **)
const;
482 static int metacall(
QObject *, Call,
int,
void **);
498#ifdef QT_NO_DATA_RELOCATION
503 template <const QMetaObject &MO>
static constexpr SuperData link()
504 {
return SuperData(QMetaObject::staticMetaObject<MO>); }
510 {
return SuperData(QMetaObject::staticMetaObject<MO>()); }
527 qsizetype parameterCount,
const void *
const *parameters,
const char *
const *
names,
531 const void **parameters,
const char **typeNames,
542 bool isConnected_helper()
const;
549 operator bool()
const;
554 operator RestrictedBool()
const {
return d_ptr && isConnected_helper() ? &Connection::d_ptr :
nullptr; }
558 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(
Connection)
573 template <
typename T>
576 enum {
Value =
sizeof(
test(&Object::qt_metacall)) ==
sizeof(
int) };
\macro QMetaMethodArgument Q_ARG(Type, const Type &value)
\macro QT_RESTRICTED_CAST_FROM_ASCII
QList< QVariant > arguments
Combined button and popup list for selecting options.
std::enable_if_t<!AreOldStyleArgs< Args... >::value, T > IfNotOldStyleArgs
const QMetaTypeInterface * metaTypeHelper(const T &)
const char * typenameHelper(const T &)
const void * dataHelper(const T &t)
QMetaMethodReturnArgument returnArgument(const char *name, T &t)
std::disjunction< std::is_base_of< QGenericArgument, Args >... > AreOldStyleArgs
constexpr auto typenameHelper()
auto invokeMethodHelper(QMetaMethodReturnArgument r, const Args &... arguments)
std::conditional_t< FunctionPointer< std::decay_t< Func > >::ArgumentCount==-1, ZeroArgFunctor< std::decay_t< Func > >, FunctionPointer< std::decay_t< Func > > > Callable
constexpr const QMetaTypeInterface * qMetaTypeInterfaceForType()
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 return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction function
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
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
void qReturnArg(const T &&)=delete
Q_CORE_EXPORT const char * qFlagLocation(const char *method)
GLboolean GLboolean GLboolean GLboolean a
[7]
GLsizei GLenum GLenum * types
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLfloat GLfloat GLfloat GLfloat h
constexpr void qt_ptr_swap(T *&lhs, T *&rhs) noexcept
const char className[16]
[1]
connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection)
obj metaObject() -> className()
myObject disconnect()
[26]
static char test(int(T::*)(QMetaObject::Call, int, void **))
static int test(int(Object::*)(QMetaObject::Call, int, void **))