1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 00:37:15 +01:00

Remove duplicate code that converts a buffer to a script string object.

This commit is contained in:
Sandu Liviu Catalin 2016-03-11 04:23:59 +02:00
parent 4cac7d2d30
commit 20ae383c42
4 changed files with 53 additions and 41 deletions

View File

@ -96,6 +96,33 @@ Function & NullFunction()
return f; return f;
} }
// ------------------------------------------------------------------------------------------------
Object BufferToStrObj(const Buffer & b)
{
// Obtain the initial stack size
const StackGuard sg(DefaultVM::Get());
// Push the string onto the stack
sq_pushstring(DefaultVM::Get(), b.Data(), b.Position());
// Obtain the object from the stack and return it
return Var< Object >(DefaultVM::Get(), -1).value;
}
// --------------------------------------------------------------------------------------------
Object BufferToStrObj(const Buffer & b, Uint32 size)
{
// Perform a range check on the specified buffer
if (size > b.Capacity())
{
SqThrowF("The specified buffer size is out of range: %u >= %u", size, b.Capacity());
}
// Obtain the initial stack size
const StackGuard sg(DefaultVM::Get());
// Push the string onto the stack
sq_pushstring(DefaultVM::Get(), b.Data(), size);
// Obtain the object from the stack and return it
return Var< Object >(DefaultVM::Get(), -1).value;
}
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
bool SToB(CSStr str) bool SToB(CSStr str)
{ {

View File

@ -239,6 +239,16 @@ Array & NullArray();
*/ */
Function & NullFunction(); Function & NullFunction();
/* ------------------------------------------------------------------------------------------------
* Create a script string object from a buffer.
*/
Object BufferToStrObj(const Buffer & b);
/* ------------------------------------------------------------------------------------------------
* Create a script string object from a portion of a buffer.
*/
Object BufferToStrObj(const Buffer & b, Uint32 size);
/* ------------------------------------------------------------------------------------------------ /* ------------------------------------------------------------------------------------------------
* Create a script object from the specified value on the default VM. * Create a script object from the specified value on the default VM.
*/ */

View File

@ -1077,17 +1077,6 @@ Buffer SysEnv::NullDir()
return std::move(b); return std::move(b);
} }
// ------------------------------------------------------------------------------------------------
static Object BufferToObj(const Buffer & b)
{
// Obtain the initial stack size
const StackGuard sg(DefaultVM::Get());
// Push the string onto the stack
sq_pushstring(DefaultVM::Get(), b.Data(), b.Position());
// Obtain the object from the stack and return it
return Var< Object >(DefaultVM::Get(), -1).value;
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static bool SqEnv_Has(CCStr name) static bool SqEnv_Has(CCStr name)
{ {
@ -1097,13 +1086,13 @@ static bool SqEnv_Has(CCStr name)
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_Get(CCStr name) static Object SqEnv_Get(CCStr name)
{ {
return BufferToObj(SysEnv::Get(name, nullptr)); return BufferToStrObj(SysEnv::Get(name, nullptr));
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_GetOr(CCStr name, CCStr fallback) static Object SqEnv_GetOr(CCStr name, CCStr fallback)
{ {
return BufferToObj(SysEnv::Get(name, fallback)); return BufferToStrObj(SysEnv::Get(name, fallback));
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
@ -1115,73 +1104,73 @@ static void SqEnv_Set(CCStr name, CCStr value)
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_ExpandVars(CCStr str) static Object SqEnv_ExpandVars(CCStr str)
{ {
return BufferToObj(SysEnv::ExpandVars(str)); return BufferToStrObj(SysEnv::ExpandVars(str));
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_ExpandPath(CCStr path) static Object SqEnv_ExpandPath(CCStr path)
{ {
return BufferToObj(SysEnv::ExpandPath(path)); return BufferToStrObj(SysEnv::ExpandPath(path));
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_WorkingDir() static Object SqEnv_WorkingDir()
{ {
return BufferToObj(SysEnv::WorkingDir()); return BufferToStrObj(SysEnv::WorkingDir());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_HomeDir() static Object SqEnv_HomeDir()
{ {
return BufferToObj(SysEnv::HomeDir()); return BufferToStrObj(SysEnv::HomeDir());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_ConfigHomeDir() static Object SqEnv_ConfigHomeDir()
{ {
return BufferToObj(SysEnv::ConfigHomeDir()); return BufferToStrObj(SysEnv::ConfigHomeDir());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_DataHomeDir() static Object SqEnv_DataHomeDir()
{ {
return BufferToObj(SysEnv::DataHomeDir()); return BufferToStrObj(SysEnv::DataHomeDir());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_TempHomeDir() static Object SqEnv_TempHomeDir()
{ {
return BufferToObj(SysEnv::TempHomeDir()); return BufferToStrObj(SysEnv::TempHomeDir());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_CacheHomeDir() static Object SqEnv_CacheHomeDir()
{ {
return BufferToObj(SysEnv::CacheHomeDir()); return BufferToStrObj(SysEnv::CacheHomeDir());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_TempDir() static Object SqEnv_TempDir()
{ {
return BufferToObj(SysEnv::TempDir()); return BufferToStrObj(SysEnv::TempDir());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_ConfigDir() static Object SqEnv_ConfigDir()
{ {
return BufferToObj(SysEnv::ConfigDir()); return BufferToStrObj(SysEnv::ConfigDir());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_SystemDir() static Object SqEnv_SystemDir()
{ {
return BufferToObj(SysEnv::SystemDir()); return BufferToStrObj(SysEnv::SystemDir());
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static Object SqEnv_NullDir() static Object SqEnv_NullDir()
{ {
return BufferToObj(SysEnv::NullDir()); return BufferToStrObj(SysEnv::NullDir());
} }
// ================================================================================================ // ================================================================================================

View File

@ -278,14 +278,7 @@ Int32 SysPath::Cmp(const SysPath & o) const
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
Object SysPath::ToString() const Object SysPath::ToString() const
{ {
// Transform the path components into a string return BufferToStrObj(ToBuffer());
Buffer b(ToBuffer());
// Obtain the initial stack size
const StackGuard sg(DefaultVM::Get());
// Push the string onto the stack
sq_pushstring(DefaultVM::Get(), b.Data(), b.Position());
// Obtain the object from the stack and return it
return Var< Object >(DefaultVM::Get(), -1).value;
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
@ -687,14 +680,7 @@ Buffer SysPath::ToBuffer(Style style) const
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
Object SysPath::ToStr(Int32 style) const Object SysPath::ToStr(Int32 style) const
{ {
// Transform the path components into a string return BufferToStrObj(ToBuffer(static_cast< Style >(style)));
Buffer b(ToBuffer(static_cast< Style >(style)));
// Obtain the initial stack size
const StackGuard sg(DefaultVM::Get());
// Push the string onto the stack
sq_pushstring(DefaultVM::Get(), b.Data(), b.Position());
// Obtain the object from the stack and return it
return Var< Object >(DefaultVM::Get(), -1).value;
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------