// Copyright Catch2 Authors // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE.txt or copy at // https://www.boost.org/LICENSE_1_0.txt) // SPDX-License-Identifier: BSL-1.0 #ifndef CATCH_INTERFACES_REPORTER_REGISTRY_HPP_INCLUDED #define CATCH_INTERFACES_REPORTER_REGISTRY_HPP_INCLUDED #include #include #include #include #include namespace Catch { class IConfig; class IEventListener; using IEventListenerPtr = Detail::unique_ptr; class IReporterFactory; using IReporterFactoryPtr = Detail::unique_ptr; struct ReporterConfig; class EventListenerFactory; class IReporterRegistry { public: using FactoryMap = std::map; using Listeners = std::vector>; virtual ~IReporterRegistry(); // = default virtual IEventListenerPtr create( std::string const& name, ReporterConfig&& config ) const = 0; virtual FactoryMap const& getFactories() const = 0; virtual Listeners const& getListeners() const = 0; }; } // end namespace Catch #endif // CATCH_INTERFACES_REPORTER_REGISTRY_HPP_INCLUDED