aboutsummaryrefslogtreecommitdiff
path: root/find-modules/Qt5Ruleset.py
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2017-01-14 22:13:49 +0000
committerStephen Kelly <steveire@gmail.com>2017-01-15 11:18:50 +0000
commit636d6acc7adf8bf7169d38833340161dc42d3484 (patch)
tree2ff1bbefa5808aec21e902b10c9547e359067604 /find-modules/Qt5Ruleset.py
parent8c347c61abafa68e247ff4664ae658cfa15af932 (diff)
downloadextra-cmake-modules-636d6acc7adf8bf7169d38833340161dc42d3484.tar.gz
extra-cmake-modules-636d6acc7adf8bf7169d38833340161dc42d3484.tar.bz2
Bindings: Fix handling of forward declarations
It is not appropriate to decorate each forward declaration with the SIP attribute /External/. That is only needed for forward declarations of types which are defined in a different module. Local forward declarations can be omitted from the sip code. In sip code, a forward declaration followed later by a full class definition is an error. Omit forward declarations unless they are decorated with the external attribute. Introduce a rules database for consumers to decorate them with the attribute as required.
Diffstat (limited to 'find-modules/Qt5Ruleset.py')
-rw-r--r--find-modules/Qt5Ruleset.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/find-modules/Qt5Ruleset.py b/find-modules/Qt5Ruleset.py
index 9392ae18..2d8cfaac 100644
--- a/find-modules/Qt5Ruleset.py
+++ b/find-modules/Qt5Ruleset.py
@@ -107,6 +107,9 @@ def variable_rules():
def typedef_rules():
return []
+def forward_declaration_rules():
+ return []
+
class RuleSet(rules_engine.RuleSet):
"""
SIP file generator rules. This is a set of (short, non-public) functions
@@ -114,6 +117,7 @@ class RuleSet(rules_engine.RuleSet):
"""
def __init__(self):
self._container_db = rules_engine.ContainerRuleDb(container_rules)
+ self._forward_declaration_db = rules_engine.ForwardDeclarationRuleDb(forward_declaration_rules)
self._fn_db = rules_engine.FunctionRuleDb(function_rules)
self._param_db = rules_engine.ParameterRuleDb(parameter_rules)
self._typedef_db = rules_engine.TypedefRuleDb(typedef_rules)
@@ -124,6 +128,9 @@ class RuleSet(rules_engine.RuleSet):
def container_rules(self):
return self._container_db
+ def forward_declaration_rules(self):
+ return self._forward_declaration_db
+
def function_rules(self):
return self._fn_db