diff options
author | Stephen Kelly <steveire@gmail.com> | 2017-01-13 18:06:28 +0000 |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2017-01-13 18:06:28 +0000 |
commit | 8cf274317b437717f7e114e463de0652b973841b (patch) | |
tree | 13a8aaad17182a5abd29a7774a3f55a093c600b6 /find-modules/sip_generator.py | |
parent | af9f502f9629766130e171632d2072d563661959 (diff) | |
download | extra-cmake-modules-8cf274317b437717f7e114e463de0652b973841b.tar.gz extra-cmake-modules-8cf274317b437717f7e114e463de0652b973841b.tar.bz2 |
Bindings: Add rules engine for typedefs
Currently this is rather simple, allowing only matching typedefs by
name. If we need more later, we can extend the interface. This will
make it possible to add bindings for the K18n framework.
Diffstat (limited to 'find-modules/sip_generator.py')
-rw-r--r-- | find-modules/sip_generator.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/find-modules/sip_generator.py b/find-modules/sip_generator.py index e5e807ed..a8c164b5 100644 --- a/find-modules/sip_generator.py +++ b/find-modules/sip_generator.py @@ -228,7 +228,7 @@ class SipGenerator(object): elif member.kind == CursorKind.CXX_ACCESS_SPEC_DECL: decl = self._get_access_specifier(member, level + 1) elif member.kind == CursorKind.TYPEDEF_DECL: - decl = self._typedef_get(member, level + 1) + decl = self._typedef_get(container, member, level + 1) elif member.kind == CursorKind.CXX_BASE_SPECIFIER: # # Strip off the leading "class". Except for TypeKind.UNEXPOSED... @@ -627,7 +627,7 @@ class SipGenerator(object): return _get_param_value(text, parameterType) return "" - def _typedef_get(self, typedef, level): + def _typedef_get(self, container, typedef, level): """ Generate the translation for a typedef. @@ -637,10 +637,19 @@ class SipGenerator(object): :return: A string. """ - pad = " " * (level * 4) + sip = { + "name": typedef.displayname, + "annotations": set(), + } + + self.rules.typedef_rules().apply(container, typedef, sip) - decl = pad + "typedef {} {}".format(typedef.underlying_typedef_type.spelling, typedef.displayname) - decl += ";\n" + pad = " " * (level * 4) + if sip["name"]: + decl = pad + "typedef {} {}".format(typedef.underlying_typedef_type.spelling, typedef.displayname) + decl += ";\n" + else: + decl = pad + "// Discarded {}\n".format(SipGenerator.describe(typedef)) return decl def _var_get(self, container, variable, level): |