mirror of https://github.com/procxx/kepka.git
				
				
				
			
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.4 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_REPORTER_REGISTRARS_HPP_INCLUDED
 | 
						|
#define TWOBLUECUBES_CATCH_REPORTER_REGISTRARS_HPP_INCLUDED
 | 
						|
 | 
						|
#include "catch_interfaces_registry_hub.h"
 | 
						|
 | 
						|
namespace Catch {
 | 
						|
 | 
						|
    template<typename T>
 | 
						|
    class ReporterRegistrar {
 | 
						|
 | 
						|
        class ReporterFactory : public IReporterFactory {
 | 
						|
 | 
						|
            virtual IStreamingReporterPtr create( ReporterConfig const& config ) const override {
 | 
						|
                return std::unique_ptr<T>( new T( config ) );
 | 
						|
            }
 | 
						|
 | 
						|
            virtual std::string getDescription() const override {
 | 
						|
                return T::getDescription();
 | 
						|
            }
 | 
						|
        };
 | 
						|
 | 
						|
    public:
 | 
						|
 | 
						|
        explicit ReporterRegistrar( std::string const& name ) {
 | 
						|
            getMutableRegistryHub().registerReporter( name, std::make_shared<ReporterFactory>() );
 | 
						|
        }
 | 
						|
    };
 | 
						|
 | 
						|
    template<typename T>
 | 
						|
    class ListenerRegistrar {
 | 
						|
 | 
						|
        class ListenerFactory : public IReporterFactory {
 | 
						|
 | 
						|
            virtual IStreamingReporterPtr create( ReporterConfig const& config ) const override {
 | 
						|
                return std::unique_ptr<T>( new T( config ) );
 | 
						|
            }
 | 
						|
            virtual std::string getDescription() const override {
 | 
						|
                return std::string();
 | 
						|
            }
 | 
						|
        };
 | 
						|
 | 
						|
    public:
 | 
						|
 | 
						|
        ListenerRegistrar() {
 | 
						|
            getMutableRegistryHub().registerListener( std::make_shared<ListenerFactory>() );
 | 
						|
        }
 | 
						|
    };
 | 
						|
}
 | 
						|
 | 
						|
#if !defined(CATCH_CONFIG_DISABLE)
 | 
						|
 | 
						|
#define CATCH_REGISTER_REPORTER( name, reporterType ) \
 | 
						|
    CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS          \
 | 
						|
    namespace{ Catch::ReporterRegistrar<reporterType> catch_internal_RegistrarFor##reporterType( name ); } \
 | 
						|
    CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
 | 
						|
 | 
						|
#define CATCH_REGISTER_LISTENER( listenerType ) \
 | 
						|
     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS   \
 | 
						|
     namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; } \
 | 
						|
     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
 | 
						|
#else // CATCH_CONFIG_DISABLE
 | 
						|
 | 
						|
#define CATCH_REGISTER_REPORTER(name, reporterType)
 | 
						|
#define CATCH_REGISTER_LISTENER(listenerType)
 | 
						|
 | 
						|
#endif // CATCH_CONFIG_DISABLE
 | 
						|
 | 
						|
#endif // TWOBLUECUBES_CATCH_REPORTER_REGISTRARS_HPP_INCLUDED
 |