| /* |
| * Created by Phil Nash on 1/2/2013. |
| * Copyright 2013 Two Blue Cubes Ltd. All rights reserved. |
| * |
| * Distributed under the Boost Software License, Version 1.0. (See accompanying |
| * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| */ |
| #ifndef TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED |
| #define TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED |
| |
| #include <string> |
| #include "catch_result_type.h" |
| #include "catch_common.h" |
| #include "catch_stream.h" |
| |
| namespace Catch { |
| |
| struct MessageInfo { |
| MessageInfo( std::string const& _macroName, |
| SourceLineInfo const& _lineInfo, |
| ResultWas::OfType _type ); |
| |
| std::string macroName; |
| std::string message; |
| SourceLineInfo lineInfo; |
| ResultWas::OfType type; |
| unsigned int sequence; |
| |
| bool operator == ( MessageInfo const& other ) const; |
| bool operator < ( MessageInfo const& other ) const; |
| private: |
| static unsigned int globalCount; |
| }; |
| |
| struct MessageStream { |
| |
| template<typename T> |
| MessageStream& operator << ( T const& value ) { |
| m_stream << value; |
| return *this; |
| } |
| |
| ReusableStringStream m_stream; |
| }; |
| |
| struct MessageBuilder : MessageStream { |
| MessageBuilder( std::string const& macroName, |
| SourceLineInfo const& lineInfo, |
| ResultWas::OfType type ); |
| |
| template<typename T> |
| MessageBuilder& operator << ( T const& value ) { |
| m_stream << value; |
| return *this; |
| } |
| |
| MessageInfo m_info; |
| }; |
| |
| class ScopedMessage { |
| public: |
| explicit ScopedMessage( MessageBuilder const& builder ); |
| ~ScopedMessage(); |
| |
| MessageInfo m_info; |
| }; |
| |
| } // end namespace Catch |
| |
| #endif // TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED |