From d7bed643e065a620ccf0093d8c136b6e7c749ea4 Mon Sep 17 00:00:00 2001 From: Lee Date: Wed, 2 May 2018 14:54:20 +0800 Subject: [PATCH 1/2] fix auto bindings for using lambda ''std::function<.*(std::map )>' fix befoe: auto lambda = [=](std::map larg1) -> void {} fix ago: auto lambda = [=](std::map larg0) -> void {} --- generator.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/generator.py b/generator.py index 69a8083e..e5c8eaa0 100755 --- a/generator.py +++ b/generator.py @@ -136,6 +136,9 @@ def split_container_name(name): comma = name.find(',', left + 1, right) if comma == -1: results.append(name[left+1:right].strip()) + last_char = name[len(name)-1]; + if (last_char == '*' or last_char == '&'): + results.append(last_char) return results @@ -487,9 +490,21 @@ def from_type(ntype): (ret_type, params) = r.groups() params = filter(None, params.split(", ")) + newParams = [] + argTmp = '' + for ntstr in (params): + if 0 < len(re.compile(r'std::map<').findall(ntstr)): + argTmp = "%s, " % (ntstr) + else: + if (0 < len(argTmp)): + argTmp = argTmp + ntstr + newParams.append(argTmp) + else: + newParams.append(ntstr) + argTmp = '' nt.is_function = True nt.ret_type = NativeType.from_string(ret_type) - nt.param_types = [NativeType.from_string(string) for string in params] + nt.param_types = [NativeType.from_string(string) for string in newParams] # mark argument as not supported if nt.name == INVALID_NATIVE_TYPE: @@ -505,7 +520,10 @@ def from_string(displayname): displayname = displayname.replace(" *", "*") nt = NativeType() - nt.name = displayname.split("::")[-1] + if 0 < len(re.compile(r'std::map<').findall(displayname)): + nt.name = displayname.replace('std::map', 'map', 1) + else: + nt.name = displayname.split("::")[-1] nt.namespaced_name = displayname nt.whole_name = nt.namespaced_name nt.is_object = True From 05e74dfa7516c16d2c086a2504988846a7e50b06 Mon Sep 17 00:00:00 2001 From: LeeWei Date: Sun, 6 May 2018 19:28:36 +0800 Subject: [PATCH 2/2] fix auto bindings for using 'std::vector >' --- generator.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generator.py b/generator.py index e5c8eaa0..7f7f531c 100755 --- a/generator.py +++ b/generator.py @@ -186,7 +186,7 @@ def normalize_std_function_by_sections(sections): normalized_name = 'std::function<' + sections[1] + ' ' + sections[2] + '>' else: assert(False) - return normalized_name + return normalized_name.replace('>>', '> >'); def normalize_type_str(s, depth=1): @@ -518,6 +518,7 @@ def from_type(ntype): @staticmethod def from_string(displayname): displayname = displayname.replace(" *", "*") + displayname = displayname.replace(">>", "> >") nt = NativeType() if 0 < len(re.compile(r'std::map<').findall(displayname)):