GzipFileType.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __GZFILETYPE_H__
00019 #define __GZFILETYPE_H__
00020
00021 #ifdef __gnu_linux__
00022 #ifndef __ZLIB_AVAILABLE__
00023 #define __ZLIB_AVAILABLE__
00024 #endif
00025 #endif
00026
00027 #ifdef __ZLIB_AVAILABLE__
00028
00029 #if defined(WIN32)
00030 #include <stdio.h>
00031 #endif
00032
00033 #include <zlib.h>
00034 #include "FileType.h"
00035
00036
00037
00038 class GzipFileType : public FileType
00039 {
00040 public:
00041 GzipFileType()
00042 {
00043 gzHandle = NULL;
00044 }
00045
00046 virtual ~GzipFileType()
00047 {
00048 }
00049
00050 GzipFileType(const char * filename, const char * mode);
00051
00052 bool operator == (void * rhs)
00053 {
00054
00055
00056 if (rhs != NULL)
00057 return false;
00058 return (gzHandle == rhs);
00059 }
00060
00061 bool operator != (void * rhs)
00062 {
00063
00064
00065 if (rhs != NULL)
00066 return true;
00067 return (gzHandle != rhs);
00068 }
00069
00070
00071 inline int close()
00072 {
00073 int result = gzclose(gzHandle);
00074 gzHandle = NULL;
00075 return result;
00076 }
00077
00078
00079
00080 inline void rewind()
00081 {
00082
00083 gzrewind(gzHandle);
00084 }
00085
00086
00087 inline int eof()
00088 {
00089
00090 return gzeof(gzHandle);
00091 }
00092
00093
00094 virtual inline bool isOpen()
00095 {
00096 if (gzHandle != NULL)
00097 {
00098
00099 return(true);
00100 }
00101 return(false);
00102 }
00103
00104
00105 inline unsigned int write(const void * buffer, unsigned int size)
00106 {
00107 return gzwrite(gzHandle, buffer, size);
00108 }
00109
00110
00111
00112
00113 inline int read(void * buffer, unsigned int size)
00114 {
00115 unsigned int numBytes = gzread(gzHandle, buffer, size);
00116
00117
00118
00119
00120
00121
00122
00123 return numBytes;
00124 }
00125
00126
00127
00128 virtual inline int64_t tell()
00129 {
00130 return gztell(gzHandle);
00131 }
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141 virtual inline bool seek(int64_t offset, int origin)
00142 {
00143 int64_t returnVal = gzseek(gzHandle, offset, origin);
00144
00145 if (returnVal == -1)
00146 {
00147 return false;
00148 }
00149
00150 return true;
00151 }
00152
00153
00154 protected:
00155
00156 gzFile gzHandle;
00157 };
00158
00159 #endif
00160
00161 #endif
00162