aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2017-01-10 08:44:21 +0000
committerStephen Kelly <steveire@gmail.com>2017-01-10 08:44:21 +0000
commit51b7b494213643c9808efecf6a7372d3b63c6f50 (patch)
tree2142c7029e8964b677febca1a7bc61e2ed5dfbaf
parentb5a18440f45d8218dbdd76d76f7fd1e54d352712 (diff)
downloadextra-cmake-modules-51b7b494213643c9808efecf6a7372d3b63c6f50.tar.gz
extra-cmake-modules-51b7b494213643c9808efecf6a7372d3b63c6f50.tar.bz2
Bindings: Correctly handle access specifiers within macros
The Q_DECLARE_TR_FUNCTIONS macro contains a `public:` access specifier, but the sip_generator just pastes the entire macro name. Adjust the generator to extract the correct access specifier.
-rw-r--r--find-modules/sip_generator.py16
-rw-r--r--tests/GenerateSipBindings/cpplib.h4
2 files changed, 17 insertions, 3 deletions
diff --git a/find-modules/sip_generator.py b/find-modules/sip_generator.py
index a67263ff..acdec86e 100644
--- a/find-modules/sip_generator.py
+++ b/find-modules/sip_generator.py
@@ -335,10 +335,22 @@ class SipGenerator(object):
"""
Skip access specifiers embedded in the Q_OBJECT macro.
"""
- access_specifier = self._read_source(member.extent)
- if access_specifier == "Q_OBJECT":
+ access_specifier_text = self._read_source(member.extent)
+ if access_specifier_text == "Q_OBJECT":
return ""
pad = " " * ((level - 1) * 4)
+ access_specifier = ""
+ if (access_specifier_text in ("Q_SIGNALS:", "signals:",
+ "public Q_SLOTS:", "public slots:",
+ "protected Q_SLOTS:", "protected slots:")):
+ access_specifier = access_specifier_text
+ elif member.access_specifier == AccessSpecifier.PRIVATE:
+ access_specifier = "private:"
+ elif member.access_specifier == AccessSpecifier.PROTECTED:
+ access_specifier = "protected:"
+ elif member.access_specifier == AccessSpecifier.PUBLIC:
+ access_specifier = "public:"
+
decl = pad + access_specifier + "\n"
return decl
diff --git a/tests/GenerateSipBindings/cpplib.h b/tests/GenerateSipBindings/cpplib.h
index ba8e9f27..81ad2038 100644
--- a/tests/GenerateSipBindings/cpplib.h
+++ b/tests/GenerateSipBindings/cpplib.h
@@ -5,6 +5,7 @@
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QMap>
+#include <QtCore/QCoreApplication>
#include <functional>
@@ -85,12 +86,13 @@ private:
int* const mNum;
};
-
class NonCopyableByMacro
{
public:
NonCopyableByMacro();
+ Q_DECLARE_TR_FUNCTIONS(NonCopyableByMacro)
+
private:
Q_DISABLE_COPY(NonCopyableByMacro)
};