From 636d6acc7adf8bf7169d38833340161dc42d3484 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 14 Jan 2017 22:13:49 +0000 Subject: 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. --- find-modules/Qt5Ruleset.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'find-modules/Qt5Ruleset.py') 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 -- cgit v1.2.1