1
0
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:
Sandu Liviu Catalin 2020-04-30 21:03:15 +03:00
parent 4500eb0a2c
commit ae2b1dc778
3 changed files with 12 additions and 12 deletions

View File

@ -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

View File

@ -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};
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------

View File

@ -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