aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjinsuck <jkim@imvu.com>2012-11-14 15:00:56 -0800
committerJukka Jylänki <jujjyl@gmail.com>2013-04-12 14:21:51 +0300
commit778b8eb983544434b2350fe3bb36363bbef0b347 (patch)
tree0233510be64e7f3e0154a780dd93675502e06abc
parent2c34b6dc6cf61087ff4f341bc33aefaa968803ba (diff)
add a syntactic sugar to for cloning to a shared pointer of interface
wrapper
-rw-r--r--system/include/emscripten/bind.h7
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(