****************************************************************************/
#include "qdbusmetatype.h"
+#include "qdbusmetatype_p.h"
#include <string.h>
#include "qdbus_symbols_p.h"
#include <qreadwritelock.h>
#include <qvector.h>
-#include "qdbusmetatype_p.h"
#include "qdbusargument_p.h"
#include "qdbusutil_p.h"
#include "qdbusunixfiledescriptor.h"
reinterpret_cast<QDBusMetaType::DemarshallFunction>(df));
}
-int QDBusMetaTypeId::message;
-int QDBusMetaTypeId::argument;
-int QDBusMetaTypeId::variant;
-int QDBusMetaTypeId::objectpath;
-int QDBusMetaTypeId::signature;
-int QDBusMetaTypeId::error;
-int QDBusMetaTypeId::unixfd;
-
void QDBusMetaTypeId::init()
{
static volatile bool initialized = false;
// reentrancy is not a problem since everything else is locked on their own
// set the guard variable at the end
if (!initialized) {
-#ifndef QT_BOOTSTRAPPED
- // register our types with QtCore
- message = qRegisterMetaType<QDBusMessage>("QDBusMessage");
- error = qRegisterMetaType<QDBusError>("QDBusError");
-#endif
- argument = qRegisterMetaType<QDBusArgument>("QDBusArgument");
- variant = qRegisterMetaType<QDBusVariant>("QDBusVariant");
- objectpath = qRegisterMetaType<QDBusObjectPath>("QDBusObjectPath");
- signature = qRegisterMetaType<QDBusSignature>("QDBusSignature");
- unixfd = qRegisterMetaType<QDBusUnixFileDescriptor>("QDBusUnixFileDescriptor");
+ // register our types with QtCore (calling qMetaTypeId<T>() does this implicitly)
+ (void)message();
+ (void)argument();
+ (void)variant();
+ (void)objectpath();
+ (void)signature();
+ (void)error();
+ (void)unixfd();
#ifndef QDBUS_NO_SPECIALTYPES
// and register QtCore's with us
qDBusRegisterMetaType<QList<QDBusUnixFileDescriptor> >();
#endif
-#if QT_BOOTSTRAPPED
- const int lastId = qDBusRegisterMetaType<QList<QDBusUnixFileDescriptor> >();
- message = lastId + 1;
- error = lastId + 2;
-#endif
initialized = true;
}
}
/*!
\class QDBusMetaType
+ \inmodule QtDBus
\brief Meta-type registration system for the QtDBus module.
\internal
return QVariant::String;
case DBUS_TYPE_OBJECT_PATH:
- return QDBusMetaTypeId::objectpath;
+ return QDBusMetaTypeId::objectpath();
case DBUS_TYPE_SIGNATURE:
- return QDBusMetaTypeId::signature;
+ return QDBusMetaTypeId::signature();
case DBUS_TYPE_UNIX_FD:
- return QDBusMetaTypeId::unixfd;
+ return QDBusMetaTypeId::unixfd();
case DBUS_TYPE_VARIANT:
- return QDBusMetaTypeId::variant;
+ return QDBusMetaTypeId::variant();
case DBUS_TYPE_ARRAY: // special case
switch (signature[1]) {
}
QDBusMetaTypeId::init();
- if (type == QDBusMetaTypeId::variant)
+ if (type == QDBusMetaTypeId::variant())
return DBUS_TYPE_VARIANT_AS_STRING;
- else if (type == QDBusMetaTypeId::objectpath)
+ else if (type == QDBusMetaTypeId::objectpath())
return DBUS_TYPE_OBJECT_PATH_AS_STRING;
- else if (type == QDBusMetaTypeId::signature)
+ else if (type == QDBusMetaTypeId::signature())
return DBUS_TYPE_SIGNATURE_AS_STRING;
- else if (type == QDBusMetaTypeId::unixfd)
+ else if (type == QDBusMetaTypeId::unixfd())
return DBUS_TYPE_UNIX_FD_AS_STRING;
// try the database