diff options
-rw-r--r-- | tests/runner.py | 3 | ||||
-rw-r--r-- | tools/namespacer.py | 21 |
2 files changed, 15 insertions, 9 deletions
diff --git a/tests/runner.py b/tests/runner.py index bc883766..42a63afc 100644 --- a/tests/runner.py +++ b/tests/runner.py @@ -1010,8 +1010,7 @@ if 'benchmark' not in sys.argv: int ScriptMe::mulVal(int mul) { value *= mul; } ''' script_src = ''' - var sme = Module._.ScriptMe.__alloc__(); // malloc(sizeof(ScriptMe)) - Module._.ScriptMe.ScriptMe(sme, 83); // ScriptMe::ScriptMe(sme, 83) new ScriptMe(83) (at addr sme) + var sme = Module._.ScriptMe.__new__(83); // malloc(sizeof(ScriptMe)), ScriptMe::ScriptMe(sme, 83) / new ScriptMe(83) (at addr sme) Module._.ScriptMe.mulVal(sme, 2); // ScriptMe::mulVal(sme, 2) sme.mulVal(2) print('*' + Module._.ScriptMe.getVal(sme) + '*'); Module._free(sme); diff --git a/tools/namespacer.py b/tools/namespacer.py index 507c580c..008c2d00 100644 --- a/tools/namespacer.py +++ b/tools/namespacer.py @@ -31,6 +31,8 @@ data = open(sys.argv[1], 'r').readlines() space = {} +counts = {} + for line in data: line = line.rstrip() @@ -52,14 +54,19 @@ for line in data: for part in funcparts[:-1]: currspace = currspace.setdefault(part, {}) - i = 0 - base = funcparts[-1] - while funcparts[-1] in currspace: - funcparts[-1] = base + '_' + str(i) + key = str(funcparts) + if key in counts: + i = counts[key] + counts[key] += 1 + funcparts[-1] += '_' + str(i) + else: + counts[key] = 1 currspace[funcparts[-1]] = realname - currspace[funcparts[-1] + '_params'] = params - if funcparts[-1] == funcparts[-2]: - currspace['__alloc__'] = 'function() { return _malloc(_struct_%s___SIZE) }' % funcparts[-1] + currspace[funcparts[-1] + '__params'] = params + if len(funcparts) >= 2 and funcparts[-1] == funcparts[-2]: + currspace['__new__'] = 'function() { var ret = _malloc(_struct_%s___SIZE); Module._.%s.%s.apply(null, [ret].concat(Array.prototype.slice.apply(arguments))); return ret; }' % ( + funcparts[-1], funcparts[-1], funcparts[-1] + ) def finalize(line): try: |