/* 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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
运行环境是 win10 64位系统,开发环境是VS2015 ,Qt 5.11.2。开发activemq发送程序,遇到问题 (1)Qt5AxContainer.lib error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“1” Qt5AxBase.lib error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“1” 问题分析:使用activemq-cpp.dll之前用VS2008编译的dll文件,在vs2015上编译,会与Qt的库发生冲突。所以要重新在vs2015上编译activemq库,才可以编译。而且release要用release版本的库,位数和版本都要对应上。 (2)在pConnectionFactory = new (std::nothrow) ActiveMQConnectionFactory(string(chMqUri));处崩溃 然后弹出报错:0x6EEC9C11 (libapr-1.dll)处(位于 project_0820.exe 中)引发的异常: 0xC0000005: 问题分析:这个崩溃操作是因为没有执行activemq初始化函数,所以现在构造函数中加上activemq初始化语句如下: activemq::library::ActiveMQCPP::initializeLibrary();
资源推荐
资源详情
资源评论
收起资源包目录
Vs2015ActiveMq测试工具.rar (888个子文件)
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
main.cpp 11KB
ActiveMqTest.VC.db 30.82MB
activemq-cppd.dll 12.85MB
activemq-cpp.dll 5.62MB
libapr-1.dll 206KB
libapr-1.dll 149KB
ActiveMqTest.exe 24KB
ActiveMqTest.vcxproj.filters 945B
zlib.h 78KB
apr_buckets.h 63KB
apr_errno.h 54KB
String.h 48KB
HashMap.h 43KB
apr_file_io.h 41KB
ActiveMQConnection.h 41KB
ByteBuffer.h 38KB
ConcurrentStlMap.h 36KB
apr_thread_proc.h 35KB
apr_network_io.h 34KB
Math.h 34KB
CopyOnWriteArrayList.h 34KB
LinkedHashMap.h 34KB
LinkedList.h 32KB
apr_pools.h 32KB
Message.h 31KB
ByteArrayAdapter.h 30KB
crc32.h 30KB
LinkedBlockingQueue.h 28KB
StlMap.h 28KB
Timer.h 27KB
ActiveMQConnectionFactory.h 27KB
CharBuffer.h 27KB
ThreadPoolExecutor.h 26KB
CmsTemplate.h 25KB
StringBuffer.h 25KB
AdvisorySupport.h 25KB
apr_dbd.h 24KB
StringBuilder.h 24KB
Semaphore.h 24KB
BaseDataStreamMarshaller.h 23KB
Logger.h 23KB
ActiveMQSessionKernel.h 22KB
Integer.h 22KB
Socket.h 22KB
Long.h 22KB
URL.h 21KB
AbstractQueuedSynchronizer.h 21KB
Condition.h 20KB
BytesMessage.h 20KB
URI.h 20KB
ReentrantLock.h 20KB
apr_poll.h 20KB
BufferFactory.h 19KB
apr_ring.h 19KB
apr_tables.h 19KB
StreamMessage.h 19KB
Session.h 19KB
AbstractStringBuilder.h 19KB
apr_portable.h 19KB
LongBuffer.h 19KB
DoubleBuffer.h 18KB
ShortBuffer.h 18KB
Properties.h 18KB
FloatBuffer.h 18KB
IntBuffer.h 18KB
apr.h 18KB
Double.h 18KB
apr_file_info.h 18KB
Thread.h 17KB
apr_memcache.h 17KB
Float.h 17KB
System.h 17KB
apr_crypto.h 17KB
ActiveMQMessageTemplate.h 17KB
FutureTask.h 17KB
apr_arch_misc.h 17KB
MessageProducer.h 17KB
URLConnection.h 16KB
AbstractList.h 16KB
ArrayPointer.h 16KB
StlList.h 16KB
Map.h 16KB
apr_escape.h 16KB
PriorityQueue.h 16KB
ActiveMQConsumerKernel.h 15KB
Pointer.h 15KB
共 888 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
bclshuai
- 粉丝: 98
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功