diff --git a/src/catch2/catch_config.cpp b/src/catch2/catch_config.cpp index 7a4a0bda..0a3f83a2 100644 --- a/src/catch2/catch_config.cpp +++ b/src/catch2/catch_config.cpp @@ -18,7 +18,7 @@ namespace Catch { Config::Config( ConfigData const& data ) : m_data( data ), - m_stream( openStream() ) + m_stream( Catch::makeStream(m_data.outputFilename) ) { // We need to trim filter specs to avoid trouble with superfluous // whitespace (esp. important for bdd macros, as those are manually @@ -86,8 +86,4 @@ namespace Catch { unsigned int Config::benchmarkResamples() const { return m_data.benchmarkResamples; } std::chrono::milliseconds Config::benchmarkWarmupTime() const { return std::chrono::milliseconds(m_data.benchmarkWarmupTime); } - IStream const* Config::openStream() { - return Catch::makeStream(m_data.outputFilename); - } - } // end namespace Catch diff --git a/src/catch2/catch_config.hpp b/src/catch2/catch_config.hpp index 10d0487a..2f44518c 100644 --- a/src/catch2/catch_config.hpp +++ b/src/catch2/catch_config.hpp @@ -110,8 +110,6 @@ namespace Catch { std::chrono::milliseconds benchmarkWarmupTime() const override; private: - - IStream const* openStream(); ConfigData m_data; Detail::unique_ptr m_stream; diff --git a/src/catch2/internal/catch_stream.cpp b/src/catch2/internal/catch_stream.cpp index 38919f8f..c1e0d1dc 100644 --- a/src/catch2/internal/catch_stream.cpp +++ b/src/catch2/internal/catch_stream.cpp @@ -123,17 +123,17 @@ namespace Detail { /////////////////////////////////////////////////////////////////////////// - auto makeStream( std::string const& filename ) -> IStream const* { + auto makeStream( std::string const& filename ) -> Detail::unique_ptr { if( filename.empty() ) - return new Detail::CoutStream(); + return Detail::make_unique(); else if( filename[0] == '%' ) { if( filename == "%debug" ) - return new Detail::DebugOutStream(); + return Detail::make_unique(); else CATCH_ERROR( "Unrecognised stream: '" << filename << "'" ); } else - return new Detail::FileStream( filename ); + return Detail::make_unique( filename ); } diff --git a/src/catch2/internal/catch_stream.hpp b/src/catch2/internal/catch_stream.hpp index b764f825..39a4c0c8 100644 --- a/src/catch2/internal/catch_stream.hpp +++ b/src/catch2/internal/catch_stream.hpp @@ -9,6 +9,7 @@ #define CATCH_STREAM_HPP_INCLUDED #include +#include #include #include @@ -26,7 +27,7 @@ namespace Catch { virtual std::ostream& stream() const = 0; }; - auto makeStream( std::string const& filename ) -> IStream const*; + auto makeStream( std::string const& filename ) -> Detail::unique_ptr; class ReusableStringStream : Detail::NonCopyable { std::size_t m_index;