diff options
author | Stephen Kelly <steveire@gmail.com> | 2017-01-14 22:13:49 +0000 |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2017-01-15 11:18:50 +0000 |
commit | 636d6acc7adf8bf7169d38833340161dc42d3484 (patch) | |
tree | 2ff1bbefa5808aec21e902b10c9547e359067604 /find-modules/Qt5Ruleset.py | |
parent | 8c347c61abafa68e247ff4664ae658cfa15af932 (diff) | |
download | extra-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.py | 7 |
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 |