
#ifndef __WFX_IO_OUTPUTSTREAM_H__
#define __WFX_IO_OUTPUTSTREAM_H__

#include <WFX/WFXIncludes.h>
#include <WFX/io/Stream.h>

namespace WFX {

    namespace io {

        /**
         * Outputstream base class
         */
        class OutputStream : public Stream {
            public:
                /** Ctor */
                OutputStream(std::ostream* s);
                OutputStream();
                virtual ~OutputStream();

                /** set the Stream */
                void setStream(std::ostream* s);
                
                /** output operators */
                virtual void operator <<(Int i);
                virtual void operator <<(UInt i);
                virtual void operator <<(Long i);
                virtual void operator <<(ULong i);
                virtual void operator <<(Short i);
                virtual void operator <<(UShort i);
                virtual void operator <<(Char i);
                virtual void operator <<(UChar i);
                virtual void operator <<(Real r);
                virtual void operator <<(const std::string& str);
                
            protected:
            private:
                /** Stream */
                std::ostream* OStream;
        };

    }

}

#endif //include guard


