lzoruby 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.txt +339 -0
- data/README.txt +57 -0
- data/ext/compr1b.h +81 -0
- data/ext/compr1c.h +81 -0
- data/ext/config1.h +61 -0
- data/ext/config1a.h +196 -0
- data/ext/config1b.h +140 -0
- data/ext/config1c.h +145 -0
- data/ext/config1f.h +97 -0
- data/ext/config1x.h +118 -0
- data/ext/config1y.h +66 -0
- data/ext/config1z.h +65 -0
- data/ext/config2a.h +155 -0
- data/ext/extconf.rb +2 -0
- data/ext/lzo/lzo1.h +96 -0
- data/ext/lzo/lzo1a.h +96 -0
- data/ext/lzo/lzo1b.h +160 -0
- data/ext/lzo/lzo1c.h +160 -0
- data/ext/lzo/lzo1f.h +108 -0
- data/ext/lzo/lzo1x.h +177 -0
- data/ext/lzo/lzo1y.h +145 -0
- data/ext/lzo/lzo1z.h +150 -0
- data/ext/lzo/lzo2a.h +92 -0
- data/ext/lzo/lzo_asm.h +139 -0
- data/ext/lzo/lzoconf.h +417 -0
- data/ext/lzo/lzodefs.h +1807 -0
- data/ext/lzo/lzoutil.h +73 -0
- data/ext/lzo1.c +635 -0
- data/ext/lzo1_99.c +130 -0
- data/ext/lzo1_cm.ch +52 -0
- data/ext/lzo1_d.ch +155 -0
- data/ext/lzo1a.c +657 -0
- data/ext/lzo1a_99.c +130 -0
- data/ext/lzo1a_cm.ch +242 -0
- data/ext/lzo1a_cr.ch +128 -0
- data/ext/lzo1a_de.h +158 -0
- data/ext/lzo1b_1.c +46 -0
- data/ext/lzo1b_2.c +46 -0
- data/ext/lzo1b_3.c +46 -0
- data/ext/lzo1b_4.c +46 -0
- data/ext/lzo1b_5.c +46 -0
- data/ext/lzo1b_6.c +46 -0
- data/ext/lzo1b_7.c +46 -0
- data/ext/lzo1b_8.c +46 -0
- data/ext/lzo1b_9.c +46 -0
- data/ext/lzo1b_99.c +49 -0
- data/ext/lzo1b_9x.c +365 -0
- data/ext/lzo1b_c.ch +270 -0
- data/ext/lzo1b_cc.c +167 -0
- data/ext/lzo1b_cc.h +93 -0
- data/ext/lzo1b_cm.ch +294 -0
- data/ext/lzo1b_cr.ch +126 -0
- data/ext/lzo1b_d.ch +282 -0
- data/ext/lzo1b_d1.c +46 -0
- data/ext/lzo1b_d2.c +46 -0
- data/ext/lzo1b_de.h +344 -0
- data/ext/lzo1b_r.ch +117 -0
- data/ext/lzo1b_rr.c +43 -0
- data/ext/lzo1b_sm.ch +210 -0
- data/ext/lzo1b_tm.ch +99 -0
- data/ext/lzo1b_xx.c +98 -0
- data/ext/lzo1c_1.c +46 -0
- data/ext/lzo1c_2.c +46 -0
- data/ext/lzo1c_3.c +46 -0
- data/ext/lzo1c_4.c +46 -0
- data/ext/lzo1c_5.c +46 -0
- data/ext/lzo1c_6.c +46 -0
- data/ext/lzo1c_7.c +46 -0
- data/ext/lzo1c_8.c +46 -0
- data/ext/lzo1c_9.c +46 -0
- data/ext/lzo1c_99.c +49 -0
- data/ext/lzo1c_9x.c +379 -0
- data/ext/lzo1c_cc.c +167 -0
- data/ext/lzo1c_cc.h +93 -0
- data/ext/lzo1c_d1.c +46 -0
- data/ext/lzo1c_d2.c +46 -0
- data/ext/lzo1c_rr.c +43 -0
- data/ext/lzo1c_xx.c +98 -0
- data/ext/lzo1f_1.c +312 -0
- data/ext/lzo1f_9x.c +345 -0
- data/ext/lzo1f_d.ch +223 -0
- data/ext/lzo1f_d1.c +46 -0
- data/ext/lzo1f_d2.c +46 -0
- data/ext/lzo1x_1.c +50 -0
- data/ext/lzo1x_1k.c +50 -0
- data/ext/lzo1x_1l.c +50 -0
- data/ext/lzo1x_1o.c +50 -0
- data/ext/lzo1x_9x.c +881 -0
- data/ext/lzo1x_c.ch +351 -0
- data/ext/lzo1x_d.ch +466 -0
- data/ext/lzo1x_d1.c +46 -0
- data/ext/lzo1x_d2.c +46 -0
- data/ext/lzo1x_d3.c +108 -0
- data/ext/lzo1x_o.c +45 -0
- data/ext/lzo1x_oo.ch +366 -0
- data/ext/lzo1y_1.c +50 -0
- data/ext/lzo1y_9x.c +42 -0
- data/ext/lzo1y_d1.c +46 -0
- data/ext/lzo1y_d2.c +46 -0
- data/ext/lzo1y_d3.c +45 -0
- data/ext/lzo1y_o.c +45 -0
- data/ext/lzo1z_9x.c +42 -0
- data/ext/lzo1z_d1.c +46 -0
- data/ext/lzo1z_d2.c +46 -0
- data/ext/lzo1z_d3.c +45 -0
- data/ext/lzo2a_9x.c +357 -0
- data/ext/lzo2a_d.ch +188 -0
- data/ext/lzo2a_d1.c +46 -0
- data/ext/lzo2a_d2.c +46 -0
- data/ext/lzo_conf.h +323 -0
- data/ext/lzo_crc.c +167 -0
- data/ext/lzo_dict.h +316 -0
- data/ext/lzo_dll.ch +64 -0
- data/ext/lzo_init.c +176 -0
- data/ext/lzo_mchw.ch +242 -0
- data/ext/lzo_ptr.c +92 -0
- data/ext/lzo_ptr.h +154 -0
- data/ext/lzo_str.c +71 -0
- data/ext/lzo_swd.ch +707 -0
- data/ext/lzo_util.c +165 -0
- data/ext/lzoruby.c +149 -0
- data/ext/miniacc.h +6553 -0
- data/ext/stats1a.h +137 -0
- data/ext/stats1b.h +142 -0
- data/ext/stats1c.h +61 -0
- metadata +180 -0
data/ext/lzo_dict.h
ADDED
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/* lzo_dict.h -- dictionary definitions for the the LZO library
|
|
2
|
+
|
|
3
|
+
This file is part of the LZO real-time data compression library.
|
|
4
|
+
|
|
5
|
+
Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
|
|
6
|
+
Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
|
|
7
|
+
Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
|
|
8
|
+
Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
|
|
9
|
+
Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
|
|
10
|
+
Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
|
|
11
|
+
Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
|
|
12
|
+
Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
|
|
13
|
+
Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
|
|
14
|
+
Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
|
|
15
|
+
Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
|
|
16
|
+
Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
|
|
17
|
+
Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
|
|
18
|
+
All Rights Reserved.
|
|
19
|
+
|
|
20
|
+
The LZO library is free software; you can redistribute it and/or
|
|
21
|
+
modify it under the terms of the GNU General Public License as
|
|
22
|
+
published by the Free Software Foundation; either version 2 of
|
|
23
|
+
the License, or (at your option) any later version.
|
|
24
|
+
|
|
25
|
+
The LZO library is distributed in the hope that it will be useful,
|
|
26
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
27
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
28
|
+
GNU General Public License for more details.
|
|
29
|
+
|
|
30
|
+
You should have received a copy of the GNU General Public License
|
|
31
|
+
along with the LZO library; see the file COPYING.
|
|
32
|
+
If not, write to the Free Software Foundation, Inc.,
|
|
33
|
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
34
|
+
|
|
35
|
+
Markus F.X.J. Oberhumer
|
|
36
|
+
<markus@oberhumer.com>
|
|
37
|
+
http://www.oberhumer.com/opensource/lzo/
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
/* WARNING: this file should *not* be used by applications. It is
|
|
42
|
+
part of the implementation of the library and is subject
|
|
43
|
+
to change.
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
#ifndef __LZO_DICT_H
|
|
48
|
+
#define __LZO_DICT_H
|
|
49
|
+
|
|
50
|
+
#ifdef __cplusplus
|
|
51
|
+
extern "C" {
|
|
52
|
+
#endif
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
/***********************************************************************
|
|
57
|
+
// dictionary size
|
|
58
|
+
************************************************************************/
|
|
59
|
+
|
|
60
|
+
/* dictionary needed for compression */
|
|
61
|
+
#if !defined(D_BITS) && defined(DBITS)
|
|
62
|
+
# define D_BITS DBITS
|
|
63
|
+
#endif
|
|
64
|
+
#if !defined(D_BITS)
|
|
65
|
+
# error "D_BITS is not defined"
|
|
66
|
+
#endif
|
|
67
|
+
#if (D_BITS < 16)
|
|
68
|
+
# define D_SIZE LZO_SIZE(D_BITS)
|
|
69
|
+
# define D_MASK LZO_MASK(D_BITS)
|
|
70
|
+
#else
|
|
71
|
+
# define D_SIZE LZO_USIZE(D_BITS)
|
|
72
|
+
# define D_MASK LZO_UMASK(D_BITS)
|
|
73
|
+
#endif
|
|
74
|
+
#define D_HIGH ((D_MASK >> 1) + 1)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
/* dictionary depth */
|
|
78
|
+
#if !defined(DD_BITS)
|
|
79
|
+
# define DD_BITS 0
|
|
80
|
+
#endif
|
|
81
|
+
#define DD_SIZE LZO_SIZE(DD_BITS)
|
|
82
|
+
#define DD_MASK LZO_MASK(DD_BITS)
|
|
83
|
+
|
|
84
|
+
/* dictionary length */
|
|
85
|
+
#if !defined(DL_BITS)
|
|
86
|
+
# define DL_BITS (D_BITS - DD_BITS)
|
|
87
|
+
#endif
|
|
88
|
+
#if (DL_BITS < 16)
|
|
89
|
+
# define DL_SIZE LZO_SIZE(DL_BITS)
|
|
90
|
+
# define DL_MASK LZO_MASK(DL_BITS)
|
|
91
|
+
#else
|
|
92
|
+
# define DL_SIZE LZO_USIZE(DL_BITS)
|
|
93
|
+
# define DL_MASK LZO_UMASK(DL_BITS)
|
|
94
|
+
#endif
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
#if (D_BITS != DL_BITS + DD_BITS)
|
|
98
|
+
# error "D_BITS does not match"
|
|
99
|
+
#endif
|
|
100
|
+
#if (D_BITS < 8 || D_BITS > 18)
|
|
101
|
+
# error "invalid D_BITS"
|
|
102
|
+
#endif
|
|
103
|
+
#if (DL_BITS < 8 || DL_BITS > 20)
|
|
104
|
+
# error "invalid DL_BITS"
|
|
105
|
+
#endif
|
|
106
|
+
#if (DD_BITS < 0 || DD_BITS > 6)
|
|
107
|
+
# error "invalid DD_BITS"
|
|
108
|
+
#endif
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
#if !defined(DL_MIN_LEN)
|
|
112
|
+
# define DL_MIN_LEN 3
|
|
113
|
+
#endif
|
|
114
|
+
#if !defined(DL_SHIFT)
|
|
115
|
+
# define DL_SHIFT ((DL_BITS + (DL_MIN_LEN - 1)) / DL_MIN_LEN)
|
|
116
|
+
#endif
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
/***********************************************************************
|
|
121
|
+
// dictionary access
|
|
122
|
+
************************************************************************/
|
|
123
|
+
|
|
124
|
+
#define LZO_HASH_GZIP 1
|
|
125
|
+
#define LZO_HASH_GZIP_INCREMENTAL 2
|
|
126
|
+
#define LZO_HASH_LZO_INCREMENTAL_A 3
|
|
127
|
+
#define LZO_HASH_LZO_INCREMENTAL_B 4
|
|
128
|
+
|
|
129
|
+
#if !defined(LZO_HASH)
|
|
130
|
+
# error "choose a hashing strategy"
|
|
131
|
+
#endif
|
|
132
|
+
|
|
133
|
+
#undef DM
|
|
134
|
+
#undef DX
|
|
135
|
+
|
|
136
|
+
#if (DL_MIN_LEN == 3)
|
|
137
|
+
# define _DV2_A(p,shift1,shift2) \
|
|
138
|
+
(((( (lzo_xint)((p)[0]) << shift1) ^ (p)[1]) << shift2) ^ (p)[2])
|
|
139
|
+
# define _DV2_B(p,shift1,shift2) \
|
|
140
|
+
(((( (lzo_xint)((p)[2]) << shift1) ^ (p)[1]) << shift2) ^ (p)[0])
|
|
141
|
+
# define _DV3_B(p,shift1,shift2,shift3) \
|
|
142
|
+
((_DV2_B((p)+1,shift1,shift2) << (shift3)) ^ (p)[0])
|
|
143
|
+
#elif (DL_MIN_LEN == 2)
|
|
144
|
+
# define _DV2_A(p,shift1,shift2) \
|
|
145
|
+
(( (lzo_xint)(p[0]) << shift1) ^ p[1])
|
|
146
|
+
# define _DV2_B(p,shift1,shift2) \
|
|
147
|
+
(( (lzo_xint)(p[1]) << shift1) ^ p[2])
|
|
148
|
+
#else
|
|
149
|
+
# error "invalid DL_MIN_LEN"
|
|
150
|
+
#endif
|
|
151
|
+
#define _DV_A(p,shift) _DV2_A(p,shift,shift)
|
|
152
|
+
#define _DV_B(p,shift) _DV2_B(p,shift,shift)
|
|
153
|
+
#define DA2(p,s1,s2) \
|
|
154
|
+
(((((lzo_xint)((p)[2]) << (s2)) + (p)[1]) << (s1)) + (p)[0])
|
|
155
|
+
#define DS2(p,s1,s2) \
|
|
156
|
+
(((((lzo_xint)((p)[2]) << (s2)) - (p)[1]) << (s1)) - (p)[0])
|
|
157
|
+
#define DX2(p,s1,s2) \
|
|
158
|
+
(((((lzo_xint)((p)[2]) << (s2)) ^ (p)[1]) << (s1)) ^ (p)[0])
|
|
159
|
+
#define DA3(p,s1,s2,s3) ((DA2((p)+1,s2,s3) << (s1)) + (p)[0])
|
|
160
|
+
#define DS3(p,s1,s2,s3) ((DS2((p)+1,s2,s3) << (s1)) - (p)[0])
|
|
161
|
+
#define DX3(p,s1,s2,s3) ((DX2((p)+1,s2,s3) << (s1)) ^ (p)[0])
|
|
162
|
+
#define DMS(v,s) ((lzo_uint) (((v) & (D_MASK >> (s))) << (s)))
|
|
163
|
+
#define DM(v) DMS(v,0)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
#if (LZO_HASH == LZO_HASH_GZIP)
|
|
167
|
+
/* hash function like in gzip/zlib (deflate) */
|
|
168
|
+
# define _DINDEX(dv,p) (_DV_A((p),DL_SHIFT))
|
|
169
|
+
|
|
170
|
+
#elif (LZO_HASH == LZO_HASH_GZIP_INCREMENTAL)
|
|
171
|
+
/* incremental hash like in gzip/zlib (deflate) */
|
|
172
|
+
# define __LZO_HASH_INCREMENTAL
|
|
173
|
+
# define DVAL_FIRST(dv,p) dv = _DV_A((p),DL_SHIFT)
|
|
174
|
+
# define DVAL_NEXT(dv,p) dv = (((dv) << DL_SHIFT) ^ p[2])
|
|
175
|
+
# define _DINDEX(dv,p) (dv)
|
|
176
|
+
# define DVAL_LOOKAHEAD DL_MIN_LEN
|
|
177
|
+
|
|
178
|
+
#elif (LZO_HASH == LZO_HASH_LZO_INCREMENTAL_A)
|
|
179
|
+
/* incremental LZO hash version A */
|
|
180
|
+
# define __LZO_HASH_INCREMENTAL
|
|
181
|
+
# define DVAL_FIRST(dv,p) dv = _DV_A((p),5)
|
|
182
|
+
# define DVAL_NEXT(dv,p) \
|
|
183
|
+
dv ^= (lzo_xint)(p[-1]) << (2*5); dv = (((dv) << 5) ^ p[2])
|
|
184
|
+
# define _DINDEX(dv,p) ((DMUL(0x9f5f,dv)) >> 5)
|
|
185
|
+
# define DVAL_LOOKAHEAD DL_MIN_LEN
|
|
186
|
+
|
|
187
|
+
#elif (LZO_HASH == LZO_HASH_LZO_INCREMENTAL_B)
|
|
188
|
+
/* incremental LZO hash version B */
|
|
189
|
+
# define __LZO_HASH_INCREMENTAL
|
|
190
|
+
# define DVAL_FIRST(dv,p) dv = _DV_B((p),5)
|
|
191
|
+
# define DVAL_NEXT(dv,p) \
|
|
192
|
+
dv ^= p[-1]; dv = (((dv) >> 5) ^ ((lzo_xint)(p[2]) << (2*5)))
|
|
193
|
+
# define _DINDEX(dv,p) ((DMUL(0x9f5f,dv)) >> 5)
|
|
194
|
+
# define DVAL_LOOKAHEAD DL_MIN_LEN
|
|
195
|
+
|
|
196
|
+
#else
|
|
197
|
+
# error "choose a hashing strategy"
|
|
198
|
+
#endif
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
#ifndef DINDEX
|
|
202
|
+
#define DINDEX(dv,p) ((lzo_uint)((_DINDEX(dv,p)) & DL_MASK) << DD_BITS)
|
|
203
|
+
#endif
|
|
204
|
+
#if !defined(DINDEX1) && defined(D_INDEX1)
|
|
205
|
+
#define DINDEX1 D_INDEX1
|
|
206
|
+
#endif
|
|
207
|
+
#if !defined(DINDEX2) && defined(D_INDEX2)
|
|
208
|
+
#define DINDEX2 D_INDEX2
|
|
209
|
+
#endif
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
#if !defined(__LZO_HASH_INCREMENTAL)
|
|
214
|
+
# define DVAL_FIRST(dv,p) ((void) 0)
|
|
215
|
+
# define DVAL_NEXT(dv,p) ((void) 0)
|
|
216
|
+
# define DVAL_LOOKAHEAD 0
|
|
217
|
+
#endif
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
#if !defined(DVAL_ASSERT)
|
|
221
|
+
#if defined(__LZO_HASH_INCREMENTAL) && !defined(NDEBUG)
|
|
222
|
+
static void DVAL_ASSERT(lzo_xint dv, const lzo_bytep p)
|
|
223
|
+
{
|
|
224
|
+
lzo_xint df;
|
|
225
|
+
DVAL_FIRST(df,(p));
|
|
226
|
+
assert(DINDEX(dv,p) == DINDEX(df,p));
|
|
227
|
+
}
|
|
228
|
+
#else
|
|
229
|
+
# define DVAL_ASSERT(dv,p) ((void) 0)
|
|
230
|
+
#endif
|
|
231
|
+
#endif
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
/***********************************************************************
|
|
236
|
+
// dictionary updating
|
|
237
|
+
************************************************************************/
|
|
238
|
+
|
|
239
|
+
#if defined(LZO_DICT_USE_PTR)
|
|
240
|
+
# define DENTRY(p,in) (p)
|
|
241
|
+
# define GINDEX(m_pos,m_off,dict,dindex,in) m_pos = dict[dindex]
|
|
242
|
+
#else
|
|
243
|
+
# define DENTRY(p,in) ((lzo_uint) ((p)-(in)))
|
|
244
|
+
# define GINDEX(m_pos,m_off,dict,dindex,in) m_off = dict[dindex]
|
|
245
|
+
#endif
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
#if (DD_BITS == 0)
|
|
249
|
+
|
|
250
|
+
# define UPDATE_D(dict,drun,dv,p,in) dict[ DINDEX(dv,p) ] = DENTRY(p,in)
|
|
251
|
+
# define UPDATE_I(dict,drun,index,p,in) dict[index] = DENTRY(p,in)
|
|
252
|
+
# define UPDATE_P(ptr,drun,p,in) (ptr)[0] = DENTRY(p,in)
|
|
253
|
+
|
|
254
|
+
#else
|
|
255
|
+
|
|
256
|
+
# define UPDATE_D(dict,drun,dv,p,in) \
|
|
257
|
+
dict[ DINDEX(dv,p) + drun++ ] = DENTRY(p,in); drun &= DD_MASK
|
|
258
|
+
# define UPDATE_I(dict,drun,index,p,in) \
|
|
259
|
+
dict[ (index) + drun++ ] = DENTRY(p,in); drun &= DD_MASK
|
|
260
|
+
# define UPDATE_P(ptr,drun,p,in) \
|
|
261
|
+
(ptr) [ drun++ ] = DENTRY(p,in); drun &= DD_MASK
|
|
262
|
+
|
|
263
|
+
#endif
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
/***********************************************************************
|
|
267
|
+
// test for a match
|
|
268
|
+
************************************************************************/
|
|
269
|
+
|
|
270
|
+
#if defined(LZO_DICT_USE_PTR)
|
|
271
|
+
|
|
272
|
+
/* m_pos is either NULL or a valid pointer */
|
|
273
|
+
#define LZO_CHECK_MPOS_DET(m_pos,m_off,in,ip,max_offset) \
|
|
274
|
+
(m_pos == NULL || (m_off = pd(ip, m_pos)) > max_offset)
|
|
275
|
+
|
|
276
|
+
/* m_pos may point anywhere... */
|
|
277
|
+
#define LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,max_offset) \
|
|
278
|
+
(BOUNDS_CHECKING_OFF_IN_EXPR(( \
|
|
279
|
+
m_pos = ip - (lzo_uint) PTR_DIFF(ip,m_pos), \
|
|
280
|
+
PTR_LT(m_pos,in) || \
|
|
281
|
+
(m_off = (lzo_uint) PTR_DIFF(ip,m_pos)) <= 0 || \
|
|
282
|
+
m_off > max_offset )))
|
|
283
|
+
|
|
284
|
+
#else
|
|
285
|
+
|
|
286
|
+
#define LZO_CHECK_MPOS_DET(m_pos,m_off,in,ip,max_offset) \
|
|
287
|
+
(m_off == 0 || \
|
|
288
|
+
((m_off = pd(ip, in) - m_off) > max_offset) || \
|
|
289
|
+
(m_pos = (ip) - (m_off), 0) )
|
|
290
|
+
|
|
291
|
+
#define LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,max_offset) \
|
|
292
|
+
(pd(ip, in) <= m_off || \
|
|
293
|
+
((m_off = pd(ip, in) - m_off) > max_offset) || \
|
|
294
|
+
(m_pos = (ip) - (m_off), 0) )
|
|
295
|
+
|
|
296
|
+
#endif
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
#if defined(LZO_DETERMINISTIC)
|
|
300
|
+
# define LZO_CHECK_MPOS LZO_CHECK_MPOS_DET
|
|
301
|
+
#else
|
|
302
|
+
# define LZO_CHECK_MPOS LZO_CHECK_MPOS_NON_DET
|
|
303
|
+
#endif
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
#ifdef __cplusplus
|
|
308
|
+
} /* extern "C" */
|
|
309
|
+
#endif
|
|
310
|
+
|
|
311
|
+
#endif /* already included */
|
|
312
|
+
|
|
313
|
+
/*
|
|
314
|
+
vi:ts=4:et
|
|
315
|
+
*/
|
|
316
|
+
|
data/ext/lzo_dll.ch
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/* lzo_dll.ch -- DLL initialization of the LZO library
|
|
2
|
+
|
|
3
|
+
This file is part of the LZO real-time data compression library.
|
|
4
|
+
|
|
5
|
+
Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
|
|
6
|
+
Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
|
|
7
|
+
Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
|
|
8
|
+
Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
|
|
9
|
+
Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
|
|
10
|
+
Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
|
|
11
|
+
Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
|
|
12
|
+
Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
|
|
13
|
+
Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
|
|
14
|
+
Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
|
|
15
|
+
Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
|
|
16
|
+
Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
|
|
17
|
+
Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
|
|
18
|
+
All Rights Reserved.
|
|
19
|
+
|
|
20
|
+
The LZO library is free software; you can redistribute it and/or
|
|
21
|
+
modify it under the terms of the GNU General Public License as
|
|
22
|
+
published by the Free Software Foundation; either version 2 of
|
|
23
|
+
the License, or (at your option) any later version.
|
|
24
|
+
|
|
25
|
+
The LZO library is distributed in the hope that it will be useful,
|
|
26
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
27
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
28
|
+
GNU General Public License for more details.
|
|
29
|
+
|
|
30
|
+
You should have received a copy of the GNU General Public License
|
|
31
|
+
along with the LZO library; see the file COPYING.
|
|
32
|
+
If not, write to the Free Software Foundation, Inc.,
|
|
33
|
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
34
|
+
|
|
35
|
+
Markus F.X.J. Oberhumer
|
|
36
|
+
<markus@oberhumer.com>
|
|
37
|
+
http://www.oberhumer.com/opensource/lzo/
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
/***********************************************************************
|
|
42
|
+
// Windows 16 bit + Watcom C + DLL
|
|
43
|
+
************************************************************************/
|
|
44
|
+
|
|
45
|
+
#if (LZO_OS_WIN16 && LZO_CC_WATCOMC) && defined(__SW_BD)
|
|
46
|
+
|
|
47
|
+
/* don't pull in <windows.h> - we don't need it */
|
|
48
|
+
#if 0
|
|
49
|
+
BOOL FAR PASCAL LibMain ( HANDLE hInstance, WORD wDataSegment,
|
|
50
|
+
WORD wHeapSize, LPSTR lpszCmdLine )
|
|
51
|
+
#else
|
|
52
|
+
int __far __pascal LibMain ( int a, short b, short c, long d )
|
|
53
|
+
#endif
|
|
54
|
+
{
|
|
55
|
+
LZO_UNUSED(a); LZO_UNUSED(b); LZO_UNUSED(c); LZO_UNUSED(d);
|
|
56
|
+
return 1;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
#endif
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
/*
|
|
63
|
+
vi:ts=4:et
|
|
64
|
+
*/
|
data/ext/lzo_init.c
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/* lzo_init.c -- initialization of the LZO library
|
|
2
|
+
|
|
3
|
+
This file is part of the LZO real-time data compression library.
|
|
4
|
+
|
|
5
|
+
Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
|
|
6
|
+
Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
|
|
7
|
+
Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
|
|
8
|
+
Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
|
|
9
|
+
Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
|
|
10
|
+
Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
|
|
11
|
+
Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
|
|
12
|
+
Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
|
|
13
|
+
Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
|
|
14
|
+
Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
|
|
15
|
+
Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
|
|
16
|
+
Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
|
|
17
|
+
Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
|
|
18
|
+
All Rights Reserved.
|
|
19
|
+
|
|
20
|
+
The LZO library is free software; you can redistribute it and/or
|
|
21
|
+
modify it under the terms of the GNU General Public License as
|
|
22
|
+
published by the Free Software Foundation; either version 2 of
|
|
23
|
+
the License, or (at your option) any later version.
|
|
24
|
+
|
|
25
|
+
The LZO library is distributed in the hope that it will be useful,
|
|
26
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
27
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
28
|
+
GNU General Public License for more details.
|
|
29
|
+
|
|
30
|
+
You should have received a copy of the GNU General Public License
|
|
31
|
+
along with the LZO library; see the file COPYING.
|
|
32
|
+
If not, write to the Free Software Foundation, Inc.,
|
|
33
|
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
34
|
+
|
|
35
|
+
Markus F.X.J. Oberhumer
|
|
36
|
+
<markus@oberhumer.com>
|
|
37
|
+
http://www.oberhumer.com/opensource/lzo/
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
#include "lzo_conf.h"
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
/***********************************************************************
|
|
45
|
+
// Runtime check of the assumptions about the size of builtin types,
|
|
46
|
+
// memory model, byte order and other low-level constructs.
|
|
47
|
+
//
|
|
48
|
+
// We are really paranoid here - LZO should either fail
|
|
49
|
+
// at startup or not at all.
|
|
50
|
+
//
|
|
51
|
+
// Because of inlining much of these functions evaluates to nothing.
|
|
52
|
+
//
|
|
53
|
+
// And while many of the tests seem highly obvious and redundant they are
|
|
54
|
+
// here to catch compiler/optimizer bugs. Yes, these do exist.
|
|
55
|
+
************************************************************************/
|
|
56
|
+
|
|
57
|
+
#if !defined(__LZO_IN_MINILZO)
|
|
58
|
+
|
|
59
|
+
#define ACC_WANT_ACC_CHK_CH 1
|
|
60
|
+
#undef ACCCHK_ASSERT
|
|
61
|
+
#include "miniacc.h"
|
|
62
|
+
|
|
63
|
+
ACCCHK_ASSERT_IS_SIGNED_T(lzo_int)
|
|
64
|
+
ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint)
|
|
65
|
+
|
|
66
|
+
ACCCHK_ASSERT_IS_SIGNED_T(lzo_int32)
|
|
67
|
+
ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint32)
|
|
68
|
+
ACCCHK_ASSERT((LZO_UINT32_C(1) << (int)(8*sizeof(LZO_UINT32_C(1))-1)) > 0)
|
|
69
|
+
ACCCHK_ASSERT(sizeof(lzo_uint32) >= 4)
|
|
70
|
+
|
|
71
|
+
#if !defined(__LZO_UINTPTR_T_IS_POINTER)
|
|
72
|
+
ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uintptr_t)
|
|
73
|
+
#endif
|
|
74
|
+
ACCCHK_ASSERT(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp))
|
|
75
|
+
|
|
76
|
+
ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_xint)
|
|
77
|
+
ACCCHK_ASSERT(sizeof(lzo_xint) >= sizeof(lzo_uint32))
|
|
78
|
+
ACCCHK_ASSERT(sizeof(lzo_xint) >= sizeof(lzo_uint))
|
|
79
|
+
ACCCHK_ASSERT(sizeof(lzo_xint) == sizeof(lzo_uint32) || sizeof(lzo_xint) == sizeof(lzo_uint))
|
|
80
|
+
|
|
81
|
+
#endif
|
|
82
|
+
#undef ACCCHK_ASSERT
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
/***********************************************************************
|
|
86
|
+
//
|
|
87
|
+
************************************************************************/
|
|
88
|
+
|
|
89
|
+
LZO_PUBLIC(int)
|
|
90
|
+
_lzo_config_check(void)
|
|
91
|
+
{
|
|
92
|
+
lzo_bool r = 1;
|
|
93
|
+
union { unsigned char c[2*sizeof(lzo_xint)]; lzo_xint l[2]; } u;
|
|
94
|
+
lzo_uintptr_t p;
|
|
95
|
+
|
|
96
|
+
#if !defined(LZO_CFG_NO_CONFIG_CHECK)
|
|
97
|
+
#if defined(LZO_ABI_BIG_ENDIAN)
|
|
98
|
+
u.l[0] = u.l[1] = 0; u.c[sizeof(lzo_xint) - 1] = 128;
|
|
99
|
+
r &= (u.l[0] == 128);
|
|
100
|
+
#endif
|
|
101
|
+
#if defined(LZO_ABI_LITTLE_ENDIAN)
|
|
102
|
+
u.l[0] = u.l[1] = 0; u.c[0] = 128;
|
|
103
|
+
r &= (u.l[0] == 128);
|
|
104
|
+
#endif
|
|
105
|
+
#if defined(LZO_UNALIGNED_OK_2)
|
|
106
|
+
p = (lzo_uintptr_t) (const lzo_voidp) &u.c[0];
|
|
107
|
+
u.l[0] = u.l[1] = 0;
|
|
108
|
+
r &= ((* (const lzo_ushortp) (p+1)) == 0);
|
|
109
|
+
#endif
|
|
110
|
+
#if defined(LZO_UNALIGNED_OK_4)
|
|
111
|
+
p = (lzo_uintptr_t) (const lzo_voidp) &u.c[0];
|
|
112
|
+
u.l[0] = u.l[1] = 0;
|
|
113
|
+
r &= ((* (const lzo_uint32p) (p+1)) == 0);
|
|
114
|
+
#endif
|
|
115
|
+
#endif
|
|
116
|
+
|
|
117
|
+
LZO_UNUSED(u); LZO_UNUSED(p);
|
|
118
|
+
return r == 1 ? LZO_E_OK : LZO_E_ERROR;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
/***********************************************************************
|
|
123
|
+
//
|
|
124
|
+
************************************************************************/
|
|
125
|
+
|
|
126
|
+
int __lzo_init_done = 0;
|
|
127
|
+
|
|
128
|
+
LZO_PUBLIC(int)
|
|
129
|
+
__lzo_init_v2(unsigned v, int s1, int s2, int s3, int s4, int s5,
|
|
130
|
+
int s6, int s7, int s8, int s9)
|
|
131
|
+
{
|
|
132
|
+
int r;
|
|
133
|
+
|
|
134
|
+
#if defined(__LZO_IN_MINILZO)
|
|
135
|
+
#elif (LZO_CC_MSC && ((_MSC_VER) < 700))
|
|
136
|
+
#else
|
|
137
|
+
#define ACC_WANT_ACC_CHK_CH 1
|
|
138
|
+
#undef ACCCHK_ASSERT
|
|
139
|
+
#define ACCCHK_ASSERT(expr) LZO_COMPILE_TIME_ASSERT(expr)
|
|
140
|
+
#include "miniacc.h"
|
|
141
|
+
#endif
|
|
142
|
+
#undef ACCCHK_ASSERT
|
|
143
|
+
|
|
144
|
+
__lzo_init_done = 1;
|
|
145
|
+
|
|
146
|
+
if (v == 0)
|
|
147
|
+
return LZO_E_ERROR;
|
|
148
|
+
|
|
149
|
+
r = (s1 == -1 || s1 == (int) sizeof(short)) &&
|
|
150
|
+
(s2 == -1 || s2 == (int) sizeof(int)) &&
|
|
151
|
+
(s3 == -1 || s3 == (int) sizeof(long)) &&
|
|
152
|
+
(s4 == -1 || s4 == (int) sizeof(lzo_uint32)) &&
|
|
153
|
+
(s5 == -1 || s5 == (int) sizeof(lzo_uint)) &&
|
|
154
|
+
(s6 == -1 || s6 == (int) lzo_sizeof_dict_t) &&
|
|
155
|
+
(s7 == -1 || s7 == (int) sizeof(char *)) &&
|
|
156
|
+
(s8 == -1 || s8 == (int) sizeof(lzo_voidp)) &&
|
|
157
|
+
(s9 == -1 || s9 == (int) sizeof(lzo_callback_t));
|
|
158
|
+
if (!r)
|
|
159
|
+
return LZO_E_ERROR;
|
|
160
|
+
|
|
161
|
+
r = _lzo_config_check();
|
|
162
|
+
if (r != LZO_E_OK)
|
|
163
|
+
return r;
|
|
164
|
+
|
|
165
|
+
return r;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
#if !defined(__LZO_IN_MINILZO)
|
|
170
|
+
#include "lzo_dll.ch"
|
|
171
|
+
#endif
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
/*
|
|
175
|
+
vi:ts=4:et
|
|
176
|
+
*/
|