|  | /* | 
|  | *  Created by Phil on 2/12/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_STREAM_H_INCLUDED | 
|  | #define TWOBLUECUBES_CATCH_STREAM_H_INCLUDED | 
|  |  | 
|  | #include "catch_common.h" | 
|  |  | 
|  | #include <iosfwd> | 
|  | #include <cstddef> | 
|  | #include <ostream> | 
|  |  | 
|  | namespace Catch { | 
|  |  | 
|  | std::ostream& cout(); | 
|  | std::ostream& cerr(); | 
|  | std::ostream& clog(); | 
|  |  | 
|  | class StringRef; | 
|  |  | 
|  | struct IStream { | 
|  | virtual ~IStream(); | 
|  | virtual std::ostream& stream() const = 0; | 
|  | }; | 
|  |  | 
|  | auto makeStream( StringRef const &filename ) -> IStream const*; | 
|  |  | 
|  | class ReusableStringStream : NonCopyable { | 
|  | std::size_t m_index; | 
|  | std::ostream* m_oss; | 
|  | public: | 
|  | ReusableStringStream(); | 
|  | ~ReusableStringStream(); | 
|  |  | 
|  | auto str() const -> std::string; | 
|  |  | 
|  | template<typename T> | 
|  | auto operator << ( T const& value ) -> ReusableStringStream& { | 
|  | *m_oss << value; | 
|  | return *this; | 
|  | } | 
|  | auto get() -> std::ostream& { return *m_oss; } | 
|  | }; | 
|  | } | 
|  |  | 
|  | #endif // TWOBLUECUBES_CATCH_STREAM_H_INCLUDED |