1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
import os
import sys
import rules_engine
sys.path.append(os.path.dirname(os.path.dirname(rules_engine.__file__)))
import Qt5Ruleset
def local_container_rules():
return [
[".*", "Shared", ".*", ".*", ".*", rules_engine.discard_QSharedData_base]
]
def local_forward_declaration_rules():
return [
[".*", "ExternalFwdDecl", ".*", rules_engine.mark_forward_declaration_external]
]
def local_function_rules():
return [
["TypedefUser", "setTagPattern", ".*", ".*", ".*", rules_engine.function_discard],
]
def local_typedef_rules():
return [
[".*", "TagFormatter", rules_engine.typedef_discard],
]
def methodGenerator(function, sip, entry):
sip["code"] = """
%MethodCode
sipRes = {} + myAcumulate(a0);
%End
""".format(entry["param"])
class RuleSet(Qt5Ruleset.RuleSet):
def __init__(self):
Qt5Ruleset.RuleSet.__init__(self)
self._container_db = rules_engine.ContainerRuleDb(lambda: local_container_rules() + Qt5Ruleset.container_rules())
self._forward_declaration_db = rules_engine.ForwardDeclarationRuleDb(lambda: local_forward_declaration_rules() + Qt5Ruleset.forward_declaration_rules())
self._fn_db = rules_engine.FunctionRuleDb(lambda: local_function_rules() + Qt5Ruleset.function_rules())
self._typedef_db = rules_engine.TypedefRuleDb(lambda: local_typedef_rules() + Qt5Ruleset.typedef_rules())
self._modulecode = rules_engine.ModuleCodeDb({
"cpplib.h": {
"code": """
%ModuleCode
int myAcumulate(const QList<int> *list) {
return std::accumulate(list->begin(), list->end(), 0);
}
%End\n
"""
}
})
self._methodcode = rules_engine.MethodCodeDb({
"SomeNS": {
"customMethod": {
"code": """
%MethodCode
sipRes = myAcumulate(a0);
%End
"""
}
},
"cpplib.h": {
"anotherCustomMethod": {
"code": methodGenerator,
"param": 42
}
}
})
|