2019-02-25 14:48:22 +01:00
|
|
|
/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
|
2018-08-02 10:17:04 +02:00
|
|
|
|
|
|
|
#include "base/reference.hpp"
|
|
|
|
#include "base/function.hpp"
|
|
|
|
#include "base/functionwrapper.hpp"
|
|
|
|
#include "base/scriptframe.hpp"
|
|
|
|
#include "base/exception.hpp"
|
|
|
|
|
|
|
|
using namespace icinga;
|
|
|
|
|
|
|
|
static void ReferenceSet(const Value& value)
|
|
|
|
{
|
|
|
|
ScriptFrame *vframe = ScriptFrame::GetCurrentFrame();
|
|
|
|
Reference::Ptr self = static_cast<Reference::Ptr>(vframe->Self);
|
|
|
|
REQUIRE_NOT_NULL(self);
|
|
|
|
self->Set(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
static Value ReferenceGet()
|
|
|
|
{
|
|
|
|
ScriptFrame *vframe = ScriptFrame::GetCurrentFrame();
|
|
|
|
Reference::Ptr self = static_cast<Reference::Ptr>(vframe->Self);
|
|
|
|
REQUIRE_NOT_NULL(self);
|
|
|
|
return self->Get();
|
|
|
|
}
|
|
|
|
|
|
|
|
Object::Ptr Reference::GetPrototype()
|
|
|
|
{
|
|
|
|
static Dictionary::Ptr prototype = new Dictionary({
|
|
|
|
{ "set", new Function("Reference#set", ReferenceSet, { "value" }) },
|
|
|
|
{ "get", new Function("Reference#get", ReferenceGet, {}, true) },
|
|
|
|
});
|
|
|
|
|
|
|
|
return prototype;
|
|
|
|
}
|