From 0f81c357c097815ea0744d2e0ff14223441ba922 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Wed, 19 Apr 2017 15:30:11 +0200 Subject: [PATCH] Implement source_location attribute for the ConfigObject class refs #5120 --- lib/base/configobject.cpp | 13 +++++++++++++ lib/base/configobject.hpp | 2 ++ lib/base/configobject.ti | 3 +++ 3 files changed, 18 insertions(+) diff --git a/lib/base/configobject.cpp b/lib/base/configobject.cpp index 019916925..f155af3ba 100644 --- a/lib/base/configobject.cpp +++ b/lib/base/configobject.cpp @@ -710,5 +710,18 @@ ConfigObject::Ptr ConfigObject::GetZone(void) const return m_Zone; } +Dictionary::Ptr ConfigObject::GetSourceLocation(void) const +{ + DebugInfo di = GetDebugInfo(); + + Dictionary::Ptr result = new Dictionary(); + result->Set("path", di.Path); + result->Set("first_line", di.FirstLine); + result->Set("first_column", di.FirstColumn); + result->Set("last_line", di.LastLine); + result->Set("last_column", di.LastColumn); + return result; +} + NameComposer::~NameComposer(void) { } diff --git a/lib/base/configobject.hpp b/lib/base/configobject.hpp index 66253d80f..b1f45b6f5 100644 --- a/lib/base/configobject.hpp +++ b/lib/base/configobject.hpp @@ -75,6 +75,8 @@ public: virtual void OnAllConfigLoaded(void); virtual void OnStateLoaded(void); + virtual Dictionary::Ptr GetSourceLocation(void) const override; + template static intrusive_ptr GetObject(const String& name) { diff --git a/lib/base/configobject.ti b/lib/base/configobject.ti index a9892417f..9fe9af42f 100644 --- a/lib/base/configobject.ti +++ b/lib/base/configobject.ti @@ -85,6 +85,9 @@ abstract class ConfigObject : ConfigObjectBase < ConfigType [config, no_user_modify] name(Zone) zone (ZoneName); [config, no_user_modify] String package; [config, get_protected, no_user_modify] Array::Ptr templates; + [config, no_storage, no_user_modify] Dictionary::Ptr source_location { + get; + }; [get_protected, no_user_modify] bool active; [get_protected, no_user_modify] bool paused { default {{{ return true; }}}