File indexing completed on 2024-04-28 07:40:49
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 })