diff options
author | jinsuck <jkim@imvu.com> | 2012-11-14 15:00:56 -0800 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-12 14:21:51 +0300 |
commit | 778b8eb983544434b2350fe3bb36363bbef0b347 (patch) | |
tree | 0233510be64e7f3e0154a780dd93675502e06abc | |
parent | 2c34b6dc6cf61087ff4f341bc33aefaa968803ba (diff) |
add a syntactic sugar to for cloning to a shared pointer of interface
wrapper
-rw-r--r-- | system/include/emscripten/bind.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/system/include/emscripten/bind.h b/system/include/emscripten/bind.h index cb8f396d..ffbf9401 100644 --- a/system/include/emscripten/bind.h +++ b/system/include/emscripten/bind.h @@ -806,6 +806,13 @@ namespace emscripten { typedef InterfaceType interface; + template<class ConcreteWrapperType> + static std::shared_ptr<InterfaceType> cloneToSharedPtr(InterfaceType& i) { + ConcreteWrapperType* cw = new ConcreteWrapperType(&i); + InterfaceType* ip = dynamic_cast<InterfaceType*>(cw); + return std::shared_ptr<InterfaceType>(ip); + } + void initialize(internal::EM_VAL handle) { if (jsobj) { internal::_embind_fatal_error( |