NVBIO
Main Page
Modules
Classes
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
contrib
zlib-1.2.7
compress.c
Go to the documentation of this file.
1
/* compress.c -- compress a memory buffer
2
* Copyright (C) 1995-2005 Jean-loup Gailly.
3
* For conditions of distribution and use, see copyright notice in zlib.h
4
*/
5
6
/* @(#) $Id$ */
7
8
#define ZLIB_INTERNAL
9
#include "
zlib.h
"
10
11
/* ===========================================================================
12
Compresses the source buffer into the destination buffer. The level
13
parameter has the same meaning as in deflateInit. sourceLen is the byte
14
length of the source buffer. Upon entry, destLen is the total size of the
15
destination buffer, which must be at least 0.1% larger than sourceLen plus
16
12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
17
18
compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
19
memory, Z_BUF_ERROR if there was not enough room in the output buffer,
20
Z_STREAM_ERROR if the level parameter is invalid.
21
*/
22
int
ZEXPORT
compress2
(dest, destLen, source, sourceLen, level)
23
Bytef
*dest;
24
uLongf
*destLen;
25
const
Bytef
*source;
26
uLong
sourceLen;
27
int
level;
28
{
29
z_stream
stream
;
30
int
err;
31
32
stream.
next_in
= (
Bytef
*)source;
33
stream.
avail_in
= (
uInt
)sourceLen;
34
#ifdef MAXSEG_64K
35
/* Check for source > 64K on 16-bit machine: */
36
if
((
uLong
)stream.
avail_in
!= sourceLen)
return
Z_BUF_ERROR
;
37
#endif
38
stream.
next_out
= dest;
39
stream.
avail_out
= (
uInt
)*destLen;
40
if
((
uLong
)stream.
avail_out
!= *destLen)
return
Z_BUF_ERROR
;
41
42
stream.
zalloc
= (alloc_func)0;
43
stream.
zfree
= (free_func)0;
44
stream.
opaque
= (
voidpf
)0;
45
46
err =
deflateInit
(&stream, level);
47
if
(err !=
Z_OK
)
return
err;
48
49
err =
deflate
(&stream,
Z_FINISH
);
50
if
(err !=
Z_STREAM_END
) {
51
deflateEnd
(&stream);
52
return
err ==
Z_OK
?
Z_BUF_ERROR
: err;
53
}
54
*destLen = stream.
total_out
;
55
56
err =
deflateEnd
(&stream);
57
return
err;
58
}
59
60
/* ===========================================================================
61
*/
62
int
ZEXPORT
compress
(dest, destLen, source, sourceLen)
63
Bytef
*dest;
64
uLongf
*destLen;
65
const
Bytef
*source;
66
uLong
sourceLen;
67
{
68
return
compress2
(dest, destLen, source, sourceLen,
Z_DEFAULT_COMPRESSION
);
69
}
70
71
/* ===========================================================================
72
If the default memLevel or windowBits for deflateInit() is changed, then
73
this function needs to be updated.
74
*/
75
uLong
ZEXPORT
compressBound
(sourceLen)
76
uLong
sourceLen;
77
{
78
return
sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
79
(sourceLen >> 25) + 13;
80
}
Generated on Wed Feb 25 2015 08:32:50 for NVBIO by
1.8.4