00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_IO_INPUTSTREAMREADER_H_
00019 #define _DECAF_IO_INPUTSTREAMREADER_H_
00020
00021 #include <decaf/util/Config.h>
00022 #include <decaf/io/Reader.h>
00023
00024 namespace decaf {
00025 namespace io {
00026
00027 class InputStream;
00028
00042 class DECAF_API InputStreamReader: public Reader {
00043 private:
00044
00045
00046 InputStream* stream;
00047
00048
00049 bool own;
00050
00051
00052 bool closed;
00053
00054 private:
00055
00056 InputStreamReader(const InputStreamReader&);
00057 InputStreamReader& operator=(const InputStreamReader&);
00058
00059 public:
00060
00071 InputStreamReader(InputStream* stream, bool own = false);
00072
00073 virtual ~InputStreamReader();
00074
00075 virtual void close();
00076
00077 virtual bool ready() const;
00078
00079 protected:
00080
00081 virtual int doReadArrayBounded(char* buffer, int size, int offset, int length);
00082
00083 virtual void checkClosed() const;
00084
00085 };
00086
00087 }}
00088
00089 #endif