forked from catchorg/Catch2
		
	
		
			
				
	
	
		
			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
 |