66 lines
1.6 KiB
C++
66 lines
1.6 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#ifndef __NSCRIPTOBJECT__
|
|
#define __NSCRIPTOBJECT__
|
|
|
|
|
|
#include "script/script_vm.h"
|
|
|
|
|
|
namespace GS {
|
|
namespace Script {
|
|
|
|
/*
|
|
@short Abstract script object.
|
|
@author Emmanuel Julien (ejulien@gsworks.fr)
|
|
*/
|
|
class Object
|
|
{
|
|
protected:
|
|
|
|
IVM &vm;
|
|
|
|
public:
|
|
|
|
IVM &GetVM() const { return vm; }
|
|
|
|
/// Perform a set operation on this object.
|
|
bool Set(const char *name, const Variant &p) { return vm.Set(name, p, this); }
|
|
/// Perform a get operation on this object.
|
|
bool Get(const char *name, Variant &p) { return vm.Get(name, p, this); }
|
|
/// Append a variant to this object.
|
|
bool Append(const Variant &p) { return vm.Append(p, this); }
|
|
|
|
/// Setup a function call on this object.
|
|
bool SetupFunctionCall(const char *func, const Object *function_object = 0)
|
|
{ return vm.SetupFunctionCall(func, function_object, this); }
|
|
/// Push null function call argument.
|
|
bool PushFunctionCallNullArgument()
|
|
{ return vm.PushNullArgument(); }
|
|
/// Push function call argument.
|
|
bool PushFunctionCallArgument(const Variant &arg)
|
|
{ return vm.PushArgument(arg); }
|
|
/// Execute a function call on this object, return value as a variant.
|
|
bool DoFunctionCall(Variant *return_value = 0)
|
|
{ return vm.DoFunctionCall(return_value); }
|
|
|
|
Object &operator= (const Object &b)
|
|
{
|
|
vm = b.GetVM();
|
|
return *this;
|
|
}
|
|
|
|
Object(IVM &v) : vm(v) {}
|
|
virtual ~Object() {}
|
|
};
|
|
|
|
} // Script
|
|
} // GS
|
|
|
|
|
|
#endif // __NSCRIPTOBJECT__
|