diff options
Diffstat (limited to 'include/internal/catch_stream.h')
-rw-r--r-- | include/internal/catch_stream.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/include/internal/catch_stream.h b/include/internal/catch_stream.h new file mode 100644 index 0000000..5f22ad6 --- /dev/null +++ b/include/internal/catch_stream.h @@ -0,0 +1,63 @@ +/* + * 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_compiler_capabilities.h" +#include "catch_streambuf.h" + +#include <streambuf> +#include <ostream> +#include <fstream> + +namespace Catch { + + std::ostream& cout(); + std::ostream& cerr(); + + + struct IStream { + virtual ~IStream() CATCH_NOEXCEPT; + virtual std::ostream& stream() const = 0; + }; + + class FileStream : public IStream { + mutable std::ofstream m_ofs; + public: + FileStream( std::string const& filename ); + virtual ~FileStream() CATCH_NOEXCEPT; + public: // IStream + virtual std::ostream& stream() const CATCH_OVERRIDE; + }; + + + class CoutStream : public IStream { + mutable std::ostream m_os; + public: + CoutStream(); + virtual ~CoutStream() CATCH_NOEXCEPT; + + public: // IStream + virtual std::ostream& stream() const CATCH_OVERRIDE; + }; + + + class DebugOutStream : public IStream { + std::auto_ptr<StreamBufBase> m_streamBuf; + mutable std::ostream m_os; + public: + DebugOutStream(); + virtual ~DebugOutStream() CATCH_NOEXCEPT; + + public: // IStream + virtual std::ostream& stream() const CATCH_OVERRIDE; + }; +} + +#endif // TWOBLUECUBES_CATCH_STREAM_H_INCLUDED |