// Description: Stream_Logger class
// Detail: Outputs logging information into a standard library stream
#ifndef PASTELSYS_STREAM_LOGGER_H
#define PASTELSYS_STREAM_LOGGER_H
#include "pastel/sys/logging/logger.h"
#include <iostream>
namespace Pastel
{
    class Stream_Logger
        : public Logger
    {
    public:
        explicit Stream_Logger(std::ostream* stream)
        : stream_(stream)
        {
        }
        virtual ~Stream_Logger()
        {
            finalize();
        }
        virtual Stream_Logger& operator<<(const std::string& value)
        {
            if (stream_)
            {
                (*stream_) << value;
            }
            return *this;
        }
        virtual void finalize()
        {
            if (stream_)
            {
                stream_->flush();
            }
        }
    private:
        std::ostream* stream_;
    };
}
#endif