]> granicus.if.org Git - icinga2/commitdiff
Improve compatibility with -fvisibility=hidden.
authorGunnar Beutner <gunnar@beutner.name>
Sat, 30 Nov 2013 16:47:53 +0000 (17:47 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 2 Dec 2013 10:07:41 +0000 (11:07 +0100)
Refs #5246

lib/base/initialize.h
lib/base/registry.h
lib/base/scriptfunction.cpp
lib/base/scriptfunction.h
lib/base/scriptvariable.cpp
lib/base/scriptvariable.h
lib/base/threadpool.cpp
lib/config/configcompiler.h
lib/config/configtype.cpp
lib/config/configtype.h
lib/db_ido/dbtype.h

index f465176dc1d72a05de6b69107649ebca72dbad5c..9076c53af35c0ec1ea70b8664a0b5cd56a0d85ea 100644 (file)
@@ -36,7 +36,7 @@ inline bool InitializeOnceHelper(InitializeFunc func)
 
 #define INITIALIZE_ONCE(func) \
        namespace { \
-               I2_EXPORT bool l_InitializeOnce(InitializeOnceHelper(func)); \
+               I2_EXPORT bool l_InitializeOnce(icinga::InitializeOnceHelper(func)); \
        }
 
 }
index 666fa9f598a44d886b49b9c5e968b36b48003e81..3940f6a2e4683b25d1bd02167e603642d222098e 100644 (file)
@@ -21,7 +21,6 @@
 #define REGISTRY_H
 
 #include "base/i2-base.h"
-#include "base/singleton.h"
 #include "base/qstring.h"
 #include <map>
 #include <boost/thread/mutex.hpp>
@@ -42,11 +41,6 @@ class Registry
 public:
        typedef std::map<String, T> ItemMap;
 
-       static Registry<U, T> *GetInstance(void)
-       {
-               return Singleton<Registry<U, T> >::GetInstance();
-       }
-
        void RegisterIfNew(const String& name, const T& item)
        {
                boost::mutex::scoped_lock lock(m_Mutex);
index 5a1e93619bf036b994e6e016e292c56e85bc75bd..a5488e986d073146afff6b4c6087b52bf15b7d38 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "base/scriptfunction.h"
 #include "base/registry.h"
+#include "base/singleton.h"
 
 using namespace icinga;
 
@@ -36,3 +37,9 @@ RegisterFunctionHelper::RegisterFunctionHelper(const String& name, const ScriptF
        ScriptFunction::Ptr func = make_shared<ScriptFunction>(function);
        ScriptFunctionRegistry::GetInstance()->Register(name, func);
 }
+
+ScriptFunctionRegistry *ScriptFunctionRegistry::GetInstance(void)
+{
+       return Singleton<ScriptFunctionRegistry>::GetInstance();
+}
+
index e0299ad4d365ee24049fed56539e5db2d6d157f0..1fa5847472a4faf8a5bcca983d12715b1de9ef14 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "base/i2-base.h"
 #include "base/registry.h"
+#include "base/singleton.h"
 #include "base/value.h"
 #include "base/scriptfunctionwrapper.h"
 #include <vector>
@@ -56,7 +57,10 @@ private:
  * @ingroup base
  */
 class I2_BASE_API ScriptFunctionRegistry : public Registry<ScriptFunctionRegistry, ScriptFunction::Ptr>
-{ };
+{
+public:
+       static ScriptFunctionRegistry *GetInstance(void);
+};
 
 /**
  * Helper class for registering ScriptFunction implementation classes.
index 73d7ff228926316e6f878749a2202494403c4a5f..5ae70345161f817c39de6494988b87f03b6267e1 100644 (file)
 
 using namespace icinga;
 
-Registry<ScriptVariable, Value> ScriptVariable::m_Registry;
-
 Value ScriptVariable::Get(const String& name)
 {
-       Value value = m_Registry.GetItem(name);
+       Value value = ScriptVariableRegistry::GetInstance()->GetItem(name);
        if (value.IsEmpty())
                Log(LogWarning, "icinga", "Tried to access empty variable: " + name);
 
@@ -35,10 +33,10 @@ Value ScriptVariable::Get(const String& name)
 
 void ScriptVariable::Set(const String& name, const Value& value)
 {
-       m_Registry.Register(name, value);
+       ScriptVariableRegistry::GetInstance()->Register(name, value);
 }
 
 void ScriptVariable::Declare(const String& name, const Value& value)
 {
-       m_Registry.RegisterIfNew(name, value);
+       ScriptVariableRegistry::GetInstance()->RegisterIfNew(name, value);
 }
index 7f44ce27d8ac0613157a715efeeda02a44e6f2aa..b50dc47f6ae98180dd6995aa87b70f5276fcf02b 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "base/i2-base.h"
 #include "base/registry.h"
+#include "base/singleton.h"
 #include "base/value.h"
 
 namespace icinga
@@ -43,6 +44,15 @@ private:
        static Registry<ScriptVariable, Value> m_Registry;
 };
 
+class I2_BASE_API ScriptVariableRegistry : public Registry<ScriptVariableRegistry, Value>
+{
+public:
+       static inline ScriptVariableRegistry *GetInstance(void)
+       {
+               return Singleton<ScriptVariableRegistry>::GetInstance();
+       }
+};
+
 }
 
 #endif /* SCRIPTVARIABLE_H */
index 257a67902f9f083ed1c5e53beb85d7e6f5ba55b4..f15d07c240c3504482ba2a3cf7105421ddf2fa29 100644 (file)
@@ -22,7 +22,6 @@
 #include "base/convert.h"
 #include "base/debug.h"
 #include "base/utility.h"
-#include "base/scriptvariable.h"
 #include "base/application.h"
 #include "base/exception.h"
 #include <sstream>
index c38fd4f968cbbcd859cdc4e965a7de0951594296..fbb796ed80141b90695035b04fa5492dbe30ef3c 100644 (file)
@@ -23,6 +23,8 @@
 #include "config/i2-config.h"
 #include "config/debuginfo.h"
 #include "base/registry.h"
+#include "base/initialize.h"
+#include "base/singleton.h"
 #include <iostream>
 #include <boost/function.hpp>
 
@@ -72,24 +74,23 @@ private:
 };
 
 class I2_CONFIG_API ConfigFragmentRegistry : public Registry<ConfigFragmentRegistry, String>
