1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-09 01:07:16 +01:00
SqMod/modules/json/JValue.cpp
2016-06-20 18:53:09 +03:00

66 lines
2.4 KiB
C++

// ------------------------------------------------------------------------------------------------
#include "JValue.hpp"
// ------------------------------------------------------------------------------------------------
namespace SqMod {
// ------------------------------------------------------------------------------------------------
std::size_t JValue::s_Flags = JSON_ENCODE_ANY;
// ------------------------------------------------------------------------------------------------
SQInteger JValue::Typename(HSQUIRRELVM vm)
{
static const SQChar name[] = _SC("SqJSONValue");
sq_pushstring(vm, name, sizeof(name));
return 1;
}
// ------------------------------------------------------------------------------------------------
Object JValue::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(_SqVM, csg.mPtr ? csg.mPtr : _SC(""), -1);
// Return the created script object
return Var< Object >(_SqVM, -1).value;
}
// ------------------------------------------------------------------------------------------------
Object JValue::GetValue() const
{
return Object();
}
// ================================================================================================
void Register_JValue(Table & jns)
{
jns.Bind(_SC("Value"), Class< JValue >(jns.GetVM(), _SC("SqJSONValue"))
// Constructors
.Ctor()
.Ctor< const JValue & >()
// Core Meta-methods
.Func(_SC("_cmp"), &JValue::Cmp)
.SquirrelFunc(_SC("_typename"), &JValue::Typename)
.Func(_SC("_tostring"), &JValue::ToString)
// Properties
.Prop(_SC("IsObject"), &JValue::IsObject)
.Prop(_SC("IsArray"), &JValue::IsArray)
.Prop(_SC("IsString"), &JValue::IsString)
.Prop(_SC("IsInteger"), &JValue::IsInteger)
.Prop(_SC("IsReal"), &JValue::IsReal)
.Prop(_SC("IsNumber"), &JValue::IsNumber)
.Prop(_SC("IsTrue"), &JValue::IsTrue)
.Prop(_SC("IsFalse"), &JValue::IsFalse)
.Prop(_SC("IsBoolean"), &JValue::IsBoolean)
.Prop(_SC("IsNull"), &JValue::IsNull)
.Prop(_SC("Value"), &JValue::GetValue)
// Member Methods
//.Func(_SC("Func"), &JValue::Func)
);
}
} // Namespace:: SqMod