37 lines
		
	
	
		
			945 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			945 B
		
	
	
	
		
			C++
		
	
	
	
| /*
 | |
|  *  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
 |