
#ifndef __WFX_IO_OUTPUTSTREAMDECORATOR_H__
#define __WFX_IO_OUTPUTSTREAMDECORATOR_H__

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

namespace WFX {

    namespace io {

        /**
         * Outputstream decorator base class
         */
        class OutputStreamDecorator : public OutputStream {
            public:
                /** Ctor */
                OutputStreamDecorator(OutputStream* s);
                virtual ~OutputStreamDecorator();

                /** 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:
                /** Stream */
                OutputStream* Stream;
            private:
        };

    }

}

#endif //include guard


