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
commitaf9f502f9629766130e171632d2072d563661959 (patch)
treeab77d12271937a6e579538991e8aa5704673665c /find-modules/sip_generator.py
parent39454cd893309c1a00eb7a9254045d52a8ced169 (diff)
downloadextra-cmake-modules-af9f502f9629766130e171632d2072d563661959.tar.gz
extra-cmake-modules-af9f502f9629766130e171632d2072d563661959.tar.bz2
Bindings: Implement ModuleCode and MethodCode databases
Diffstat (limited to 'find-modules/sip_generator.py')
-rw-r--r--find-modules/sip_generator.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/find-modules/sip_generator.py b/find-modules/sip_generator.py
index aae0b694..e5e807ed 100644
--- a/find-modules/sip_generator.py
+++ b/find-modules/sip_generator.py
@@ -186,6 +186,20 @@ class SipGenerator(object):
return True
SipGenerator._report_ignoring(container, member, text)
+ if container.kind.is_translation_unit():
+ #
+ # Any module-related manual code (%ExportedHeaderCode, %ModuleCode, %ModuleHeaderCode or other
+ # module-level directives?
+ #
+ sip = {
+ "name": include_filename,
+ "decl": ""
+ }
+ self.rules.modulecode(include_filename, sip)
+ body = sip["code"]
+ else:
+ body = ""
+
sip = {
"name": container.displayname,
"annotations": set()
@@ -195,7 +209,6 @@ class SipGenerator(object):
if self.dump_privates:
logger.debug("Ignoring private {}".format(SipGenerator.describe(container)))
return ""
- body = ""
base_specifiers = []
template_type_parameters = []
had_copy_constructor = False
@@ -486,6 +499,11 @@ class SipGenerator(object):
modifying_rule = self.rules.function_rules().apply(container, function, sip)
pad = " " * (level * 4)
if sip["name"]:
+ #
+ # Any method-related code (%MethodCode, %VirtualCatcherCode, VirtualCallCode
+ # or other method-related directives)?
+ #
+ self.rules.methodcode(function, sip)
decl = ""
if modifying_rule:
decl += "// Modified {} (by {}):\n".format(SipGenerator.describe(function), modifying_rule) + pad
@@ -501,6 +519,7 @@ class SipGenerator(object):
if sip["template_parameters"]:
decl = pad + "template <" + sip["template_parameters"] + ">\n" + decl
decl += ";\n"
+ decl += sip["code"]
else:
decl = pad + "// Discarded {} (by {})\n".format(SipGenerator.describe(function), modifying_rule)
return decl