|
@@ -53,7 +53,7 @@ public:
|
|
|
static type of() {
|
|
static type of() {
|
|
|
return type_visitor::type<T>();
|
|
return type_visitor::type<T>();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
static type of(const handle& obj) { return type(vm->_t(obj.ptr())); }
|
|
static type of(const handle& obj) { return type(vm->_t(obj.ptr())); }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -368,6 +368,10 @@ public:
|
|
|
template <typename T>
|
|
template <typename T>
|
|
|
capsule(T&& value) : object(create(std::forward<T>(value))) {}
|
|
capsule(T&& value) : object(create(std::forward<T>(value))) {}
|
|
|
|
|
|
|
|
|
|
+ capsule(void* ptr, void (*destructor)(void*) = nullptr) : object(create(ptr, destructor)) {}
|
|
|
|
|
+
|
|
|
|
|
+ void* data() const { return self().ptr; }
|
|
|
|
|
+
|
|
|
template <typename T>
|
|
template <typename T>
|
|
|
T& cast() const {
|
|
T& cast() const {
|
|
|
return *static_cast<T*>(self().ptr);
|
|
return *static_cast<T*>(self().ptr);
|