| /* |
| * 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 |