From 7a87fc0d5e5a331d5b7be58ce1d47ca896574800 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Thu, 1 Aug 2013 11:14:33 +0200 Subject: [PATCH] Fix INITIALIZE_ONCE(). --- lib/base/initialize.h | 4 ++-- lib/ido/dbconnection.cpp | 2 +- lib/ido/dbconnection.h | 3 ++- lib/ido/dbobject.cpp | 2 +- lib/ido/dbobject.h | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/base/initialize.h b/lib/base/initialize.h index 0a841fa5f..22cb12925 100644 --- a/lib/base/initialize.h +++ b/lib/base/initialize.h @@ -34,8 +34,8 @@ inline bool InitializeOnceHelper(InitializeFunc func) return true; } -#define INITIALIZE_ONCE(func) \ - static bool l_InitializeOnce ## __LINE__(InitializeOnceHelper(func)); +#define INITIALIZE_ONCE(name, func) \ + bool l_InitializeOnce ## name(InitializeOnceHelper(func)); } diff --git a/lib/ido/dbconnection.cpp b/lib/ido/dbconnection.cpp index 5fd6ec233..408d5270c 100644 --- a/lib/ido/dbconnection.cpp +++ b/lib/ido/dbconnection.cpp @@ -29,7 +29,7 @@ using namespace icinga; Timer::Ptr DbConnection::m_ProgramStatusTimer; -INITIALIZE_ONCE(&DbConnection::StaticInitialize); +INITIALIZE_ONCE(DbConnection, &DbConnection::StaticInitialize); DbConnection::DbConnection(const Dictionary::Ptr& serializedUpdate) : DynamicObject(serializedUpdate) diff --git a/lib/ido/dbconnection.h b/lib/ido/dbconnection.h index d98388b8c..7aa2163b2 100644 --- a/lib/ido/dbconnection.h +++ b/lib/ido/dbconnection.h @@ -40,6 +40,8 @@ public: DbConnection(const Dictionary::Ptr& serializedUpdate); + static void StaticInitialize(void); + void SetReference(const DbObject::Ptr& dbobj, const DbReference& dbref); DbReference GetReference(const DbObject::Ptr& dbobj) const; @@ -60,7 +62,6 @@ private: std::map m_References; static Timer::Ptr m_ProgramStatusTimer; - static void StaticInitialize(void); static void ProgramStatusHandler(void); friend class DbType; diff --git a/lib/ido/dbobject.cpp b/lib/ido/dbobject.cpp index 7d6327f96..c9f4d559a 100644 --- a/lib/ido/dbobject.cpp +++ b/lib/ido/dbobject.cpp @@ -34,7 +34,7 @@ boost::signals2::signal DbObject::OnRegistered; boost::signals2::signal DbObject::OnUnregistered; boost::signals2::signal DbObject::OnQuery; -INITIALIZE_ONCE(&DbObject::StaticInitialize); +INITIALIZE_ONCE(DbObject, &DbObject::StaticInitialize); DbObject::DbObject(const shared_ptr& type, const String& name1, const String& name2) : m_Name1(name1), m_Name2(name2), m_Type(type), m_LastConfigUpdate(0), m_LastStatusUpdate(0) diff --git a/lib/ido/dbobject.h b/lib/ido/dbobject.h index 0f6d47d71..69486e70f 100644 --- a/lib/ido/dbobject.h +++ b/lib/ido/dbobject.h @@ -46,6 +46,8 @@ class DbObject : public Object public: DECLARE_PTR_TYPEDEFS(DbObject); + static void StaticInitialize(void); + void SetObject(const DynamicObject::Ptr& object); DynamicObject::Ptr GetObject(void) const; @@ -87,8 +89,6 @@ private: friend boost::shared_ptr boost::make_shared<>(const icinga::String&, const icinga::String&); - static void StaticInitialize(void); - static void ObjectRegisteredHandler(const DynamicObject::Ptr& object); static void ObjectUnregisteredHandler(const DynamicObject::Ptr& object); static void AttributesChangedHandler(const DynamicObject::Ptr& object, const std::set& attributes); -- 2.40.0