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
1919 {
2020 public:
2121
22- wasm_interpreter ();
23- wasm_interpreter (int argc, char ** argv);
22+ wasm_interpreter (int argc = 0 , char ** argv = nullptr );
2423 virtual ~wasm_interpreter () = default ;
2524
2625 };
Original file line number Diff line number Diff line change 1515
1616#include " xeus-cpp/xinterpreter_wasm.hpp"
1717
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+
1835EMSCRIPTEN_BINDINGS (my_module)
1936{
2037 xeus::export_core ();
2138 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" );
2340}
Original file line number Diff line number Diff line change 1515
1616namespace xcpp
1717{
18-
19- wasm_interpreter::wasm_interpreter ()
20- : interpreter(0 , nullptr )
21- {
22- }
23-
2418 wasm_interpreter::wasm_interpreter (int argc, char ** argv)
2519 : interpreter(argc, argv)
2620 {
You can’t perform that action at this time.
0 commit comments