15.embind smart pointerスマートポインタ

2489 ワード

#include 
#include 

using namespace emscripten;


class Class {
public:
  Class(int x) : x(x) {}

  inline int getX () const {
    return x;
  }
  inline void setX(int val) {
    x = val;
  }
private:
  int x;
};


std::shared_ptr passThrough(Class *ptr) {
  return std::shared_ptr(ptr);
}


std::unique_ptr<int> passToUniquePtr (int v) {
  return std::unique_ptr<int>(new int(v));
}



EMSCRIPTEN_BINDINGS(module) {
  class_("Class")
      .constructor<int>()
      .smart_ptr<:shared_ptr>>("shared_ptr")
    .property("x", &Class::getX, &Class::setX);

  function("passThrough", &passThrough, allow_raw_pointers());
  function("passToUniquePtr", &passToUniquePtr);
}


/*
EMSCRIPTEN_BINDINGS(module) {
  class_("Class")
      .smart_ptr_constructor("shared_ptr", &std::make_shared)
    .property("x", &Class::getX, &Class::setX);
*/