#pragma once

#include <istream>
#include <ostream>
#include <string>

namespace Base {

class TextOutputStream
{
public:
    explicit TextOutputStream(std::ostream& stream)
        : output(stream)
    {}

    TextOutputStream& operator<<(const char* value)
    {
        output << value;
        return *this;
    }

private:
    std::ostream& output;
};

class TextInputStream
{
public:
    explicit TextInputStream(std::istream& stream)
        : input(stream)
    {}

    TextInputStream& operator>>(std::string& value)
    {
        input >> value;
        return *this;
    }

private:
    std::istream& input;
};

}  // namespace Base
