From 3ec63324a823c19697720fda3eab1f18d297210c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Tue, 10 Aug 2021 00:14:18 +0200 Subject: [PATCH] Replace owning naked IStream pointers with unique_ptrs --- src/catch2/catch_config.cpp | 6 +----- src/catch2/catch_config.hpp | 2 -- src/catch2/internal/catch_stream.cpp | 8 ++++---- src/catch2/internal/catch_stream.hpp | 3 ++- 4 files changed, 7 insertions(+), 12 deletions(-) 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;