mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-04-24 21:27:12 +02:00
Avoid implicit construction of object wrappers.
This commit is contained in:
parent
4500eb0a2c
commit
ae2b1dc778
@ -21,7 +21,7 @@ static LightObj SqLeftStr(SQChar f, Uint32 w, StackStrF & s)
|
|||||||
// Is the specified width valid?
|
// Is the specified width valid?
|
||||||
if (!w)
|
if (!w)
|
||||||
{
|
{
|
||||||
return _SC(""); // Default to an empty string!
|
return LightObj(_SC(""), 0); // Default to an empty string!
|
||||||
}
|
}
|
||||||
// Allocate a buffer with the requested width
|
// Allocate a buffer with the requested width
|
||||||
Buffer b(w + 1); // + null terminator
|
Buffer b(w + 1); // + null terminator
|
||||||
@ -51,7 +51,7 @@ static LightObj SqLeftOffsetStr(SQChar f, Uint32 w, Uint32 o, StackStrF & s)
|
|||||||
// Is the specified width valid?
|
// Is the specified width valid?
|
||||||
if (!w)
|
if (!w)
|
||||||
{
|
{
|
||||||
return _SC(""); // Default to an empty string!
|
return LightObj(_SC(""), 0); // Default to an empty string!
|
||||||
}
|
}
|
||||||
// Is the specified offset within width range?
|
// Is the specified offset within width range?
|
||||||
else if (o > w)
|
else if (o > w)
|
||||||
@ -95,7 +95,7 @@ static LightObj SqRightStr(SQChar f, Uint32 w, StackStrF & s)
|
|||||||
// Is the specified width valid?
|
// Is the specified width valid?
|
||||||
if (!w)
|
if (!w)
|
||||||
{
|
{
|
||||||
return _SC(""); // Default to an empty string!
|
return LightObj(_SC(""), 0); // Default to an empty string!
|
||||||
}
|
}
|
||||||
// Allocate a buffer with the requested width
|
// Allocate a buffer with the requested width
|
||||||
Buffer b(w + 1); // + null terminator
|
Buffer b(w + 1); // + null terminator
|
||||||
@ -134,7 +134,7 @@ static LightObj SqRightOffsetStr(SQChar f, Uint32 w, Uint32 o, StackStrF & s)
|
|||||||
// Is the specified width valid?
|
// Is the specified width valid?
|
||||||
if (!w)
|
if (!w)
|
||||||
{
|
{
|
||||||
return _SC(""); // Default to an empty string!
|
return LightObj(_SC(""), 0); // Default to an empty string!
|
||||||
}
|
}
|
||||||
// Is the specified offset within width range?
|
// Is the specified offset within width range?
|
||||||
else if (o > w)
|
else if (o > w)
|
||||||
@ -178,7 +178,7 @@ static LightObj SqCenterStr(SQChar f, Uint32 w, StackStrF & s)
|
|||||||
// Is the specified width valid?
|
// Is the specified width valid?
|
||||||
if (!w)
|
if (!w)
|
||||||
{
|
{
|
||||||
return _SC(""); // Default to an empty string!
|
return LightObj(_SC(""), 0); // Default to an empty string!
|
||||||
}
|
}
|
||||||
// Allocate a buffer with the requested width
|
// Allocate a buffer with the requested width
|
||||||
Buffer b(w + 1); // + null terminator
|
Buffer b(w + 1); // + null terminator
|
||||||
|
@ -1545,7 +1545,7 @@ LightObj Signal::Create(StackStrF & name)
|
|||||||
{
|
{
|
||||||
if (e.first == hash)
|
if (e.first == hash)
|
||||||
{
|
{
|
||||||
return e.second.second.mObj; // Found a match so let's return it
|
return LightObj{e.second.second.mObj}; // Found a match so let's return it
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Remember the current stack size
|
// Remember the current stack size
|
||||||
@ -1561,7 +1561,7 @@ LightObj Signal::Create(StackStrF & name)
|
|||||||
// Grab a reference to the instance created on the stack
|
// Grab a reference to the instance created on the stack
|
||||||
s_Signals.emplace_back(hash, SignalPair(ptr, Var< LightObj >(SqVM(), -1).value));
|
s_Signals.emplace_back(hash, SignalPair(ptr, Var< LightObj >(SqVM(), -1).value));
|
||||||
// Return the created signal
|
// Return the created signal
|
||||||
return s_Signals.back().second.second.mObj;
|
return LightObj{s_Signals.back().second.second.mObj};
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
@ -860,7 +860,7 @@ struct LightObj {
|
|||||||
/// \param o Squirrel object
|
/// \param o Squirrel object
|
||||||
///
|
///
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
LightObj(HSQOBJECT o) : mObj(o) {
|
explicit LightObj(const HSQOBJECT & o) : mObj(o) {
|
||||||
sq_addref(SqVM(), &mObj);
|
sq_addref(SqVM(), &mObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -871,7 +871,7 @@ struct LightObj {
|
|||||||
/// \param v VM that the object will exist in
|
/// \param v VM that the object will exist in
|
||||||
///
|
///
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
LightObj(SQInteger i, HSQUIRRELVM v = SqVM()) {
|
explicit LightObj(SQInteger i, HSQUIRRELVM v = SqVM()) {
|
||||||
if (SQ_FAILED(sq_getstackobj(v, i, &mObj))) {
|
if (SQ_FAILED(sq_getstackobj(v, i, &mObj))) {
|
||||||
sq_resetobject(&mObj);
|
sq_resetobject(&mObj);
|
||||||
} else {
|
} else {
|
||||||
@ -887,7 +887,7 @@ struct LightObj {
|
|||||||
/// \param v VM that the object will exist in
|
/// \param v VM that the object will exist in
|
||||||
///
|
///
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
LightObj(const SQChar * s, SQInteger l, HSQUIRRELVM v = SqVM()) {
|
explicit LightObj(const SQChar * s, SQInteger l=-1, HSQUIRRELVM v = SqVM()) {
|
||||||
sq_pushstring(v, s, l);
|
sq_pushstring(v, s, l);
|
||||||
if (SQ_FAILED(sq_getstackobj(v, -1, &mObj))) {
|
if (SQ_FAILED(sq_getstackobj(v, -1, &mObj))) {
|
||||||
sq_resetobject(&mObj);
|
sq_resetobject(&mObj);
|
||||||
@ -903,7 +903,7 @@ struct LightObj {
|
|||||||
/// \param so Object to copy
|
/// \param so Object to copy
|
||||||
///
|
///
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
LightObj(const Object& obj) : mObj(obj.GetObj()) {
|
explicit LightObj(const Object& obj) : mObj(obj.GetObj()) {
|
||||||
if (!sq_isnull(mObj)) {
|
if (!sq_isnull(mObj)) {
|
||||||
sq_addref(obj.GetVM(), &mObj);
|
sq_addref(obj.GetVM(), &mObj);
|
||||||
}
|
}
|
||||||
@ -919,7 +919,7 @@ struct LightObj {
|
|||||||
///
|
///
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
template<class T>
|
template<class T>
|
||||||
LightObj(T* instance, HSQUIRRELVM v = SqVM()) {
|
explicit LightObj(T* instance, HSQUIRRELVM v = SqVM()) {
|
||||||
// Preserve the stack state
|
// Preserve the stack state
|
||||||
const StackGuard sg(v);
|
const StackGuard sg(v);
|
||||||
// Push the instance on the stack
|
// Push the instance on the stack
|
||||||
|
Loading…
x
Reference in New Issue
Block a user