diff options
-rwxr-xr-x | tests/runner.py | 2 | ||||
-rwxr-xr-x | tools/bindings_generator.py | 24 |
2 files changed, 14 insertions, 12 deletions
diff --git a/tests/runner.py b/tests/runner.py index 8e2e7b28..a765d357 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -5493,6 +5493,7 @@ def process(filename): int value; public: Parent(int val); + Parent(Parent *p, Parent *q); // overload constructor int getVal() { return value; }; // inline should work just fine here, unlike Way 1 before void mulVal(int mul); }; @@ -5530,6 +5531,7 @@ def process(filename): #include "header.h" Parent::Parent(int val) : value(val) { printf("Parent:%d\\n", val); } + Parent::Parent(Parent *p, Parent *q) : value(p->value + q->value) { printf("Parent:%d\\n", value); } void Parent::mulVal(int mul) { value *= mul; } #include "bindingtest.cpp" diff --git a/tools/bindings_generator.py b/tools/bindings_generator.py index 3fbff13d..fad784a7 100755 --- a/tools/bindings_generator.py +++ b/tools/bindings_generator.py @@ -671,18 +671,6 @@ def generate_class(generating_classname, classname, clazz): # TODO: deprecate ge has_string_convs = False - # We can assume that NULL is passed for null pointers, so object arguments can always - # have .ptr done on them - justargs_fixed = justargs(args)[:] - for i in range(len(args)): - arg = args[i] - clean = clean_type(arg['type']) - if clean in classes: - justargs_fixed[i] += '.ptr' - elif arg['type'].replace(' ', '').endswith('char*'): - justargs_fixed[i] = 'ensureString(' + justargs_fixed[i] + ')' - has_string_convs = True - calls = '' if has_string_convs: calls += 'var stack = Runtime.stackSave();\n'; @@ -690,6 +678,18 @@ def generate_class(generating_classname, classname, clazz): # TODO: deprecate ge #print 'js loopin', params, '|', len(args)#, args for args in params: + # We can assume that NULL is passed for null pointers, so object arguments can always + # have .ptr done on them + justargs_fixed = justargs(args)[:] + for i in range(len(args)): + arg = args[i] + clean = clean_type(arg['type']) + if clean in classes: + justargs_fixed[i] += '.ptr' + elif arg['type'].replace(' ', '').endswith('char*'): + justargs_fixed[i] = 'ensureString(' + justargs_fixed[i] + ')' + has_string_convs = True + i = len(args) if args != params[0]: calls += ' else ' |