1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 00:37:15 +01:00
SqMod/modules/json/JArray.cpp
Sandu Liviu Catalin 66d1110733 Rvised the API distribution system to avoid segmentation fault crashes on Linux and make the overal code cleaner.
Moved the constants in IRC module into their own source and implemented a faster method of registering them.
Various other minor changes and adjustments. Some of them in order to comply with the new API distribution system.
2016-07-17 03:24:07 +03:00

50 lines
1.7 KiB
C++

// ------------------------------------------------------------------------------------------------
#include "JArray.hpp"
// ------------------------------------------------------------------------------------------------
namespace SqMod {
// ------------------------------------------------------------------------------------------------
std::size_t JArray::s_Flags = JSON_ENCODE_ANY;
// ------------------------------------------------------------------------------------------------
SQInteger JArray::Typename(HSQUIRRELVM vm)
{
static const SQChar name[] = _SC("SqJSONArray");
sq_pushstring(vm, name, sizeof(name));
return 1;
}
// ------------------------------------------------------------------------------------------------
Object JArray::ToString() const
{
// Dump the values to a string
const CStrGuard csg(json_dumps(m_Ptr, s_Flags));
// Remember the current stack size
const StackGuard sg;
// Transform the string into a script object
sq_pushstring(DefaultVM::Get(), csg.mPtr ? csg.mPtr : _SC(""), -1);
// Return the created script object
return Var< Object >(DefaultVM::Get(), -1).value;
}
// ================================================================================================
void Register_JArray(Table & jns)
{
jns.Bind(_SC("Array"), Class< JArray >(jns.GetVM(), _SC("SqJSONArray"))
// Constructors
.Ctor()
.Ctor< const JArray & >()
// Core Meta-methods
.Func(_SC("_cmp"), &JArray::Cmp)
.SquirrelFunc(_SC("_typename"), &JArray::Typename)
.Func(_SC("_tostring"), &JArray::ToString)
// Properties
//.Prop(_SC("Prop"), &JArray::Prop)
// Member Methods
//.Func(_SC("Func"), &JArray::Func)
);
}
} // Namespace:: SqMod