mirror of https://github.com/procxx/kepka.git
				
				
				
			
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
| /*
 | |
|  *  Created by Phil on 31/12/2010.
 | |
|  *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.
 | |
|  *
 | |
|  *  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)
 | |
|  */
 | |
| #ifndef TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
 | |
| #define TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
 | |
| 
 | |
| #include <memory>
 | |
| 
 | |
| namespace Catch {
 | |
| 
 | |
|     struct IResultCapture;
 | |
|     struct IRunner;
 | |
|     struct IConfig;
 | |
|     struct IMutableContext;
 | |
| 
 | |
|     using IConfigPtr = std::shared_ptr<IConfig const>;
 | |
| 
 | |
|     struct IContext
 | |
|     {
 | |
|         virtual ~IContext();
 | |
| 
 | |
|         virtual IResultCapture* getResultCapture() = 0;
 | |
|         virtual IRunner* getRunner() = 0;
 | |
|         virtual IConfigPtr getConfig() const = 0;
 | |
|     };
 | |
| 
 | |
|     struct IMutableContext : IContext
 | |
|     {
 | |
|         virtual ~IMutableContext();
 | |
|         virtual void setResultCapture( IResultCapture* resultCapture ) = 0;
 | |
|         virtual void setRunner( IRunner* runner ) = 0;
 | |
|         virtual void setConfig( IConfigPtr const& config ) = 0;
 | |
| 
 | |
|     private:
 | |
|         static IMutableContext *currentContext;
 | |
|         friend IMutableContext& getCurrentMutableContext();
 | |
|         friend void cleanUpContext();
 | |
|         static void createContext();
 | |
|     };
 | |
| 
 | |
|     inline IMutableContext& getCurrentMutableContext()
 | |
|     {
 | |
|         if( !IMutableContext::currentContext )
 | |
|             IMutableContext::createContext();
 | |
|         return *IMutableContext::currentContext;
 | |
|     }
 | |
| 
 | |
|     inline IContext& getCurrentContext()
 | |
|     {
 | |
|         return getCurrentMutableContext();
 | |
|     }
 | |
| 
 | |
|     void cleanUpContext();
 | |
| }
 | |
| 
 | |
| #endif // TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
 |