-{ };
-
-/**
- * Helper class for registering config fragments.
- *
- * @ingroup base
- */
-class RegisterConfigFragmentHelper
 {
 public:
-       RegisterConfigFragmentHelper(const String& name, const String& fragment)
+       static inline ConfigFragmentRegistry *GetInstance(void)
        {
-               ConfigFragmentRegistry::GetInstance()->Register(name, fragment);
+               return Singleton<ConfigFragmentRegistry>::GetInstance();
        }
 };
 
 #define REGISTER_CONFIG_FRAGMENT(id, name, fragment) \
-       I2_EXPORT icinga::RegisterConfigFragmentHelper g_RegisterCF_ ## id(name, fragment)
+       namespace { \
+               void RegisterConfigFragment(void) \
+               { \
+                       icinga::ConfigFragmentRegistry::GetInstance()->Register(name, fragment); \
+               } \
+               \
+               INITIALIZE_ONCE(RegisterConfigFragment); \
+       }
 
 }
 
index d9b1106f8fabf401540c6a62ce92dc41bdbc59f0..3174e9516a44f463fdd7030c3a2467edb45ad768 100644 (file)
@@ -278,20 +278,26 @@ void ConfigType::ValidateArray(const Array::Ptr& array,
 
 void ConfigType::Register(void)
 {
-       Registry<ConfigType, ConfigType::Ptr>::GetInstance()->Register(GetName(), GetSelf());
+       ConfigTypeRegistry::GetInstance()->Register(GetName(), GetSelf());
 }
 
 ConfigType::Ptr ConfigType::GetByName(const String& name)
 {
-       return Registry<ConfigType, ConfigType::Ptr>::GetInstance()->GetItem(name);
+       return ConfigTypeRegistry::GetInstance()->GetItem(name);
 }
 
-Registry<ConfigType, ConfigType::Ptr>::ItemMap ConfigType::GetTypes(void)
+ConfigTypeRegistry::ItemMap ConfigType::GetTypes(void)
 {
-       return Registry<ConfigType, ConfigType::Ptr>::GetInstance()->GetItems();
+       return ConfigTypeRegistry::GetInstance()->GetItems();
 }
 
 void ConfigType::DiscardTypes(void)
 {
-       Registry<ConfigType, ConfigType::Ptr>::GetInstance()->Clear();
+       ConfigTypeRegistry::GetInstance()->Clear();
 }
+
+ConfigTypeRegistry *ConfigTypeRegistry::GetInstance(void)
+{
+       return Singleton<ConfigTypeRegistry>::GetInstance();
+}
+
index feedb0639c1ac39f34073625086ccc8052711d30..ff02f9af5bf6cced276bb4249893c3beef951f6d 100644 (file)
@@ -26,6 +26,7 @@
 #include "config/configitem.h"\r
 #include "base/array.h"\r
 #include "base/registry.h"\r
+#include "base/singleton.h"\r
 \r
 namespace icinga\r
 {\r
@@ -74,6 +75,12 @@ private:
        static void AddParentRules(std::vector<TypeRuleList::Ptr>& ruleLists, const ConfigType::Ptr& item);\r
 };\r
 \r
+class I2_CONFIG_API ConfigTypeRegistry : public Registry<ConfigTypeRegistry, ConfigType::Ptr>\r
+{\r
+public:\r
+       static ConfigTypeRegistry *GetInstance(void);\r
+};\r
+\r
 }\r
 \r
 #endif /* CONFIGTYPE_H */\r
index 65e52b8ed25614dbf2ce454b20f44b125352882a..66fc3a843c30f59a7bb65e12674b3a703a030900 100644 (file)
@@ -23,6 +23,7 @@
 #include "db_ido/i2-db_ido.h"
 #include "base/object.h"
 #include "base/registry.h"
+#include "base/singleton.h"
 
 namespace icinga
 {
@@ -75,8 +76,14 @@ private:
  *
  * @ingroup ido
  */
-class DbTypeRegistry : public Registry<DbTypeRegistry, DbType::Ptr>
-{ };
+class I2_DB_IDO_API DbTypeRegistry : public Registry<DbTypeRegistry, DbType::Ptr>
+{
+public:
+       static inline DbTypeRegistry *GetInstance(void)
+       {
+               return Singleton<DbTypeRegistry>::GetInstance();
+       }
+};
 
 /**
  * Helper class for registering DynamicObject implementation classes.