diff options
author | Stefan Brüns <stefan.bruens@rwth-aachen.de> | 2018-08-17 05:30:40 +0200 |
---|---|---|
committer | Stefan Brüns <stefan.bruens@rwth-aachen.de> | 2018-08-25 04:14:41 +0200 |
commit | 1790a6994a3536a9d6c73901cb7898615eb64861 (patch) | |
tree | 938cc8383b41bc1556e1ce6f3e5f7170b08df8e6 /find-modules/sip_generator.py | |
parent | 4b59c77083625219238d6e12d11554b7fd685a7a (diff) | |
download | extra-cmake-modules-1790a6994a3536a9d6c73901cb7898615eb64861.tar.gz extra-cmake-modules-1790a6994a3536a9d6c73901cb7898615eb64861.tar.bz2 |
Bindings: Add support for scoped enums
Summary:
Keep the enum intact by emitting the class keyword in case the enum is
scoped.
Use the complete enum scope for parameter values, the enclosing scope is
only correct to use for unscoped enums.
The python Cursor.is_scoped_enum() method has been added with LLVM/Clang
version 5.0.
BUG: 397154
Test Plan: build kcoreaddons
Reviewers: #frameworks, mpyne
Reviewed By: mpyne
Subscribers: mpyne, kde-frameworks-devel, kde-buildsystem
Tags: #frameworks, #build_system
Differential Revision: https://phabricator.kde.org/D14908
Diffstat (limited to 'find-modules/sip_generator.py')
-rw-r--r-- | find-modules/sip_generator.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/find-modules/sip_generator.py b/find-modules/sip_generator.py index 58ae1829..1ebaba61 100644 --- a/find-modules/sip_generator.py +++ b/find-modules/sip_generator.py @@ -416,7 +416,10 @@ class SipGenerator(object): def _enum_get(self, container, enum, level): pad = " " * (level * 4) - decl = pad + "enum {} {{\n".format(enum.displayname) + scoped = "" + if enum.is_scoped_enum(): + scoped = "class " + decl = pad + "enum {}{} {{\n".format(scoped, enum.displayname) enumerations = [] for enum in enum.get_children(): # @@ -609,7 +612,10 @@ class SipGenerator(object): typeText = text typeInit = "" - prefix = parameterType.spelling.rsplit("::", 1)[0] + if parameterType.kind == TypeKind.ENUM and parameterType.get_declaration().is_scoped_enum(): + prefix = parameterType.spelling + else: + prefix = parameterType.spelling.rsplit("::", 1)[0] if "::" in typeText: typeText = typeText.rsplit("::", 1)[1] return prefix + "::" + typeText + typeInit |