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.
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
+ */