diff options
Diffstat (limited to 'include/Handle.h')
-rw-r--r-- | include/Handle.h | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/include/Handle.h b/include/Handle.h index 6e26e9c..9744b7e 100644 --- a/include/Handle.h +++ b/include/Handle.h @@ -2,48 +2,61 @@ #define __HANDLE_H__ #ifdef __cplusplus +#include <sys/types.h> +#include <time.h> + +#ifdef HAVE_ZLIB #include <zlib.h> +#endif #include <unistd.h> #include <iostream> #include <String.h> #include <Exceptions.h> -#include <sys/types.h> -#include <time.h> - class Handle : public Base { public: Handle(const Handle &); virtual ~Handle(); virtual ssize_t read(void *buf, size_t count) throw (GeneralException); virtual ssize_t write(const void *buf, size_t count) throw (GeneralException); - bool IsClosed(void); - bool IsNonBlock(void); + bool IsClosed(void) const; + bool IsNonBlock(void) const; void SetNonBlock(void); - virtual bool CanRead(); - virtual bool CanWrite(); - virtual String GetName(); - virtual ssize_t GetSize(); - virtual time_t GetModif(); + virtual bool CanRead() const; + virtual bool CanWrite() const; + virtual bool CanSeek() const; + virtual off_t seek(off_t, int = SEEK_SET) throw (GeneralException); + virtual off_t tell() const; + virtual String GetName() const; + virtual ssize_t GetSize() const; + virtual time_t GetModif() const; void close() throw (GeneralException); int GetHandle(); - virtual bool CanWatch(); + virtual bool CanWatch() const; virtual void Dup(const Handle &); - virtual void SetZ(int) throw (GeneralException); +#ifdef HAVE_ZLIB + virtual void SetZ(int = 9) throw (GeneralException); +#endif protected: Handle(int h); + int GetHandle() const; + off_t itell; private: ssize_t uwrite(const void *, size_t) throw (GeneralException); ssize_t uread(void *, size_t); int h; bool closed, nonblock; +#ifdef HAVE_ZLIB gzFile zfile; int z; +#endif }; Handle & operator<<(Handle &, const String &); Handle & operator>>(Handle &, String &); +void copy(Handle *, Handle *, ssize_t = -1); + #else #error This only works with a C++ compiler #endif |