/* deflate.c -- compress data using the deflation algorithm
* Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/*
* ALGORITHM
*
* The "deflation" process depends on being able to identify portions
* of the input text which are identical to earlier input (within a
* sliding window trailing behind the input currently being processed).
*
* The most straightforward technique turns out to be the fastest for
* most input files: try all possible matches and select the longest.
* The key feature of this algorithm is that insertions into the string
* dictionary are very simple and thus fast, and deletions are avoided
* completely. Insertions are performed at each input character, whereas
* string matches are performed only when the previous match ends. So it
* is preferable to spend more time in matches to allow very fast string
* insertions and avoid deletions. The matching algorithm for small
* strings is inspired from that of Rabin & Karp. A brute force approach
* is used to find longer strings when a small match has been found.
* A similar algorithm is used in comic (by Jan-Mark Wams) and freeze
* (by Leonid Broukhis).
* A previous version of this file used a more sophisticated algorithm
* (by Fiala and Greene) which is guaranteed to run in linear amortized
* time, but has a larger average cost, uses more memory and is patented.
* However the F&G algorithm may be faster for some highly redundant
* files if the parameter max_chain_length (described below) is too large.
*
* ACKNOWLEDGEMENTS
*
* The idea of lazy evaluation of matches is due to Jan-Mark Wams, and
* I found it in 'freeze' written by Leonid Broukhis.
* Thanks to many people for bug reports and testing.
*
* REFERENCES
*
* Deutsch, L.P.,"DEFLATE Compressed Data Format Specification".
* Available in http://www.ietf.org/rfc/rfc1951.txt
*
* A description of the Rabin and Karp algorithm is given in the book
* "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
*
* Fiala,E.R., and Greene,D.H.
* Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595
*
*/
/* @(#) $Id$ */
#include "deflate.h"
const char deflate_copyright[] =
" deflate 1.2.5 Copyright 1995-2010 Jean-loup Gailly and Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
include such an acknowledgment, I would appreciate that you keep this
copyright string in the executable of your product.
*/
/* ===========================================================================
* Function prototypes.
*/
typedef enum {
need_more, /* block not completed, need more input or more output */
block_done, /* block flush performed */
finish_started, /* finish started, need only more output at next deflate */
finish_done /* finish done, accept no more input or output */
} block_state;
typedef block_state (*compress_func) OF((deflate_state *s, int flush));
/* Compression function. Returns the block state after the call. */
local void fill_window OF((deflate_state *s));
local block_state deflate_stored OF((deflate_state *s, int flush));
local block_state deflate_fast OF((deflate_state *s, int flush));
#ifndef FASTEST
local block_state deflate_slow OF((deflate_state *s, int flush));
#endif
local block_state deflate_rle OF((deflate_state *s, int flush));
local block_state deflate_huff OF((deflate_state *s, int flush));
local void lm_init OF((deflate_state *s));
local void putShortMSB OF((deflate_state *s, uInt b));
local void flush_pending OF((z_streamp strm));
local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size));
#ifdef ASMV
void match_init OF((void)); /* asm code initialization */
uInt longest_match OF((deflate_state *s, IPos cur_match));
#else
local uInt longest_match OF((deflate_state *s, IPos cur_match));
#endif
#ifdef DEBUG
local void check_match OF((deflate_state *s, IPos start, IPos match,
int length));
#endif
/* ===========================================================================
* Local data
*/
#define NIL 0
/* Tail of hash chains */
#ifndef TOO_FAR
# define TOO_FAR 4096
#endif
/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
/* Values for max_lazy_match, good_match and max_chain_length, depending on
* the desired pack level (0..9). The values given below have been tuned to
* exclude worst case performance for pathological files. Better values may be
* found for specific files.
*/
typedef struct config_s {
ush good_length; /* reduce lazy search above this match length */
ush max_lazy; /* do not perform lazy search above this match length */
ush nice_length; /* quit search above this match length */
ush max_chain;
compress_func func;
} config;
#ifdef FASTEST
local const config configuration_table[2] = {
/* good lazy nice chain */
/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */
/* 1 */ {4, 4, 8, 4, deflate_fast}}; /* max speed, no lazy matches */
#else
local const config configuration_table[10] = {
/* good lazy nice chain */
/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */
/* 1 */ {4, 4, 8, 4, deflate_fast}, /* max speed, no lazy matches */
/* 2 */ {4, 5, 16, 8, deflate_fast},
/* 3 */ {4, 6, 32, 32, deflate_fast},
/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */
/* 5 */ {8, 16, 32, 32, deflate_slow},
/* 6 */ {8, 16, 128, 128, deflate_slow},
/* 7 */ {8, 32, 128, 256, deflate_slow},
/* 8 */ {32, 128, 258, 1024, deflate_slow},
/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* max compression */
#endif
/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
* For deflate_fast() (levels <= 3) good is ignored and lazy has a different
* meaning.
*/
#define EQUAL 0
/* result of memcmp for equal strings */
#ifndef NO_DUMMY_DECL
struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
#endif
/* ===========================================================================
* Update a hash value with the given input byte
* IN assertion: all calls to to UPDATE_HASH are made with consecutive
* input characters, so that a running hash key can be computed from the
* previous key instead of complete recalculation each time.
*/
#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
/* ===========================================================================
* Insert string str in the dictionary and set match_head to the previous head
* of the hash chain (the most recent string with same hash key). Return
* the previous length of the hash chain.
* If this file is compiled with -DFASTEST, the compression level is forced
* to 1, and no hash chains are maintained.
* IN assertion: all calls to to INSERT_STRING are made with consecutive
* input characters and the first MIN_MATCH bytes of str are valid
* (except for the last MIN_MATCH-1 bytes of the input file).
*/
#ifdef FASTEST
#define INSERT_STRING(s, str, match_head) \
(UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
match_head = s->head[s->ins_h], \
s->head[s->ins_h] = (Pos)(str))
#else
#define INSERT_STRING(s, str, match_head) \
(UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \
s->head[s->ins_h] = (Pos)(str))
#endif
/* ===========================================================================
* Initialize the hash table (avoiding 64K overflow for 16 bit systems).
* prev[] will be initialized on the fly.
*/
#define CLEAR_HASH(s) \
s->head[s->ha
没有合适的资源?快使用搜索试试~ 我知道了~
activeMQ所需的头文件和静态库
共1471个文件
h:803个
cpp:624个
c:14个
5星 · 超过95%的资源 需积分: 9 26 下载量 19 浏览量
2014-05-15
10:47:44
上传
评论
收藏 35.07MB RAR 举报
温馨提示
本资源主要包含activeMQ所需的头文件和用到的库文件,资源已经都编译好, 引入相关路径即可使用
资源推荐
资源详情
资源评论
收起资源包目录
activeMQ所需的头文件和静态库 (1471个子文件)
Makefile.am 59KB
deflate.c 66KB
inflate.c 51KB
trees.c 44KB
infback.c 22KB
gzread.c 20KB
gzwrite.c 14KB
gzlib.c 14KB
inftrees.c 13KB
crc32.c 13KB
inffast.c 13KB
zutil.c 7KB
adler32.c 5KB
uncompr.c 2KB
gzclose.c 678B
ActiveMQConsumerKernel.cpp 80KB
ActiveMQConnection.cpp 70KB
AbstractQueuedSynchronizer.cpp 64KB
ThreadPoolExecutor.cpp 61KB
Threading.cpp 53KB
ActiveMQSessionKernel.cpp 52KB
FailoverTransport.cpp 47KB
AdvisorySupport.cpp 44KB
ReentrantReadWriteLock.cpp 41KB
ConnectionStateTracker.cpp 34KB
ActiveMQConnectionFactory.cpp 32KB
ActiveMQStreamMessage.cpp 31KB
URI.cpp 31KB
Message.cpp 31KB
ByteArrayAdapter.cpp 25KB
TcpSocket.cpp 25KB
BaseDataStreamMarshaller.cpp 25KB
BitSet.cpp 24KB
ActiveMQTransactionContext.cpp 24KB
OpenSSLSocket.cpp 24KB
StompWireFormat.cpp 23KB
Socket.cpp 23KB
ByteArrayBuffer.cpp 22KB
CmsTemplate.cpp 22KB
ActiveMQBytesMessage.cpp 21KB
URIHelper.cpp 21KB
MessageMarshaller.cpp 19KB
Properties.cpp 19KB
ConsumerInfo.cpp 19KB
OpenWireFormat.cpp 18KB
MD5MessageDigestSpi.cpp 17KB
System.cpp 16KB
PrimitiveValueNode.cpp 16KB
Timer.cpp 16KB
InactivityMonitor.cpp 16KB
ActiveMQMapMessage.cpp 16KB
PlatformThread.cpp 16KB
PrimitiveTypesMarshaller.cpp 16KB
DataInputStream.cpp 15KB
MD4MessageDigestSpi.cpp 15KB
Deflater.cpp 15KB
CharBuffer.cpp 14KB
PlatformThread.cpp 14KB
ActiveMQMessageTransformation.cpp 14KB
Math.cpp 14KB
Inflater.cpp 14KB
UUID.cpp 13KB
Long.cpp 13KB
Integer.cpp 13KB
BrokerInfo.cpp 13KB
StompHelper.cpp 13KB
ConnectionInfo.cpp 13KB
BackupTransportPool.cpp 13KB
SHA1MessageDigestSpi.cpp 13KB
WireFormatInfo.cpp 12KB
ConsumerInfoMarshaller.cpp 12KB
XATransactionId.cpp 12KB
MessageAck.cpp 12KB
TcpTransport.cpp 12KB
ActiveMQMessageAudit.cpp 12KB
ResponseCorrelator.cpp 12KB
ActiveMQProducerKernel.cpp 12KB
ActiveMQDestinationSource.cpp 12KB
ServerSocket.cpp 12KB
IOTransport.cpp 12KB
DataOutputStream.cpp 11KB
BufferedInputStream.cpp 11KB
ActiveMQDestination.cpp 11KB
StompFrame.cpp 11KB
URISupport.cpp 11KB
ReentrantLock.cpp 11KB
CharArrayBuffer.cpp 11KB
OpenSSLContextSpi.cpp 11KB
Thread.cpp 11KB
HexStringParser.cpp 11KB
BrokerInfoMarshaller.cpp 11KB
MarshallingSupport.cpp 11KB
ByteBuffer.cpp 10KB
ConnectionInfoMarshaller.cpp 10KB
MessagePropertyInterceptor.cpp 10KB
DoubleArrayBuffer.cpp 10KB
ConnectionControl.cpp 10KB
ShortArrayBuffer.cpp 10KB
FloatArrayBuffer.cpp 10KB
LongArrayBuffer.cpp 10KB
共 1471 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15
资源评论
- wjqzzzy2015-07-15头文件编译不知道哪里出错了
- pan_fenf2014-08-10刚好用到 谢谢
CodingHeart
- 粉丝: 17
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功