bool qDBusInterfaceInObject(QObject *obj, const QString &interface_name) { const QMetaObject *mo = obj->metaObject(); for ( ; mo != &QObject::staticMetaObject; mo = mo->superClass()) if (interface_name == qDBusInterfaceFromMetaObject(mo)) return true; return false; }
QString qDBusGenerateMetaObjectXml(QString interface, const QMetaObject *mo, const QMetaObject *base, int flags) { if (interface.isEmpty()) // generate the interface name from the meta object interface = qDBusInterfaceFromMetaObject(mo); QString xml; int idx = mo->indexOfClassInfo(QCLASSINFO_DBUS_INTROSPECTION); if (idx >= mo->classInfoOffset()) return QString::fromUtf8(mo->classInfo(idx).value()); else xml = generateInterfaceXml(mo, flags, base->methodCount(), base->propertyCount()); if (xml.isEmpty()) return QString(); // don't add an empty interface return QString::fromLatin1(" <interface name=\"%1\">\n%2 </interface>\n") .arg(interface, xml); }