File: test_finalization.cpp

package info (click to toggle)
emscripten 3.1.69%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 121,860 kB
  • sloc: ansic: 636,110; cpp: 425,974; javascript: 78,401; python: 58,404; sh: 49,154; pascal: 5,237; makefile: 3,366; asm: 2,415; lisp: 1,869
file content (27 lines) | stat: -rw-r--r-- 595 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <emscripten/bind.h>
#include <iostream>
#include <memory>

class Foo {
  std::string mName;

public:
  Foo(std::string name) : mName(name) {}
  ~Foo() { std::cout << mName << " destructed" << std::endl; }
};

std::shared_ptr<Foo> foo() {
  return std::make_shared<Foo>("Constructed from C++");
}

Foo* pFoo() { return new Foo("Foo*"); }

using namespace emscripten;

EMSCRIPTEN_BINDINGS(Marci) {
  class_<Foo>("Foo").smart_ptr_constructor<std::shared_ptr<Foo>>(
    "Foo", &std::make_shared<Foo, std::string>);

  function("foo", foo);
  function("pFoo", pFoo, allow_raw_pointers());
}