Added generic singletons facility
<sigh> yes, I know - but we have them - may as well make them consistent and safer
This commit is contained in:
parent
38248f3f2c
commit
eb783fc20e
4 changed files with 84 additions and 0 deletions
36
include/internal/catch_singletons.cpp
Normal file
36
include/internal/catch_singletons.cpp
Normal file
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Created by Phil Nash on 15/6/2018.
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#include "catch_singletons.hpp"
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace Catch {
|
||||
|
||||
namespace {
|
||||
static auto getSingletons() -> std::vector<ISingleton*>*& {
|
||||
static std::vector<ISingleton*>* g_singletons = nullptr;
|
||||
if( !g_singletons )
|
||||
g_singletons = new std::vector<ISingleton*>();
|
||||
return g_singletons;
|
||||
}
|
||||
}
|
||||
|
||||
ISingleton::~ISingleton() {}
|
||||
|
||||
void addSingleton(ISingleton* singleton ) {
|
||||
getSingletons()->push_back( singleton );
|
||||
}
|
||||
void cleanupSingletons() {
|
||||
auto& singletons = getSingletons();
|
||||
for( auto singleton : *singletons )
|
||||
delete singleton;
|
||||
delete singletons;
|
||||
singletons = nullptr;
|
||||
}
|
||||
|
||||
} // namespace Catch
|
Loading…
Add table
Add a link
Reference in a new issue