mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 12:17:11 +01:00 
			
		
		
		
	Move MessageInfos into the run context
Together with the previous change, this means that `ScopedMessage` only needs to keep around a single unsigned int.
This commit is contained in:
		| @@ -19,20 +19,19 @@ namespace Catch { | ||||
|  | ||||
|  | ||||
|     ScopedMessage::ScopedMessage( MessageBuilder&& builder ): | ||||
|         m_info( CATCH_MOVE(builder.m_info) ) { | ||||
|         m_info.message = builder.m_stream.str(); | ||||
|         getResultCapture().pushScopedMessage( m_info ); | ||||
|         m_messageId( builder.m_info.sequence ) { | ||||
|         MessageInfo info( CATCH_MOVE( builder.m_info ) ); | ||||
|         info.message = builder.m_stream.str(); | ||||
|         getResultCapture().pushScopedMessage( CATCH_MOVE(info) ); | ||||
|     } | ||||
|  | ||||
|     ScopedMessage::ScopedMessage( ScopedMessage&& old ) noexcept: | ||||
|         m_info( CATCH_MOVE( old.m_info ) ) { | ||||
|         m_messageId( old.m_messageId ) { | ||||
|         old.m_moved = true; | ||||
|     } | ||||
|  | ||||
|     ScopedMessage::~ScopedMessage() { | ||||
|         if ( !m_moved ){ | ||||
|             getResultCapture().popScopedMessage(m_info.sequence); | ||||
|         } | ||||
|         if ( !m_moved ) { getResultCapture().popScopedMessage( m_messageId ); } | ||||
|     } | ||||
|  | ||||
|  | ||||
| @@ -109,7 +108,7 @@ namespace Catch { | ||||
|     void Capturer::captureValue( size_t index, std::string const& value ) { | ||||
|         assert( index < m_messages.size() ); | ||||
|         m_messages[index].message += value; | ||||
|         m_resultCapture.pushScopedMessage( m_messages[index] ); | ||||
|         m_resultCapture.pushScopedMessage( CATCH_MOVE(m_messages[index]) ); | ||||
|         m_captured++; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -57,7 +57,7 @@ namespace Catch { | ||||
|         ScopedMessage( ScopedMessage&& old ) noexcept; | ||||
|         ~ScopedMessage(); | ||||
|  | ||||
|         MessageInfo m_info; | ||||
|         unsigned int m_messageId; | ||||
|         bool m_moved = false; | ||||
|     }; | ||||
|  | ||||
|   | ||||
| @@ -62,7 +62,7 @@ namespace Catch { | ||||
|         virtual void benchmarkEnded( BenchmarkStats<> const& stats ) = 0; | ||||
|         virtual void benchmarkFailed( StringRef error ) = 0; | ||||
|  | ||||
|         virtual void pushScopedMessage( MessageInfo const& message ) = 0; | ||||
|         virtual void pushScopedMessage( MessageInfo&& message ) = 0; | ||||
|         virtual void popScopedMessage( unsigned int messageId ) = 0; | ||||
|  | ||||
|         virtual void emplaceUnscopedMessage( MessageBuilder&& builder ) = 0; | ||||
|   | ||||
| @@ -483,8 +483,8 @@ namespace Catch { | ||||
|         m_reporter->benchmarkFailed( error ); | ||||
|     } | ||||
|  | ||||
|     void RunContext::pushScopedMessage( MessageInfo const& message ) { | ||||
|         Detail::g_messages.push_back( message ); | ||||
|     void RunContext::pushScopedMessage( MessageInfo&& message ) { | ||||
|         Detail::g_messages.push_back( CATCH_MOVE(message) ); | ||||
|     } | ||||
|  | ||||
|     void RunContext::popScopedMessage( unsigned int messageId ) { | ||||
|   | ||||
| @@ -94,7 +94,7 @@ namespace Catch { | ||||
|         void benchmarkEnded( BenchmarkStats<> const& stats ) override; | ||||
|         void benchmarkFailed( StringRef error ) override; | ||||
|  | ||||
|         void pushScopedMessage( MessageInfo const& message ) override; | ||||
|         void pushScopedMessage( MessageInfo&& message ) override; | ||||
|         void popScopedMessage( unsigned int messageId ) override; | ||||
|  | ||||
|         void emplaceUnscopedMessage( MessageBuilder&& builder ) override; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský