00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #ifndef _SK_IO_ABSTRACTINPUTSTREAM_
00009 #define _SK_IO_ABSTRACTINPUTSTREAM_
00010 
00011 #include <sk/io/InputStream.h>
00012 
00013 namespace sk {
00014   namespace io {
00019     class AbstractInputStream
00020       : public virtual sk::io::InputStream
00021     {
00022       public:
00023         
00024         const sk::util::Class getClass() const;
00025 
00026         
00027         virtual int read(char* buffer, int offset, int length) = 0;
00028         char read();
00029         std::vector<char> read(int number);
00030         std::vector<char>& read(std::vector<char>& buffer, int number);
00031         int skip(int number);
00032         long long available() const;
00033         bool markSupported() const;
00034         void mark(int readlimit);
00035         void reset();
00036 
00037       protected:
00038         int filterReadEvents(int n);
00039     };
00040   }
00041 }
00042 
00043 #endif