File indexing completed on 2024-04-14 03:50:22

0001 
0002 import os
0003 import sys
0004 
0005 import rules_engine
0006 sys.path.append(os.path.dirname(os.path.dirname(rules_engine.__file__)))
0007 import Qt5Ruleset
0008 
0009 def local_container_rules():
0010     return [
0011         [".*", "Shared", ".*", ".*", ".*", rules_engine.discard_QSharedData_base]
0012     ]
0013 
0014 def local_forward_declaration_rules():
0015     return [
0016         [".*", "ExternalFwdDecl", ".*", rules_engine.mark_forward_declaration_external]
0017     ]
0018 
0019 def local_function_rules():
0020     return [
0021         ["TypedefUser", "setTagPattern", ".*", ".*", ".*", rules_engine.function_discard],
0022     ]
0023 
0024 def local_typedef_rules():
0025     return [
0026         [".*", "TagFormatter", rules_engine.typedef_discard],
0027     ]
0028 
0029 def methodGenerator(function, sip, entry):
0030     sip["code"] = """
0031         %MethodCode
0032             sipRes = {} + myAcumulate(a0);
0033         %End
0034     """.format(entry["param"])
0035 
0036 
0037 class RuleSet(Qt5Ruleset.RuleSet):
0038     def __init__(self):
0039         Qt5Ruleset.RuleSet.__init__(self)
0040         self._container_db = rules_engine.ContainerRuleDb(lambda: local_container_rules() + Qt5Ruleset.container_rules())
0041         self._forward_declaration_db = rules_engine.ForwardDeclarationRuleDb(lambda: local_forward_declaration_rules() + Qt5Ruleset.forward_declaration_rules())
0042         self._fn_db = rules_engine.FunctionRuleDb(lambda: local_function_rules() + Qt5Ruleset.function_rules())
0043         self._typedef_db = rules_engine.TypedefRuleDb(lambda: local_typedef_rules() + Qt5Ruleset.typedef_rules())
0044         self._modulecode = rules_engine.ModuleCodeDb({
0045             "cpplib.h": {
0046             "code": """
0047 %ModuleCode
0048 int myAcumulate(const QList<int> *list) {
0049     return std::accumulate(list->begin(), list->end(), 0);
0050 }
0051 %End\n
0052             """
0053             }
0054             })
0055 
0056         self._methodcode = rules_engine.MethodCodeDb({
0057             "SomeNS": {
0058                 "customMethod": {
0059                     "code": """
0060                     %MethodCode
0061                         sipRes = myAcumulate(a0);
0062                     %End
0063                     """
0064                 }
0065             },
0066             "cpplib.h": {
0067                 "anotherCustomMethod": {
0068                     "code": methodGenerator,
0069                     "param": 42
0070                 }
0071             }
0072             })