aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/runner.py2
-rwxr-xr-xtools/bindings_generator.py24
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 '