Geant4 11.4.0
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 63 of file compress.c.

64 {
65 return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION);
66}
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.

23 {
24 z_stream stream;
25 int err;
26 const uInt max = (uInt)-1;
27 uLong left;
28
29 left = *destLen;
30 *destLen = 0;
31
32 stream.zalloc = (alloc_func)0;
33 stream.zfree = (free_func)0;
34 stream.opaque = (voidpf)0;
35
36 err = deflateInit(&stream, level);
37 if (err != Z_OK) return err;
38
39 stream.next_out = dest;
40 stream.avail_out = 0;
41 stream.next_in = (z_const Bytef *)source;
42 stream.avail_in = 0;
43
44 do {
45 if (stream.avail_out == 0) {
46 stream.avail_out = left > (uLong)max ? max : (uInt)left;
47 left -= stream.avail_out;
48 }
49 if (stream.avail_in == 0) {
50 stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen;
51 sourceLen -= stream.avail_in;
52 }
53 err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH);
54 } while (err == Z_OK);
55
56 *destLen = stream.total_out;
57 deflateEnd(&stream);
58 return err == Z_STREAM_END ? Z_OK : err;
59}
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
void(* free_func)(voidpf opaque, voidpf address)
Definition zlib.h:82
voidpf(* alloc_func)(voidpf opaque, uInt items, uInt size)
Definition zlib.h:81
ZEXTERN int ZEXPORT deflateEnd(z_streamp strm)
Definition deflate.c:1262
#define Z_STREAM_END
Definition zlib.h:178
#define Z_FINISH
Definition zlib.h:172
#define Z_OK
Definition zlib.h:177
struct z_stream_s z_stream
#define Z_NO_FLUSH
Definition zlib.h:168
ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush)
Definition deflate.c:950
#define deflateInit(strm, level)
Definition zlib.h:1813

Referenced by compress().

◆ compressBound()

uLong ZEXPORT compressBound ( uLong sourceLen)

Definition at line 72 of file compress.c.

72 {
73 return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
74 (sourceLen >> 25) + 13;
75}