From f08ddefac7d4495c28370c84bf9b383d6cf3abd1 Mon Sep 17 00:00:00 2001
From: Robert Griebl <robert.griebl@pelagicore.com>
Date: Mon, 3 Nov 2014 15:52:04 +0100
Subject: [PATCH] Check the Q_SCRIPTABLE tag of signals and slots as early as
 possible.

This makes is possible to generate a valid D-Bus XML from a class that has
e.g.  internal slots with pointer parameters by explicitly marking all D-Bus
exports with Q_SCRIPTABLE and running qdbuscpp2xml with the '-a' switch.

Change-Id: Iab32a0a7f46f2516f6385808bbf35b26c7708b1a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
---
 src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp
index ea24c35a071..dc735df2978 100644
--- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp
+++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp
@@ -243,6 +243,8 @@ static QString generateInterfaceXml(const ClassDef *mo)
         foreach (const FunctionDef &mm, mo->signalList) {
             if (mm.wasCloned)
                 continue;
+            if (!mm.isScriptable && !(flags & QDBusConnection::ExportNonScriptableSignals))
+                continue;
 
             retval += addFunction(mm, true);
         }
@@ -250,10 +252,14 @@ static QString generateInterfaceXml(const ClassDef *mo)
 
     if (flags & (QDBusConnection::ExportScriptableSlots | QDBusConnection::ExportNonScriptableSlots)) {
         foreach (const FunctionDef &slot, mo->slotList) {
+            if (!slot.isScriptable && !(flags & QDBusConnection::ExportNonScriptableSlots))
+                continue;
             if (slot.access == FunctionDef::Public)
               retval += addFunction(slot);
         }
         foreach (const FunctionDef &method, mo->methodList) {
+            if (!method.isScriptable && !(flags & QDBusConnection::ExportNonScriptableSlots))
+                continue;
             if (method.access == FunctionDef::Public)
               retval += addFunction(method);
         }
-- 
GitLab