aboutsummaryrefslogtreecommitdiff
path: root/find-modules/sip_generator.py
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2017-01-13 18:06:28 +0000
committerStephen Kelly <steveire@gmail.com>2017-01-13 18:06:28 +0000
commit8cf274317b437717f7e114e463de0652b973841b (patch)
tree13a8aaad17182a5abd29a7774a3f55a093c600b6 /find-modules/sip_generator.py
parentaf9f502f9629766130e171632d2072d563661959 (diff)
downloadextra-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.py19
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):