summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp41
1 files changed, 39 insertions, 2 deletions
diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
index d637854d2bb..7ab7241c962 100644
--- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
+++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
@@ -80,6 +80,7 @@ private:
QString globalClassName;
QString parentClassName;
+ QString customNamespace;
QString inputFile;
bool skipNamespaces = false;
bool includeMocs = false;
@@ -608,6 +609,13 @@ void QDBusXmlToCpp::writeProxy(const QString &filename,
cs << "#include \"" << headerName << "\"\n\n";
}
+ if (!customNamespace.isEmpty()) {
+ hs << "namespace " << customNamespace << " { \n"
+ "\n";
+ cs << "namespace " << customNamespace << " { \n"
+ "\n";
+ }
+
for (const QDBusIntrospection::Interface *interface : interfaces) {
QString className = classNameForInterface(interface->name, Proxy);
@@ -799,6 +807,13 @@ void QDBusXmlToCpp::writeProxy(const QString &filename,
hs << "};\n\n";
}
+ if (!customNamespace.isEmpty()) {
+ hs << "} // end of namespace " << customNamespace << "\n"
+ << "\n";
+ cs << "} // end of namespace " << customNamespace << "\n"
+ << "\n";
+ }
+
if (!skipNamespaces) {
QStringList last;
QDBusIntrospection::Interfaces::ConstIterator it = interfaces.constBegin();
@@ -827,7 +842,8 @@ void QDBusXmlToCpp::writeProxy(const QString &filename,
// add this class:
if (!name.isEmpty()) {
hs << QString(current.size() * 2, u' ')
- << "using " << name << " = ::" << classNameForInterface(it->constData()->name, Proxy)
+ << "using " << name << " = " << (customNamespace.isEmpty() ? "" : "::")
+ << customNamespace << "::" << classNameForInterface(it->constData()->name, Proxy)
<< ";\n";
}
@@ -836,6 +852,8 @@ void QDBusXmlToCpp::writeProxy(const QString &filename,
++it;
last = current;
} while (true);
+
+ hs << "\n";
}
// close the include guard
@@ -937,6 +955,13 @@ void QDBusXmlToCpp::writeAdaptor(const QString &filename,
if (parentClassName.isEmpty())
parent = u"QObject"_s;
+ if (!customNamespace.isEmpty()) {
+ hs << "namespace " << customNamespace << " { \n"
+ "\n";
+ cs << "namespace " << customNamespace << " { \n"
+ "\n";
+ }
+
for (const QDBusIntrospection::Interface *interface : interfaces) {
QString className = classNameForInterface(interface->name, Adaptor);
@@ -1134,6 +1159,13 @@ void QDBusXmlToCpp::writeAdaptor(const QString &filename,
hs << "};\n\n";
}
+ if (!customNamespace.isEmpty()) {
+ hs << "} // end of namespace " << customNamespace << "\n"
+ << "\n";
+ cs << "} // end of namespace " << customNamespace << "\n"
+ << "\n";
+ }
+
// close the include guard
hs << "#endif\n";
@@ -1188,6 +1220,10 @@ int QDBusXmlToCpp::run(const QCoreApplication &app)
u"classname"_s);
parser.addOption(classNameOption);
+ QCommandLineOption namespaceOption(QStringList{u"namespace"_s},
+ u"Put all generated classes into the namespace <namespace>. "_s, u"namespace"_s);
+ parser.addOption(namespaceOption);
+
QCommandLineOption addIncludeOption(QStringList{u"i"_s, u"include"_s},
u"Add #include \"filename\" to the output"_s, u"filename"_s);
parser.addOption(addIncludeOption);
@@ -1205,7 +1241,7 @@ int QDBusXmlToCpp::run(const QCoreApplication &app)
parser.addOption(mocIncludeOption);
QCommandLineOption noNamespaceOption(QStringList{u"N"_s, u"no-namespaces"_s},
- u"Don't use namespaces"_s);
+ u"Do not export the generated class into the D-Bus specific namespace"_s);
parser.addOption(noNamespaceOption);
QCommandLineOption proxyCodeOption(QStringList{u"p"_s, u"proxy"_s},
@@ -1223,6 +1259,7 @@ int QDBusXmlToCpp::run(const QCoreApplication &app)
includes = parser.values(addIncludeOption);
globalIncludes = parser.values(addGlobalIncludeOption);
parentClassName = parser.value(adapterParentOption);
+ customNamespace = parser.value(namespaceOption);
includeMocs = parser.isSet(mocIncludeOption);
skipNamespaces = parser.isSet(noNamespaceOption);
QString proxyFile = parser.value(proxyCodeOption);