mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-30 19:57:10 +01:00 
			
		
		
		
	Migrated IStreamingReporter from Ptr to std::shared_ptr
This commit is contained in:
		| @@ -21,8 +21,8 @@ | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
|     Ptr<IStreamingReporter> createReporter( std::string const& reporterName, IConfigPtr const& config ) { | ||||
|         Ptr<IStreamingReporter> reporter = getRegistryHub().getReporterRegistry().create( reporterName, config ); | ||||
|     IStreamingReporterPtr createReporter( std::string const& reporterName, IConfigPtr const& config ) { | ||||
|         IStreamingReporterPtr reporter = getRegistryHub().getReporterRegistry().create( reporterName, config ); | ||||
|         if( !reporter ) { | ||||
|             std::ostringstream oss; | ||||
|             oss << "No reporter registered with name: '" << reporterName << "'"; | ||||
| @@ -31,17 +31,17 @@ namespace Catch { | ||||
|         return reporter; | ||||
|     } | ||||
|  | ||||
|     Ptr<IStreamingReporter> makeReporter( std::shared_ptr<Config> const& config ) { | ||||
|     IStreamingReporterPtr makeReporter( std::shared_ptr<Config> const& config ) { | ||||
|         std::vector<std::string> reporters = config->getReporterNames(); | ||||
|         if( reporters.empty() ) | ||||
|             reporters.push_back( "console" ); | ||||
|  | ||||
|         Ptr<IStreamingReporter> reporter; | ||||
|         IStreamingReporterPtr reporter; | ||||
|         for( auto const& name : reporters ) | ||||
|             reporter = addReporter( reporter, createReporter( name, config ) ); | ||||
|         return reporter; | ||||
|     } | ||||
|     Ptr<IStreamingReporter> addListeners( IConfigPtr const& config, Ptr<IStreamingReporter> reporters ) { | ||||
|     IStreamingReporterPtr addListeners( IConfigPtr const& config, IStreamingReporterPtr reporters ) { | ||||
|         auto const& listeners = getRegistryHub().getReporterRegistry().getListeners(); | ||||
|         for( auto const& listener : listeners ) | ||||
|             reporters = addReporter(reporters, listener->create( ReporterConfig( config ) ) ); | ||||
| @@ -53,7 +53,7 @@ namespace Catch { | ||||
|  | ||||
|         IConfigPtr iconfig = config; | ||||
|  | ||||
|         Ptr<IStreamingReporter> reporter = makeReporter( config ); | ||||
|         IStreamingReporterPtr reporter = makeReporter( config ); | ||||
|         reporter = addListeners( iconfig, reporter ); | ||||
|  | ||||
|         RunContext context( iconfig, reporter ); | ||||
|   | ||||
| @@ -204,7 +204,7 @@ namespace Catch | ||||
|  | ||||
|     class MultipleReporters; | ||||
|  | ||||
|     struct IStreamingReporter : IShared { | ||||
|     struct IStreamingReporter { | ||||
|         virtual ~IStreamingReporter(); | ||||
|  | ||||
|         // Implementing class must also provide the following static method: | ||||
| @@ -234,11 +234,11 @@ namespace Catch | ||||
|  | ||||
|         virtual MultipleReporters* tryAsMulti() { return nullptr; } | ||||
|     }; | ||||
|  | ||||
|     using IStreamingReporterPtr = std::shared_ptr<IStreamingReporter>; | ||||
|  | ||||
|     struct IReporterFactory { | ||||
|         virtual ~IReporterFactory(); | ||||
|         virtual IStreamingReporter* create( ReporterConfig const& config ) const = 0; | ||||
|         virtual IStreamingReporterPtr create( ReporterConfig const& config ) const = 0; | ||||
|         virtual std::string getDescription() const = 0; | ||||
|     }; | ||||
|     using IReporterFactoryPtr = std::shared_ptr<IReporterFactory>; | ||||
| @@ -248,12 +248,12 @@ namespace Catch | ||||
|         using Listeners = std::vector<IReporterFactoryPtr>; | ||||
|  | ||||
|         virtual ~IReporterRegistry(); | ||||
|         virtual IStreamingReporter* create( std::string const& name, IConfigPtr const& config ) const = 0; | ||||
|         virtual IStreamingReporterPtr create( std::string const& name, IConfigPtr const& config ) const = 0; | ||||
|         virtual FactoryMap const& getFactories() const = 0; | ||||
|         virtual Listeners const& getListeners() const = 0; | ||||
|     }; | ||||
|  | ||||
|     Ptr<IStreamingReporter> addReporter( Ptr<IStreamingReporter> const& existingReporter, Ptr<IStreamingReporter> const& additionalReporter ); | ||||
|     IStreamingReporterPtr addReporter( IStreamingReporterPtr const& existingReporter, IStreamingReporterPtr const& additionalReporter ); | ||||
|  | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -17,8 +17,8 @@ namespace Catch { | ||||
|  | ||||
|         class ReporterFactory : public IReporterFactory { | ||||
|  | ||||
|             virtual IStreamingReporter* create( ReporterConfig const& config ) const { | ||||
|                 return new T( config ); | ||||
|             virtual IStreamingReporterPtr create( ReporterConfig const& config ) const { | ||||
|                 return std::make_shared<T>( config ); | ||||
|             } | ||||
|  | ||||
|             virtual std::string getDescription() const { | ||||
| @@ -38,8 +38,8 @@ namespace Catch { | ||||
|  | ||||
|         class ListenerFactory : public IReporterFactory { | ||||
|  | ||||
|             virtual IStreamingReporter* create( ReporterConfig const& config ) const { | ||||
|                 return new T( config ); | ||||
|             virtual IStreamingReporterPtr create( ReporterConfig const& config ) const { | ||||
|                 return std::make_shared<T>( config ); | ||||
|             } | ||||
|             virtual std::string getDescription() const { | ||||
|                 return std::string(); | ||||
|   | ||||
| @@ -20,7 +20,7 @@ namespace Catch { | ||||
|  | ||||
|         virtual ~ReporterRegistry() override {} | ||||
|  | ||||
|         virtual IStreamingReporter* create( std::string const& name, IConfigPtr const& config ) const override { | ||||
|         virtual IStreamingReporterPtr create( std::string const& name, IConfigPtr const& config ) const override { | ||||
|             FactoryMap::const_iterator it =  m_factories.find( name ); | ||||
|             if( it == m_factories.end() ) | ||||
|                 return nullptr; | ||||
|   | ||||
| @@ -59,7 +59,7 @@ namespace Catch { | ||||
|  | ||||
|     public: | ||||
|  | ||||
|         explicit RunContext( IConfigPtr const& _config, Ptr<IStreamingReporter> const& reporter ) | ||||
|         explicit RunContext( IConfigPtr const& _config, IStreamingReporterPtr const& reporter ) | ||||
|         :   m_runInfo( _config->name() ), | ||||
|             m_context( getCurrentMutableContext() ), | ||||
|             m_config( _config ), | ||||
| @@ -355,7 +355,7 @@ namespace Catch { | ||||
|  | ||||
|         IConfigPtr m_config; | ||||
|         Totals m_totals; | ||||
|         Ptr<IStreamingReporter> m_reporter; | ||||
|         IStreamingReporterPtr m_reporter; | ||||
|         std::vector<MessageInfo> m_messages; | ||||
|         AssertionInfo m_lastAssertionInfo; | ||||
|         std::vector<SectionEndInfo> m_unfinishedSections; | ||||
|   | ||||
| @@ -13,11 +13,11 @@ | ||||
| namespace Catch { | ||||
|  | ||||
| class MultipleReporters : public SharedImpl<IStreamingReporter> { | ||||
|     typedef std::vector<Ptr<IStreamingReporter> > Reporters; | ||||
|     typedef std::vector<IStreamingReporterPtr > Reporters; | ||||
|     Reporters m_reporters; | ||||
|  | ||||
| public: | ||||
|     void add( Ptr<IStreamingReporter> const& reporter ) { | ||||
|     void add( IStreamingReporterPtr const& reporter ) { | ||||
|         m_reporters.push_back( reporter ); | ||||
|     } | ||||
|  | ||||
| @@ -101,14 +101,14 @@ public: // IStreamingReporter | ||||
|  | ||||
| }; | ||||
|  | ||||
| Ptr<IStreamingReporter> addReporter( Ptr<IStreamingReporter> const& existingReporter, Ptr<IStreamingReporter> const& additionalReporter ) { | ||||
|     Ptr<IStreamingReporter> resultingReporter; | ||||
| IStreamingReporterPtr addReporter( IStreamingReporterPtr const& existingReporter, IStreamingReporterPtr const& additionalReporter ) { | ||||
|     IStreamingReporterPtr resultingReporter; | ||||
|  | ||||
|     if( existingReporter ) { | ||||
|         MultipleReporters* multi = existingReporter->tryAsMulti(); | ||||
|         if( !multi ) { | ||||
|             multi = new MultipleReporters; | ||||
|             resultingReporter = Ptr<IStreamingReporter>( multi ); | ||||
|             resultingReporter = IStreamingReporterPtr( multi ); | ||||
|             if( existingReporter ) | ||||
|                 multi->add( existingReporter ); | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash