// Copyright 2017 The Emscripten Authors. All rights reserved. // Emscripten is available under two separate licenses, the MIT license and the // University of Illinois/NCSA Open Source License. Both these licenses can be // found in the LICENSE file. #include #include using namespace emscripten; class MyFoo { public: MyFoo() { EM_ASM({out("constructing my foo");}); } virtual void doit() { EM_ASM({out("doing it");}); } }; class MyBar : public MyFoo { public: MyBar() { EM_ASM({out("constructing my bar");}); } void doit() override { EM_ASM({out("doing something else");}); } }; EMSCRIPTEN_BINDINGS(my_module) { class_("MyFoo") .constructor<>() .function("doit", &MyFoo::doit) ; class_>("MyBar") .constructor<>() ; } int main(int argc, char **argv) { EM_ASM( try { var foo = new Module.MyFoo(); foo.doit(); var bar = new Module.MyBar(); bar.doit(); } catch(e) { out(e); } ); return 0; }