Geant4-11
Macros | Functions
compress.c File Reference
#include "zlib.h"

Go to the source code of this file.

Macros

#define ZLIB_INTERNAL
 

Functions

int ZEXPORT compress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)
 
int ZEXPORT compress2 (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level)
 
uLong ZEXPORT compressBound (uLong sourceLen)
 

Macro Definition Documentation

◆ ZLIB_INTERNAL

#define ZLIB_INTERNAL

Definition at line 7 of file compress.c.

Function Documentation

◆ compress()

int ZEXPORT compress ( Bytef *  dest,
uLongf *  destLen,
const Bytef *  source,
uLong  sourceLen 
)

Definition at line 67 of file compress.c.

72{
73 return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION);
74}
int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level)
Definition: compress.c:21
#define Z_DEFAULT_COMPRESSION
Definition: zlib.h:193

References compress2(), and Z_DEFAULT_COMPRESSION.

◆ compress2()

int ZEXPORT compress2 ( Bytef *  dest,
uLongf *  destLen,
const Bytef *  source,
uLong  sourceLen,
int  level 
)

Definition at line 21 of file compress.c.

27{
28 z_stream stream;
29 int err;
30 const uInt max = (uInt)-1;
31 uLong left;
32
33 left = *destLen;
34 *destLen = 0;
35
36 stream.zalloc = (alloc_func)0;
37 stream.zfree = (free_func)0;
38 stream.opaque = (voidpf)0;
39
40 err = deflateInit(&stream, level);
41 if (err != Z_OK) return err;
42
43 stream.next_out = dest;
44 stream.avail_out = 0;
45 stream.next_in = (z_const Bytef *)source;
46 stream.avail_in = 0;
47
48 do {
49 if (stream.avail_out == 0) {
50 stream.avail_out = left > (uLong)max ? max : (uInt)left;
51 left -= stream.avail_out;
52 }
53 if (stream.avail_in == 0) {
54 stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen;
55 sourceLen -= stream.avail_in;
56 }
57 err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH);
58 } while (err == Z_OK);
59
60 *destLen = stream.total_out;
61 deflateEnd(&stream);
62 return err == Z_STREAM_END ? Z_OK : err;
63}
int ZEXPORT deflateEnd(z_streamp strm)
Definition: deflate.c:1075
int ZEXPORT deflate(z_streamp strm, int flush)
Definition: deflate.c:762
T max(const T t1, const T t2)
brief Return the largest of the two arguments
uInt avail_in
Definition: zlib.h:88
alloc_func zalloc
Definition: zlib.h:98
uInt avail_out
Definition: zlib.h:92
z_const Bytef * next_in
Definition: zlib.h:87
free_func zfree
Definition: zlib.h:99
voidpf opaque
Definition: zlib.h:100
uLong total_out
Definition: zlib.h:93
Bytef * next_out
Definition: zlib.h:91
#define Z_STREAM_END
Definition: zlib.h:178
#define Z_FINISH
Definition: zlib.h:172
#define Z_OK
Definition: zlib.h:177
#define Z_NO_FLUSH
Definition: zlib.h:168
#define deflateInit(strm, level)
Definition: zlib.h:1793

References z_stream_s::avail_in, z_stream_s::avail_out, deflate(), deflateEnd(), deflateInit, G4INCL::Math::max(), z_stream_s::next_in, z_stream_s::next_out, z_stream_s::opaque, z_stream_s::total_out, Z_FINISH, Z_NO_FLUSH, Z_OK, Z_STREAM_END, z_stream_s::zalloc, and z_stream_s::zfree.

Referenced by compress().

◆ compressBound()

uLong ZEXPORT compressBound ( uLong  sourceLen)

Definition at line 80 of file compress.c.

82{
83 return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
84 (sourceLen >> 25) + 13;
85}