mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 08:47:17 +01:00
Update sqratLightObj.h
In place construction.
This commit is contained in:
parent
1c84c7f35a
commit
444b0120ea
@ -180,6 +180,30 @@ struct LightObj {
|
|||||||
instance.Release();
|
instance.Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// Constructs a LightObj from a C++ type
|
||||||
|
///
|
||||||
|
/// \param t Identity of the type to create.
|
||||||
|
/// \param v VM that the object will exist in.
|
||||||
|
/// \param a Arguments to forward to the type constructor.
|
||||||
|
///
|
||||||
|
/// \tparam T Type of instance
|
||||||
|
///
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
template<class T>
|
||||||
|
LightObj(SqInPlace SQ_UNUSED_ARG(t), HSQUIRRELVM vm, T value) {
|
||||||
|
// Push the value on the stack
|
||||||
|
Var<T>::PushInstance(vm, std::forward< T >(value));
|
||||||
|
// Attempt to retrieve it
|
||||||
|
if (SQ_FAILED(sq_getstackobj(vm, -1, &mObj))) {
|
||||||
|
sq_resetobject(&mObj);
|
||||||
|
} else {
|
||||||
|
sq_addref(vm, &mObj);
|
||||||
|
}
|
||||||
|
// Pop the value from the stack
|
||||||
|
sq_poptop(vm);
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
/// Constructs an LightObj from a C++ instance wrapped inside a DeleteGuard
|
/// Constructs an LightObj from a C++ instance wrapped inside a DeleteGuard
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user