Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
compress.c File Reference
#include "zlib.h"

Go to the source code of this file.

Macros

#define ZLIB_INTERNAL
 

Functions

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

Macro Definition Documentation

◆ ZLIB_INTERNAL

#define ZLIB_INTERNAL

Definition at line 8 of file compress.c.

Function Documentation

◆ compress()

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

Definition at line 68 of file compress.c.

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

◆ compress2()

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

Definition at line 22 of file compress.c.

28{
29 z_stream stream;
30 int err;
31 const uInt max = (uInt)-1;
32 uLong left;
33
34 left = *destLen;
35 *destLen = 0;
36
37 stream.zalloc = (alloc_func)0;
38 stream.zfree = (free_func)0;
39 stream.opaque = (voidpf)0;
40
41 err = deflateInit(&stream, level);
42 if (err != Z_OK) return err;
43
44 stream.next_out = dest;
45 stream.avail_out = 0;
46 stream.next_in = (z_const Bytef *)source;
47 stream.avail_in = 0;
48
49 do {
50 if (stream.avail_out == 0) {
51 stream.avail_out = left > (uLong)max ? max : (uInt)left;
52 left -= stream.avail_out;
53 }
54 if (stream.avail_in == 0) {
55 stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen;
56 sourceLen -= stream.avail_in;
57 }
58 err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH);
59 } while (err == Z_OK);
60
61 *destLen = stream.total_out;
62 deflateEnd(&stream);
63 return err == Z_STREAM_END ? Z_OK : err;
64}
int ZEXPORT deflateEnd(z_streamp strm)
Definition deflate.c:1134
int ZEXPORT deflate(z_streamp strm, int flush)
Definition deflate.c:819
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:1810

Referenced by compress().

◆ compressBound()

uLong ZEXPORT compressBound ( uLong sourceLen)

Definition at line 81 of file compress.c.

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