From 1790a6994a3536a9d6c73901cb7898615eb64861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= Date: Fri, 17 Aug 2018 05:30:40 +0200 Subject: 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 --- find-modules/sip_generator.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'find-modules/sip_generator.py') 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 -- cgit v1.2.1