mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-04 05:09:53 +01:00
Migrated IReporterFactory to std::shared_ptr
This commit is contained in:
parent
338ba6b9ba
commit
dd78824697
@ -22,6 +22,8 @@ namespace Catch {
|
|||||||
struct IReporterFactory;
|
struct IReporterFactory;
|
||||||
struct ITagAliasRegistry;
|
struct ITagAliasRegistry;
|
||||||
|
|
||||||
|
using IReporterFactoryPtr = std::shared_ptr<IReporterFactory>;
|
||||||
|
|
||||||
struct IRegistryHub {
|
struct IRegistryHub {
|
||||||
virtual ~IRegistryHub();
|
virtual ~IRegistryHub();
|
||||||
|
|
||||||
@ -34,8 +36,8 @@ namespace Catch {
|
|||||||
|
|
||||||
struct IMutableRegistryHub {
|
struct IMutableRegistryHub {
|
||||||
virtual ~IMutableRegistryHub();
|
virtual ~IMutableRegistryHub();
|
||||||
virtual void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) = 0;
|
virtual void registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) = 0;
|
||||||
virtual void registerListener( Ptr<IReporterFactory> const& factory ) = 0;
|
virtual void registerListener( IReporterFactoryPtr const& factory ) = 0;
|
||||||
virtual void registerTest( TestCase const& testInfo ) = 0;
|
virtual void registerTest( TestCase const& testInfo ) = 0;
|
||||||
virtual void registerTranslator( const IExceptionTranslator* translator ) = 0;
|
virtual void registerTranslator( const IExceptionTranslator* translator ) = 0;
|
||||||
virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0;
|
virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0;
|
||||||
|
@ -236,15 +236,16 @@ namespace Catch
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct IReporterFactory : IShared {
|
struct IReporterFactory {
|
||||||
virtual ~IReporterFactory();
|
virtual ~IReporterFactory();
|
||||||
virtual IStreamingReporter* create( ReporterConfig const& config ) const = 0;
|
virtual IStreamingReporter* create( ReporterConfig const& config ) const = 0;
|
||||||
virtual std::string getDescription() const = 0;
|
virtual std::string getDescription() const = 0;
|
||||||
};
|
};
|
||||||
|
using IReporterFactoryPtr = std::shared_ptr<IReporterFactory>;
|
||||||
|
|
||||||
struct IReporterRegistry {
|
struct IReporterRegistry {
|
||||||
typedef std::map<std::string, Ptr<IReporterFactory> > FactoryMap;
|
using FactoryMap = std::map<std::string, IReporterFactoryPtr>;
|
||||||
typedef std::vector<Ptr<IReporterFactory> > Listeners;
|
using Listeners = std::vector<IReporterFactoryPtr>;
|
||||||
|
|
||||||
virtual ~IReporterRegistry();
|
virtual ~IReporterRegistry();
|
||||||
virtual IStreamingReporter* create( std::string const& name, IConfigPtr const& config ) const = 0;
|
virtual IStreamingReporter* create( std::string const& name, IConfigPtr const& config ) const = 0;
|
||||||
|
@ -42,10 +42,10 @@ namespace Catch {
|
|||||||
|
|
||||||
|
|
||||||
public: // IMutableRegistryHub
|
public: // IMutableRegistryHub
|
||||||
virtual void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) override {
|
virtual void registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) override {
|
||||||
m_reporterRegistry.registerReporter( name, factory );
|
m_reporterRegistry.registerReporter( name, factory );
|
||||||
}
|
}
|
||||||
virtual void registerListener( Ptr<IReporterFactory> const& factory ) override {
|
virtual void registerListener( IReporterFactoryPtr const& factory ) override {
|
||||||
m_reporterRegistry.registerListener( factory );
|
m_reporterRegistry.registerListener( factory );
|
||||||
}
|
}
|
||||||
virtual void registerTest( TestCase const& testInfo ) override {
|
virtual void registerTest( TestCase const& testInfo ) override {
|
||||||
|
@ -15,7 +15,7 @@ namespace Catch {
|
|||||||
template<typename T>
|
template<typename T>
|
||||||
class ReporterRegistrar {
|
class ReporterRegistrar {
|
||||||
|
|
||||||
class ReporterFactory : public SharedImpl<IReporterFactory> {
|
class ReporterFactory : public IReporterFactory {
|
||||||
|
|
||||||
virtual IStreamingReporter* create( ReporterConfig const& config ) const {
|
virtual IStreamingReporter* create( ReporterConfig const& config ) const {
|
||||||
return new T( config );
|
return new T( config );
|
||||||
@ -29,14 +29,14 @@ namespace Catch {
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
ReporterRegistrar( std::string const& name ) {
|
ReporterRegistrar( std::string const& name ) {
|
||||||
getMutableRegistryHub().registerReporter( name, new ReporterFactory() );
|
getMutableRegistryHub().registerReporter( name, std::make_shared<ReporterFactory>() );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
class ListenerRegistrar {
|
class ListenerRegistrar {
|
||||||
|
|
||||||
class ListenerFactory : public SharedImpl<IReporterFactory> {
|
class ListenerFactory : public IReporterFactory {
|
||||||
|
|
||||||
virtual IStreamingReporter* create( ReporterConfig const& config ) const {
|
virtual IStreamingReporter* create( ReporterConfig const& config ) const {
|
||||||
return new T( config );
|
return new T( config );
|
||||||
@ -49,7 +49,7 @@ namespace Catch {
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
ListenerRegistrar() {
|
ListenerRegistrar() {
|
||||||
getMutableRegistryHub().registerListener( new ListenerFactory() );
|
getMutableRegistryHub().registerListener( std::make_shared<ListenerFactory>() );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -27,10 +27,10 @@ namespace Catch {
|
|||||||
return it->second->create( ReporterConfig( config ) );
|
return it->second->create( ReporterConfig( config ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) {
|
void registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) {
|
||||||
m_factories.insert( std::make_pair( name, factory ) );
|
m_factories.insert( std::make_pair( name, factory ) );
|
||||||
}
|
}
|
||||||
void registerListener( Ptr<IReporterFactory> const& factory ) {
|
void registerListener( IReporterFactoryPtr const& factory ) {
|
||||||
m_listeners.push_back( factory );
|
m_listeners.push_back( factory );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user