| // Copyright Catch2 Authors | |
| // Distributed under the Boost Software License, Version 1.0. | |
| // (See accompanying file LICENSE.txt or copy at | |
| // https://www.boost.org/LICENSE_1_0.txt) | |
| // SPDX-License-Identifier: BSL-1.0 | |
| #include <catch2/internal/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() = default; | |
| 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 |