mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
31 lines
781 B
C++
31 lines
781 B
C++
#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;
|
|
} |