1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#include "commonheaders.h"
// gzip data
BYTE *cpp_gzip(BYTE *pData, size_t nLen, size_t& nCompressedLen) {
string zipped;
Gzip gzip(new StringSink(zipped),5); // 1 is fast, 9 is slow
gzip.Put(pData, nLen);
gzip.MessageEnd();
nCompressedLen = (int) zipped.length();
PBYTE pCompressed = (PBYTE) malloc(nCompressedLen+1);
memcpy(pCompressed,zipped.data(),nCompressedLen);
return pCompressed;
}
// gunzip data
BYTE *cpp_gunzip(BYTE *pCompressedData, size_t nCompressedLen, size_t& nLen) {
string unzipped;
Gunzip gunzip(new StringSink(unzipped));
gunzip.Put((PBYTE)pCompressedData,nCompressedLen);
gunzip.MessageEnd();
nLen = (int) unzipped.length();
PBYTE pData = (PBYTE) malloc(nLen+1);
memcpy(pData,unzipped.data(),nLen);
return pData;
}
// zlibc data
string cpp_zlibc(string& pData) {
string zipped;
ZlibCompressor zlib(new StringSink(zipped),5); // 1 is fast, 9 is slow
zlib.Put((PBYTE)pData.data(), pData.length());
zlib.MessageEnd();
return zipped;
}
// zlibd data
string cpp_zlibd(string& pData) {
string unzipped;
ZlibDecompressor zlib(new StringSink(unzipped));
zlib.Put((PBYTE)pData.data(),pData.length());
zlib.MessageEnd();
return unzipped;
}
// EOF
|