// qDBusParametersForMethod has already complained
return;
if (inputCount + 1 != types.count() ||
- types.at(inputCount) == QDBusMetaTypeId::message) {
+ types.at(inputCount) == QDBusMetaTypeId::message()) {
// invalid signal signature
// qDBusParametersForMethod has not yet complained about this one
qWarning("QDBusAbstractAdaptor: Cannot relay signal %s::%s",
metaTypes[0] = returnType;
bool hasMessage = false;
if (inputCount > 0 &&
- metaTypes.at(inputCount) == QDBusMetaTypeId::message) {
+ metaTypes.at(inputCount) == QDBusMetaTypeId::message()) {
// "no input parameters" is allowed as long as the message meta type is there
hasMessage = true;
--inputCount;
Q_UNUSED(object);
int n = metaTypes.count() - 1;
- if (metaTypes[n] == QDBusMetaTypeId::message)
+ if (metaTypes[n] == QDBusMetaTypeId::message())
--n;
if (msg.arguments().count() < n)
// try with no parameters, but with a QDBusMessage
slotData.slotIdx = ::findSlot(mo, memberName, flags, QString(), slotData.metaTypes);
if (slotData.metaTypes.count() != 2 ||
- slotData.metaTypes.at(1) != QDBusMetaTypeId::message) {
+ slotData.metaTypes.at(1) != QDBusMetaTypeId::message()) {
// not found
// save the negative lookup
slotData.slotIdx = -1;
int pCount = qMin(msg.arguments().count(), metaTypes.count() - 1);
for (i = 1; i <= pCount; ++i) {
int id = metaTypes[i];
- if (id == QDBusMetaTypeId::message)
+ if (id == QDBusMetaTypeId::message())
break;
const QVariant &arg = msg.arguments().at(i - 1);
}
}
- if (metaTypes.count() > i && metaTypes[i] == QDBusMetaTypeId::message) {
+ if (metaTypes.count() > i && metaTypes[i] == QDBusMetaTypeId::message()) {
params.append(const_cast<void*>(static_cast<const void*>(&msg)));
++i;
}
if (buildSignature) {
hook.signature.clear();
for (int i = 1; i < hook.params.count(); ++i)
- if (hook.params.at(i) != QDBusMetaTypeId::message)
+ if (hook.params.at(i) != QDBusMetaTypeId::message())
hook.signature += QLatin1String( QDBusMetaType::typeToSignature( hook.params.at(i) ) );
}
return;
}
- if (id == QDBusMetaTypeId::variant) {
+ if (id == QDBusMetaTypeId::variant()) {
*reinterpret_cast<QDBusVariant *>(to) = arg.value<QDBusVariant>();
return;
- } else if (id == QDBusMetaTypeId::objectpath) {
+ } else if (id == QDBusMetaTypeId::objectpath()) {
*reinterpret_cast<QDBusObjectPath *>(to) = arg.value<QDBusObjectPath>();
return;
- } else if (id == QDBusMetaTypeId::signature) {
+ } else if (id == QDBusMetaTypeId::signature()) {
*reinterpret_cast<QDBusSignature *>(to) = arg.value<QDBusSignature>();
return;
}
}
// if we got here, it's either an un-dermarshalled type or a mismatch
- if (arg.userType() != QDBusMetaTypeId::argument) {
+ if (arg.userType() != QDBusMetaTypeId::argument()) {
// it's a mismatch
//qWarning?
return;
return PropertyWriteFailed;
}
- if (id != QMetaType::QVariant && value.userType() == QDBusMetaTypeId::argument) {
+ if (id != QMetaType::QVariant && value.userType() == QDBusMetaTypeId::argument()) {
// we have to demarshall before writing
void *null = 0;
QVariant other(id, null);
QByteArray tmpSignature;
const char *signature = 0;
- if (id == QDBusMetaTypeId::argument) {
+ if (id == QDBusMetaTypeId::argument()) {
// take the signature from the QDBusArgument object we're marshalling
tmpSignature =
qvariant_cast<QDBusArgument>(value).currentSignature().toLatin1();
}
// intercept QDBusArgument parameters here
- if (id == QDBusMetaTypeId::argument) {
+ if (id == QDBusMetaTypeId::argument()) {
QDBusArgument dbusargument = qvariant_cast<QDBusArgument>(arg);
QDBusArgumentPrivate *d = QDBusArgumentPrivate::d(dbusargument);
if (!d->message)
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 (calling qMetaTypeId<T>() does this implicitly)
- message = qMetaTypeId<QDBusMessage>();
- error = qMetaTypeId<QDBusError>();
-#endif
- argument = qMetaTypeId<QDBusArgument>();
- variant = qMetaTypeId<QDBusVariant>();
- objectpath = qMetaTypeId<QDBusObjectPath>();
- signature = qMetaTypeId<QDBusSignature>();
- unixfd = qMetaTypeId<QDBusUnixFileDescriptor>();
+ (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
-#ifdef QT_BOOTSTRAPPED
- const int lastId = qDBusRegisterMetaType<QList<QDBusUnixFileDescriptor> >();
- message = lastId + 1;
- error = lastId + 2;
-#endif
initialized = true;
}
}
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
#include <qdbusmetatype.h>
+#include <qdbusmessage.h>
+#include <qdbusargument.h>
+#include <qdbusextratypes.h>
+#include <qdbuserror.h>
+#include <qdbusunixfiledescriptor.h>
+
QT_BEGIN_NAMESPACE
struct QDBusMetaTypeId
{
- static int message; // QDBusMessage
- static int argument; // QDBusArgument
- static int variant; // QDBusVariant
- static int objectpath; // QDBusObjectPath
- static int signature; // QDBusSignature
- static int error; // QDBusError
- static int unixfd; // QDBusUnixFileDescriptor
+ static int message(); // QDBusMessage
+ static int argument(); // QDBusArgument
+ static int variant(); // QDBusVariant
+ static int objectpath(); // QDBusObjectPath
+ static int signature(); // QDBusSignature
+ static int error(); // QDBusError
+ static int unixfd(); // QDBusUnixFileDescriptor
static void init();
};
+inline int QDBusMetaTypeId::message()
+#ifdef QT_BOOTSTRAPPED
+{ return qDBusRegisterMetaType<QList<QDBusUnixFileDescriptor> >() + 1; }
+#else
+{ return qMetaTypeId<QDBusMessage>(); }
+#endif
+
+inline int QDBusMetaTypeId::argument()
+{ return qMetaTypeId<QDBusArgument>(); }
+
+inline int QDBusMetaTypeId::variant()
+{ return qMetaTypeId<QDBusVariant>(); }
+
+inline int QDBusMetaTypeId::objectpath()
+{ return qMetaTypeId<QDBusObjectPath>(); }
+
+inline int QDBusMetaTypeId::signature()
+{ return qMetaTypeId<QDBusSignature>(); }
+
+inline int QDBusMetaTypeId::error()
+#ifdef QT_BOOTSTRAPPED
+{ return qDBusRegisterMetaType<QList<QDBusUnixFileDescriptor> >() + 2; }
+#else
+{ return qMetaTypeId<QDBusError>(); }
+#endif
+
+inline int QDBusMetaTypeId::unixfd()
+{ return qMetaTypeId<QDBusUnixFileDescriptor>(); }
+
QT_END_NAMESPACE
#endif
return -1;
}
- if (id == QDBusMetaTypeId::message)
+ if (id == QDBusMetaTypeId::message())
seenMessage = true;
else if (QDBusMetaType::typeToSignature(id) == 0)
return -1;
// success
// construct the expected signature
int count = metaTypes.count() - 1;
- if (count == 1 && metaTypes.at(1) == QDBusMetaTypeId::message) {
+ if (count == 1 && metaTypes.at(1) == QDBusMetaTypeId::message()) {
// wildcard slot, can receive anything, so don't set the signature
return true;
}
- if (metaTypes.at(count) == QDBusMetaTypeId::message)
+ if (metaTypes.at(count) == QDBusMetaTypeId::message())
--count;
setMetaTypes(count, count ? metaTypes.constData() + 1 : 0);
QByteArray receivedSignature;
if (reply.arguments().count() >= 1) {
- if (reply.arguments().at(0).userType() == QDBusMetaTypeId::argument) {
+ if (reply.arguments().at(0).userType() == QDBusMetaTypeId::argument()) {
// compare signatures instead
QDBusArgument arg = qvariant_cast<QDBusArgument>(reply.arguments().at(0));
receivedSignature = arg.currentSignature().toLatin1();
continue; // invalid form
if (isSignal && inputCount + 1 != types.count())
continue; // signal with output arguments?
- if (isSignal && types.at(inputCount) == QDBusMetaTypeId::message)
+ if (isSignal && types.at(inputCount) == QDBusMetaTypeId::message())
continue; // signal with QDBusMessage argument?
if (isSignal && mm.attributes() & QMetaMethod::Cloned)
continue; // cloned signal?
bool isScriptable = mm.attributes() & QMetaMethod::Scriptable;
for (j = 1; j < types.count(); ++j) {
// input parameter for a slot or output for a signal
- if (types.at(j) == QDBusMetaTypeId::message) {
+ if (types.at(j) == QDBusMetaTypeId::message()) {
isScriptable = true;
continue;
}
return QString(); // invalid form
if (isSignal && inputCount + 1 != types.count())
return QString(); // signal with output arguments?
- if (isSignal && types.at(inputCount) == QDBusMetaTypeId::message)
+ if (isSignal && types.at(inputCount) == QDBusMetaTypeId::message())
return QString(); // signal with QDBusMessage argument?
bool isScriptable = mm.isScriptable;
for (int j = 1; j < types.count(); ++j) {
// input parameter for a slot or output for a signal
- if (types.at(j) == QDBusMetaTypeId::message) {
+ if (types.at(j) == QDBusMetaTypeId::message()) {
isScriptable = true;
continue;
}