lzoruby 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/LICENSE.txt +339 -0
  2. data/README.txt +57 -0
  3. data/ext/compr1b.h +81 -0
  4. data/ext/compr1c.h +81 -0
  5. data/ext/config1.h +61 -0
  6. data/ext/config1a.h +196 -0
  7. data/ext/config1b.h +140 -0
  8. data/ext/config1c.h +145 -0
  9. data/ext/config1f.h +97 -0
  10. data/ext/config1x.h +118 -0
  11. data/ext/config1y.h +66 -0
  12. data/ext/config1z.h +65 -0
  13. data/ext/config2a.h +155 -0
  14. data/ext/extconf.rb +2 -0
  15. data/ext/lzo/lzo1.h +96 -0
  16. data/ext/lzo/lzo1a.h +96 -0
  17. data/ext/lzo/lzo1b.h +160 -0
  18. data/ext/lzo/lzo1c.h +160 -0
  19. data/ext/lzo/lzo1f.h +108 -0
  20. data/ext/lzo/lzo1x.h +177 -0
  21. data/ext/lzo/lzo1y.h +145 -0
  22. data/ext/lzo/lzo1z.h +150 -0
  23. data/ext/lzo/lzo2a.h +92 -0
  24. data/ext/lzo/lzo_asm.h +139 -0
  25. data/ext/lzo/lzoconf.h +417 -0
  26. data/ext/lzo/lzodefs.h +1807 -0
  27. data/ext/lzo/lzoutil.h +73 -0
  28. data/ext/lzo1.c +635 -0
  29. data/ext/lzo1_99.c +130 -0
  30. data/ext/lzo1_cm.ch +52 -0
  31. data/ext/lzo1_d.ch +155 -0
  32. data/ext/lzo1a.c +657 -0
  33. data/ext/lzo1a_99.c +130 -0
  34. data/ext/lzo1a_cm.ch +242 -0
  35. data/ext/lzo1a_cr.ch +128 -0
  36. data/ext/lzo1a_de.h +158 -0
  37. data/ext/lzo1b_1.c +46 -0
  38. data/ext/lzo1b_2.c +46 -0
  39. data/ext/lzo1b_3.c +46 -0
  40. data/ext/lzo1b_4.c +46 -0
  41. data/ext/lzo1b_5.c +46 -0
  42. data/ext/lzo1b_6.c +46 -0
  43. data/ext/lzo1b_7.c +46 -0
  44. data/ext/lzo1b_8.c +46 -0
  45. data/ext/lzo1b_9.c +46 -0
  46. data/ext/lzo1b_99.c +49 -0
  47. data/ext/lzo1b_9x.c +365 -0
  48. data/ext/lzo1b_c.ch +270 -0
  49. data/ext/lzo1b_cc.c +167 -0
  50. data/ext/lzo1b_cc.h +93 -0
  51. data/ext/lzo1b_cm.ch +294 -0
  52. data/ext/lzo1b_cr.ch +126 -0
  53. data/ext/lzo1b_d.ch +282 -0
  54. data/ext/lzo1b_d1.c +46 -0
  55. data/ext/lzo1b_d2.c +46 -0
  56. data/ext/lzo1b_de.h +344 -0
  57. data/ext/lzo1b_r.ch +117 -0
  58. data/ext/lzo1b_rr.c +43 -0
  59. data/ext/lzo1b_sm.ch +210 -0
  60. data/ext/lzo1b_tm.ch +99 -0
  61. data/ext/lzo1b_xx.c +98 -0
  62. data/ext/lzo1c_1.c +46 -0
  63. data/ext/lzo1c_2.c +46 -0
  64. data/ext/lzo1c_3.c +46 -0
  65. data/ext/lzo1c_4.c +46 -0
  66. data/ext/lzo1c_5.c +46 -0
  67. data/ext/lzo1c_6.c +46 -0
  68. data/ext/lzo1c_7.c +46 -0
  69. data/ext/lzo1c_8.c +46 -0
  70. data/ext/lzo1c_9.c +46 -0
  71. data/ext/lzo1c_99.c +49 -0
  72. data/ext/lzo1c_9x.c +379 -0
  73. data/ext/lzo1c_cc.c +167 -0
  74. data/ext/lzo1c_cc.h +93 -0
  75. data/ext/lzo1c_d1.c +46 -0
  76. data/ext/lzo1c_d2.c +46 -0
  77. data/ext/lzo1c_rr.c +43 -0
  78. data/ext/lzo1c_xx.c +98 -0
  79. data/ext/lzo1f_1.c +312 -0
  80. data/ext/lzo1f_9x.c +345 -0
  81. data/ext/lzo1f_d.ch +223 -0
  82. data/ext/lzo1f_d1.c +46 -0
  83. data/ext/lzo1f_d2.c +46 -0
  84. data/ext/lzo1x_1.c +50 -0
  85. data/ext/lzo1x_1k.c +50 -0
  86. data/ext/lzo1x_1l.c +50 -0
  87. data/ext/lzo1x_1o.c +50 -0
  88. data/ext/lzo1x_9x.c +881 -0
  89. data/ext/lzo1x_c.ch +351 -0
  90. data/ext/lzo1x_d.ch +466 -0
  91. data/ext/lzo1x_d1.c +46 -0
  92. data/ext/lzo1x_d2.c +46 -0
  93. data/ext/lzo1x_d3.c +108 -0
  94. data/ext/lzo1x_o.c +45 -0
  95. data/ext/lzo1x_oo.ch +366 -0
  96. data/ext/lzo1y_1.c +50 -0
  97. data/ext/lzo1y_9x.c +42 -0
  98. data/ext/lzo1y_d1.c +46 -0
  99. data/ext/lzo1y_d2.c +46 -0
  100. data/ext/lzo1y_d3.c +45 -0
  101. data/ext/lzo1y_o.c +45 -0
  102. data/ext/lzo1z_9x.c +42 -0
  103. data/ext/lzo1z_d1.c +46 -0
  104. data/ext/lzo1z_d2.c +46 -0
  105. data/ext/lzo1z_d3.c +45 -0
  106. data/ext/lzo2a_9x.c +357 -0
  107. data/ext/lzo2a_d.ch +188 -0
  108. data/ext/lzo2a_d1.c +46 -0
  109. data/ext/lzo2a_d2.c +46 -0
  110. data/ext/lzo_conf.h +323 -0
  111. data/ext/lzo_crc.c +167 -0
  112. data/ext/lzo_dict.h +316 -0
  113. data/ext/lzo_dll.ch +64 -0
  114. data/ext/lzo_init.c +176 -0
  115. data/ext/lzo_mchw.ch +242 -0
  116. data/ext/lzo_ptr.c +92 -0
  117. data/ext/lzo_ptr.h +154 -0
  118. data/ext/lzo_str.c +71 -0
  119. data/ext/lzo_swd.ch +707 -0
  120. data/ext/lzo_util.c +165 -0
  121. data/ext/lzoruby.c +149 -0
  122. data/ext/miniacc.h +6553 -0
  123. data/ext/stats1a.h +137 -0
  124. data/ext/stats1b.h +142 -0
  125. data/ext/stats1c.h +61 -0
  126. 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
+ */