mirror of https://github.com/Icinga/icinga2.git
parent
729a1259c0
commit
b74014fa5e
|
@ -26,6 +26,19 @@ using namespace icinga;
|
||||||
boost::thread_specific_ptr<std::stack<ScriptFrame *> > ScriptFrame::m_ScriptFrames;
|
boost::thread_specific_ptr<std::stack<ScriptFrame *> > ScriptFrame::m_ScriptFrames;
|
||||||
Array::Ptr ScriptFrame::m_Imports;
|
Array::Ptr ScriptFrame::m_Imports;
|
||||||
|
|
||||||
|
INITIALIZE_ONCE_WITH_PRIORITY(&ScriptFrame::StaticInitialize, 50);
|
||||||
|
|
||||||
|
void ScriptFrame::StaticInitialize(void)
|
||||||
|
{
|
||||||
|
Dictionary::Ptr systemNS = new Dictionary();
|
||||||
|
ScriptGlobal::Set("System", systemNS);
|
||||||
|
AddImport(systemNS);
|
||||||
|
|
||||||
|
Dictionary::Ptr deprecatedNS = new Dictionary();
|
||||||
|
ScriptGlobal::Set("Deprecated", deprecatedNS);
|
||||||
|
AddImport(deprecatedNS);
|
||||||
|
}
|
||||||
|
|
||||||
ScriptFrame::ScriptFrame(void)
|
ScriptFrame::ScriptFrame(void)
|
||||||
: Locals(new Dictionary()), Self(ScriptGlobal::GetGlobals()), Sandboxed(false), Depth(0)
|
: Locals(new Dictionary()), Self(ScriptGlobal::GetGlobals()), Sandboxed(false), Depth(0)
|
||||||
{
|
{
|
||||||
|
@ -109,12 +122,6 @@ void ScriptFrame::PushFrame(ScriptFrame *frame)
|
||||||
|
|
||||||
Array::Ptr ScriptFrame::GetImports(void)
|
Array::Ptr ScriptFrame::GetImports(void)
|
||||||
{
|
{
|
||||||
if (!m_Imports) {
|
|
||||||
m_Imports = new Array();
|
|
||||||
m_Imports->Add(ScriptGlobal::Get("System"));
|
|
||||||
m_Imports->Add(ScriptGlobal::Get("Deprecated"));
|
|
||||||
}
|
|
||||||
|
|
||||||
return m_Imports;
|
return m_Imports;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,8 @@ struct I2_BASE_API ScriptFrame
|
||||||
ScriptFrame(const Value& self);
|
ScriptFrame(const Value& self);
|
||||||
~ScriptFrame(void);
|
~ScriptFrame(void);
|
||||||
|
|
||||||
|
static void StaticInitialize(void);
|
||||||
|
|
||||||
void IncreaseStackDepth(void);
|
void IncreaseStackDepth(void);
|
||||||
void DecreaseStackDepth(void);
|
void DecreaseStackDepth(void);
|
||||||
|
|
||||||
|
|
|
@ -215,7 +215,7 @@ static void AddSuggestion(std::vector<String>& matches, const String& word, cons
|
||||||
matches.push_back(suggestion);
|
matches.push_back(suggestion);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AddSuggestions(std::vector<String>& matches, const String& word, const String& pword, bool withPrototype, const Value& value)
|
static void AddSuggestions(std::vector<String>& matches, const String& word, const String& pword, bool withFields, const Value& value)
|
||||||
{
|
{
|
||||||
String prefix;
|
String prefix;
|
||||||
|
|
||||||
|
@ -231,15 +231,15 @@ static void AddSuggestions(std::vector<String>& matches, const String& word, con
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Type::Ptr type = value.GetReflectionType();
|
if (withFields) {
|
||||||
|
Type::Ptr type = value.GetReflectionType();
|
||||||
|
|
||||||
for (int i = 0; i < type->GetFieldCount(); i++) {
|
for (int i = 0; i < type->GetFieldCount(); i++) {
|
||||||
Field field = type->GetFieldInfo(i);
|
Field field = type->GetFieldInfo(i);
|
||||||
|
|
||||||
AddSuggestion(matches, word, prefix + field.Name);
|
AddSuggestion(matches, word, prefix + field.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (withPrototype) {
|
|
||||||
while (type) {
|
while (type) {
|
||||||
Object::Ptr prototype = type->GetPrototype();
|
Object::Ptr prototype = type->GetPrototype();
|
||||||
Dictionary::Ptr dict = dynamic_pointer_cast<Dictionary>(prototype);
|
Dictionary::Ptr dict = dynamic_pointer_cast<Dictionary>(prototype);
|
||||||
|
|
Loading…
Reference in New Issue