aboutsummaryrefslogtreecommitdiffstats
path: root/src/catch2/internal/catch_singletons.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/catch2/internal/catch_singletons.cpp')
-rw-r--r--src/catch2/internal/catch_singletons.cpp36
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