00001
00004
00005
00006
00007
00008 #ifndef _cel_compress_h_
00009 #define _cel_compress_h_
00010
00011 #include "cel_types.h"
00012 #include "cel_memory.h"
00013 #include "cel_iostream.h"
00014
00015 namespace Celartem
00016 {
00020 struct Zlib
00021 {
00022 enum {
00024 levelDefault = -1
00025 };
00026
00039 static void compress(
00040 SimpleArray<u8>& outBuffer,
00041 const u8 * CEL_RESTRICT inData, size_t inSize,
00042 int compLevel = levelDefault );
00043
00059 static void compress(
00060 u8 * CEL_RESTRICT outBuffer,
00061 size_t * CEL_RESTRICT ioSize,
00062 const u8 *CEL_RESTRICT inData,
00063 size_t inSize,
00064 int compLevel = levelDefault );
00065
00076 static void decompress(
00077 SimpleArray<u8>& outBuffer,
00078 const u8 * CEL_RESTRICT inData, size_t inSize);
00079
00092 static void decompress(
00093 u8 *CEL_RESTRICT outBuffer, size_t *ioSize,
00094 const u8 * CEL_RESTRICT inData, size_t inSize);
00095
00118 static u32 adler32(
00119 u32 inCurrentAdler,
00120 const u8 * CEL_RESTRICT inData, size_t inSize);
00121
00144 static u32 crc32(
00145 u32 inCurrentCRC,
00146 const u8 * CEL_RESTRICT inData, size_t inSize);
00147 };
00148
00153 class DeflateStream : public Stream
00154 {
00155 public:
00167 static AutoPtr<DeflateStream> create(Stream *inStream);
00168 };
00169
00174 class InflateStream : public Stream
00175 {
00176 public:
00188 static AutoPtr<InflateStream> create(Stream *inStream);
00189 };
00190
00191 }
00192
00193 #endif // _cel_compress_h_