#pragma once

#include "Common.h"
#include "System/IO/TextWriter.h"
#include "System/Text/StringBuilder.h"

namespace DotNetDupe {
    namespace System {
        namespace IO {
            class StringWriter : public TextWriter {
            public:
                DOTNETDUPE_API StringWriter();
                DOTNETDUPE_API StringWriter(Text::StringBuilder& sbOutput);
                DOTNETDUPE_API virtual ~StringWriter() = default;

                DOTNETDUPE_API void Close() override;
                DOTNETDUPE_API void Dispose() override;
                DOTNETDUPE_API void Flush() override;
                DOTNETDUPE_API virtual Text::EncodingPtr GetEncoding() const override;

                DOTNETDUPE_API virtual String ToString() const;

                DOTNETDUPE_API void Write(bool bValue) override;
                DOTNETDUPE_API void Write(char chValue) override;
                DOTNETDUPE_API void Write(const String& sValue) override;
                DOTNETDUPE_API void Write(const char* pValue) override;
                DOTNETDUPE_API void Write(int iValue) override;
                DOTNETDUPE_API void Write(long long llValue) override;
                DOTNETDUPE_API void Write(float fValue) override;
                DOTNETDUPE_API void Write(double dValue) override;

                DOTNETDUPE_API void WriteLine() override;
                DOTNETDUPE_API void WriteLine(bool bValue) override;
                DOTNETDUPE_API void WriteLine(char chValue) override;
                DOTNETDUPE_API void WriteLine(const char* pValue) override;
                DOTNETDUPE_API void WriteLine(const String& sValue) override;
                DOTNETDUPE_API void WriteLine(int iValue) override;
                DOTNETDUPE_API void WriteLine(long long llValue) override;
                DOTNETDUPE_API void WriteLine(float fValue) override;
                DOTNETDUPE_API void WriteLine(double dValue) override;

            private:
                Text::StringBuilder* m_pSb;
                bool m_bIsOpen;
            };
        }
    }
}

Generated by OpenCppCoverage (Version: 0.9.9.0)