ACE3/extensions/common/singleton.hpp

31 lines
781 B
C++
Raw Normal View History

#include <cstdint>
#include <assert.h>
#pragma once
namespace ace {
template<typename T>
class singleton {
public:
static T & get() {
if (_singletonInstance == nullptr) {
assert(_initialized == false);
_initialized = true;
_singletonInstance = new T();
}
return *_singletonInstance;
}
static void release() {
delete _singletonInstance;
}
protected:
static T *_singletonInstance;
static bool _initialized;
};
template<typename T>
T* singleton<T>::_singletonInstance = nullptr;
template<typename T>
bool singleton<T>::_initialized = false;
}