diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-08-10 10:30:10 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-08-10 10:33:40 -0700 |
commit | 9998978f1bc0c0aafeac29dd7adf5b2b0b6e078e (patch) | |
tree | 07d5c987fca78667e42a66a885ae116da58fbef7 | |
parent | b3389d30aaf4fecb9749ebffa4577b140c570fde (diff) |
Module.preInit
-rw-r--r-- | src/postamble.js | 7 | ||||
-rwxr-xr-x | tests/runner.py | 11 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/postamble.js b/src/postamble.js index 2944e681..e1dd495a 100644 --- a/src/postamble.js +++ b/src/postamble.js @@ -79,6 +79,13 @@ Module['run'] = run; // {{PRE_RUN_ADDITIONS}} +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + initRuntime(); #if INVOKE_RUN diff --git a/tests/runner.py b/tests/runner.py index c6c7cb2c..70f7ba9d 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7259,6 +7259,17 @@ f.close() open(os.path.join(self.get_dir(), 'a.out.js'), 'w').write(src) assert 'hello from main' in run_js(os.path.join(self.get_dir(), 'a.out.js')), 'main should print when called manually' + # Use postInit + open(os.path.join(self.get_dir(), 'pre.js'), 'w').write(''' + var Module = { + preRun: function() { Module.print('pre-run') }, + postRun: function() { Module.print('post-run') }, + preInit: function() { Module.print('pre-init') } + }; + ''') + Popen(['python', EMCC, os.path.join(self.get_dir(), 'main.cpp'), '--pre-js', 'pre.js']).communicate() + self.assertContained('pre-init\npre-run\nhello from main\npost-run\n', run_js(os.path.join(self.get_dir(), 'a.out.js'))) + def test_prepost2(self): open(os.path.join(self.get_dir(), 'main.cpp'), 'w').write(''' #include <stdio.h> |