
#ifndef __WFX_IO_INPUTSTREAM_H__
#define __WFX_IO_INPUTSTREAM_H__

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

namespace WFX {

    namespace io {

        /**
         * Inputstream base class
         */
        class InputStream : public Stream {
            public:
                /** Ctor */
                InputStream(std::istream* s);
                InputStream();
                virtual ~InputStream();

                /** set the Stream */
                void setStream(std::istream* 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 >>(std::string& str);
                /** maintainance */
                virtual bool good();
                virtual UInt getPos();
                
            protected:
            private:
                /** Stream */
                std::istream* IStream;
        };

    }

}

#endif //include guard


