diff options
Diffstat (limited to 'src/catch2/internal/catch_singletons.cpp')
| -rw-r--r-- | src/catch2/internal/catch_singletons.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/catch2/internal/catch_singletons.cpp b/src/catch2/internal/catch_singletons.cpp new file mode 100644 index 0000000..4e856de --- /dev/null +++ b/src/catch2/internal/catch_singletons.cpp @@ -0,0 +1,36 @@ + +// 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 |
