File tree Expand file tree Collapse file tree 3 files changed +19
-9
lines changed Expand file tree Collapse file tree 3 files changed +19
-9
lines changed Original file line number Diff line number Diff line change @@ -19,8 +19,7 @@ namespace xcpp
19
19
{
20
20
public:
21
21
22
- wasm_interpreter ();
23
- wasm_interpreter (int argc, char ** argv);
22
+ wasm_interpreter (int argc = 0 , char ** argv = nullptr );
24
23
virtual ~wasm_interpreter () = default ;
25
24
26
25
};
Original file line number Diff line number Diff line change 15
15
16
16
#include " xeus-cpp/xinterpreter_wasm.hpp"
17
17
18
+ template <class interpreter_type >
19
+ static interpreter_type* builder_with_args (emscripten::val js_args)
20
+ {
21
+ static std::vector<std::string> args = emscripten::vecFromJSArray<std::string>(js_args);
22
+ static std::vector<const char *> argv_vec;
23
+
24
+ for (const auto & s : args)
25
+ {
26
+ argv_vec.push_back (s.c_str ());
27
+ }
28
+
29
+ int argc = static_cast <int >(argv_vec.size ());
30
+ char ** argv = const_cast <char **>(argv_vec.data ());
31
+
32
+ return new interpreter_type (argc, argv);
33
+ }
34
+
18
35
EMSCRIPTEN_BINDINGS (my_module)
19
36
{
20
37
xeus::export_core ();
21
38
using interpreter_type = xcpp::wasm_interpreter;
22
- xeus::export_kernel<interpreter_type>(" xkernel" );
39
+ xeus::export_kernel<interpreter_type, &builder_with_args<interpreter_type> >(" xkernel" );
23
40
}
Original file line number Diff line number Diff line change 15
15
16
16
namespace xcpp
17
17
{
18
-
19
- wasm_interpreter::wasm_interpreter ()
20
- : interpreter(0 , nullptr )
21
- {
22
- }
23
-
24
18
wasm_interpreter::wasm_interpreter (int argc, char ** argv)
25
19
: interpreter(argc, argv)
26
20
{
You can’t perform that action at this time.
0 commit comments