
#ifndef __WFX_IO_INPUTSTREAMDECORATOR_H__
#define __WFX_IO_INPUTSTREAMDECORATOR_H__

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

namespace WFX {

    namespace io {

        /**
         * Inputstream decorator base class
         */
        class InputStreamDecorator : public InputStream {
            public:
                /** Ctor */
                InputStreamDecorator(InputStream* s);
                virtual ~InputStreamDecorator();

                /** 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 >>(std::string& str);
                
                virtual bool good();
                virtual UInt getPos();
                
            protected:
                /** Stream */
                InputStream* Stream;
            private:
        };

    }

}

#endif //include guard


