#define INITIALIZE_ONCE(func) \
namespace { \
- I2_EXPORT bool l_InitializeOnce(InitializeOnceHelper(func)); \
+ I2_EXPORT bool l_InitializeOnce(icinga::InitializeOnceHelper(func)); \
}
}
#define REGISTRY_H
#include "base/i2-base.h"
-#include "base/singleton.h"
#include "base/qstring.h"
#include <map>
#include <boost/thread/mutex.hpp>
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);
#include "base/scriptfunction.h"
#include "base/registry.h"
+#include "base/singleton.h"
using namespace icinga;
ScriptFunction::Ptr func = make_shared<ScriptFunction>(function);
ScriptFunctionRegistry::GetInstance()->Register(name, func);
}
+
+ScriptFunctionRegistry *ScriptFunctionRegistry::GetInstance(void)
+{
+ return Singleton<ScriptFunctionRegistry>::GetInstance();
+}
+
#include "base/i2-base.h"
#include "base/registry.h"
+#include "base/singleton.h"
#include "base/value.h"
#include "base/scriptfunctionwrapper.h"
#include <vector>
* @ingroup base
*/
class I2_BASE_API ScriptFunctionRegistry : public Registry<ScriptFunctionRegistry, ScriptFunction::Ptr>
-{ };
+{
+public:
+ static ScriptFunctionRegistry *GetInstance(void);
+};
/**
* Helper class for registering ScriptFunction implementation classes.
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);
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);
}
#include "base/i2-base.h"
#include "base/registry.h"
+#include "base/singleton.h"
#include "base/value.h"
namespace icinga
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 */
#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>
#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>
};
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); \
+ }
}
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();
+}
+
#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
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
#include "db_ido/i2-db_ido.h"
#include "base/object.h"
#include "base/registry.h"
+#include "base/singleton.h"
namespace icinga
{
*
* @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.