lzoruby 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. data/{README.txt → README} +3 -7
  2. data/ext/extconf.rb +4 -1
  3. metadata +24 -131
  4. data/ext/compr1b.h +0 -81
  5. data/ext/compr1c.h +0 -81
  6. data/ext/config1.h +0 -61
  7. data/ext/config1a.h +0 -196
  8. data/ext/config1b.h +0 -140
  9. data/ext/config1c.h +0 -145
  10. data/ext/config1f.h +0 -97
  11. data/ext/config1x.h +0 -118
  12. data/ext/config1y.h +0 -66
  13. data/ext/config1z.h +0 -65
  14. data/ext/config2a.h +0 -155
  15. data/ext/lzo/lzo1.h +0 -96
  16. data/ext/lzo/lzo1a.h +0 -96
  17. data/ext/lzo/lzo1b.h +0 -160
  18. data/ext/lzo/lzo1c.h +0 -160
  19. data/ext/lzo/lzo1f.h +0 -108
  20. data/ext/lzo/lzo1x.h +0 -177
  21. data/ext/lzo/lzo1y.h +0 -145
  22. data/ext/lzo/lzo1z.h +0 -150
  23. data/ext/lzo/lzo2a.h +0 -92
  24. data/ext/lzo/lzo_asm.h +0 -139
  25. data/ext/lzo/lzoconf.h +0 -417
  26. data/ext/lzo/lzodefs.h +0 -1807
  27. data/ext/lzo/lzoutil.h +0 -73
  28. data/ext/lzo1.c +0 -635
  29. data/ext/lzo1_99.c +0 -130
  30. data/ext/lzo1_cm.ch +0 -52
  31. data/ext/lzo1_d.ch +0 -155
  32. data/ext/lzo1a.c +0 -657
  33. data/ext/lzo1a_99.c +0 -130
  34. data/ext/lzo1a_cm.ch +0 -242
  35. data/ext/lzo1a_cr.ch +0 -128
  36. data/ext/lzo1a_de.h +0 -158
  37. data/ext/lzo1b_1.c +0 -46
  38. data/ext/lzo1b_2.c +0 -46
  39. data/ext/lzo1b_3.c +0 -46
  40. data/ext/lzo1b_4.c +0 -46
  41. data/ext/lzo1b_5.c +0 -46
  42. data/ext/lzo1b_6.c +0 -46
  43. data/ext/lzo1b_7.c +0 -46
  44. data/ext/lzo1b_8.c +0 -46
  45. data/ext/lzo1b_9.c +0 -46
  46. data/ext/lzo1b_99.c +0 -49
  47. data/ext/lzo1b_9x.c +0 -365
  48. data/ext/lzo1b_c.ch +0 -270
  49. data/ext/lzo1b_cc.c +0 -167
  50. data/ext/lzo1b_cc.h +0 -93
  51. data/ext/lzo1b_cm.ch +0 -294
  52. data/ext/lzo1b_cr.ch +0 -126
  53. data/ext/lzo1b_d.ch +0 -282
  54. data/ext/lzo1b_d1.c +0 -46
  55. data/ext/lzo1b_d2.c +0 -46
  56. data/ext/lzo1b_de.h +0 -344
  57. data/ext/lzo1b_r.ch +0 -117
  58. data/ext/lzo1b_rr.c +0 -43
  59. data/ext/lzo1b_sm.ch +0 -210
  60. data/ext/lzo1b_tm.ch +0 -99
  61. data/ext/lzo1b_xx.c +0 -98
  62. data/ext/lzo1c_1.c +0 -46
  63. data/ext/lzo1c_2.c +0 -46
  64. data/ext/lzo1c_3.c +0 -46
  65. data/ext/lzo1c_4.c +0 -46
  66. data/ext/lzo1c_5.c +0 -46
  67. data/ext/lzo1c_6.c +0 -46
  68. data/ext/lzo1c_7.c +0 -46
  69. data/ext/lzo1c_8.c +0 -46
  70. data/ext/lzo1c_9.c +0 -46
  71. data/ext/lzo1c_99.c +0 -49
  72. data/ext/lzo1c_9x.c +0 -379
  73. data/ext/lzo1c_cc.c +0 -167
  74. data/ext/lzo1c_cc.h +0 -93
  75. data/ext/lzo1c_d1.c +0 -46
  76. data/ext/lzo1c_d2.c +0 -46
  77. data/ext/lzo1c_rr.c +0 -43
  78. data/ext/lzo1c_xx.c +0 -98
  79. data/ext/lzo1f_1.c +0 -312
  80. data/ext/lzo1f_9x.c +0 -345
  81. data/ext/lzo1f_d.ch +0 -223
  82. data/ext/lzo1f_d1.c +0 -46
  83. data/ext/lzo1f_d2.c +0 -46
  84. data/ext/lzo1x_1.c +0 -50
  85. data/ext/lzo1x_1k.c +0 -50
  86. data/ext/lzo1x_1l.c +0 -50
  87. data/ext/lzo1x_1o.c +0 -50
  88. data/ext/lzo1x_9x.c +0 -881
  89. data/ext/lzo1x_c.ch +0 -351
  90. data/ext/lzo1x_d.ch +0 -466
  91. data/ext/lzo1x_d1.c +0 -46
  92. data/ext/lzo1x_d2.c +0 -46
  93. data/ext/lzo1x_d3.c +0 -108
  94. data/ext/lzo1x_o.c +0 -45
  95. data/ext/lzo1x_oo.ch +0 -366
  96. data/ext/lzo1y_1.c +0 -50
  97. data/ext/lzo1y_9x.c +0 -42
  98. data/ext/lzo1y_d1.c +0 -46
  99. data/ext/lzo1y_d2.c +0 -46
  100. data/ext/lzo1y_d3.c +0 -45
  101. data/ext/lzo1y_o.c +0 -45
  102. data/ext/lzo1z_9x.c +0 -42
  103. data/ext/lzo1z_d1.c +0 -46
  104. data/ext/lzo1z_d2.c +0 -46
  105. data/ext/lzo1z_d3.c +0 -45
  106. data/ext/lzo2a_9x.c +0 -357
  107. data/ext/lzo2a_d.ch +0 -188
  108. data/ext/lzo2a_d1.c +0 -46
  109. data/ext/lzo2a_d2.c +0 -46
  110. data/ext/lzo_conf.h +0 -323
  111. data/ext/lzo_crc.c +0 -167
  112. data/ext/lzo_dict.h +0 -316
  113. data/ext/lzo_dll.ch +0 -64
  114. data/ext/lzo_init.c +0 -176
  115. data/ext/lzo_mchw.ch +0 -242
  116. data/ext/lzo_ptr.c +0 -92
  117. data/ext/lzo_ptr.h +0 -154
  118. data/ext/lzo_str.c +0 -71
  119. data/ext/lzo_swd.ch +0 -707
  120. data/ext/lzo_util.c +0 -165
  121. data/ext/miniacc.h +0 -6553
  122. data/ext/stats1a.h +0 -137
  123. data/ext/stats1b.h +0 -142
  124. data/ext/stats1c.h +0 -61
@@ -1,93 +0,0 @@
1
- /* lzo1c_cc.h -- definitions for the the LZO1C compression driver
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 __LZO1C_CC_H
48
- #define __LZO1C_CC_H
49
-
50
-
51
- /***********************************************************************
52
- //
53
- ************************************************************************/
54
-
55
- extern const lzo_compress_t _lzo1c_1_compress_func;
56
- extern const lzo_compress_t _lzo1c_2_compress_func;
57
- extern const lzo_compress_t _lzo1c_3_compress_func;
58
- extern const lzo_compress_t _lzo1c_4_compress_func;
59
- extern const lzo_compress_t _lzo1c_5_compress_func;
60
- extern const lzo_compress_t _lzo1c_6_compress_func;
61
- extern const lzo_compress_t _lzo1c_7_compress_func;
62
- extern const lzo_compress_t _lzo1c_8_compress_func;
63
- extern const lzo_compress_t _lzo1c_9_compress_func;
64
-
65
- extern const lzo_compress_t _lzo1c_99_compress_func;
66
-
67
-
68
- /***********************************************************************
69
- //
70
- ************************************************************************/
71
-
72
- LZO_EXTERN(lzo_bytep )
73
- _lzo1c_store_run ( lzo_bytep const oo, const lzo_bytep const ii,
74
- lzo_uint r_len);
75
-
76
- #define STORE_RUN _lzo1c_store_run
77
-
78
-
79
- lzo_compress_t _lzo1c_get_compress_func(int clevel);
80
-
81
- int _lzo1c_do_compress ( const lzo_bytep in, lzo_uint in_len,
82
- lzo_bytep out, lzo_uintp out_len,
83
- lzo_voidp wrkmem,
84
- lzo_compress_t func );
85
-
86
-
87
- #endif /* already included */
88
-
89
- /*
90
- vi:ts=4:et
91
- */
92
-
93
-
@@ -1,46 +0,0 @@
1
- /* lzo1c_d1.c -- LZO1C decompression
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 "config1c.h"
42
-
43
- #undef LZO_TEST_OVERRUN
44
- #define DO_DECOMPRESS lzo1c_decompress
45
-
46
- #include "lzo1b_d.ch"
@@ -1,46 +0,0 @@
1
- /* lzo1c_d2.c -- LZO1C decompression with overrun testing
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 "config1c.h"
42
-
43
- #define LZO_TEST_OVERRUN
44
- #define DO_DECOMPRESS lzo1c_decompress_safe
45
-
46
- #include "lzo1b_d.ch"
@@ -1,43 +0,0 @@
1
- /* lzo1c_rr.c -- literal run handling
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 "config1c.h"
42
-
43
- #include "lzo1b_r.ch"
@@ -1,98 +0,0 @@
1
- /* lzo1c_xx.c -- LZO1C compression public entry point
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 "config1c.h"
42
-
43
-
44
- /***********************************************************************
45
- //
46
- ************************************************************************/
47
-
48
- static const lzo_compress_t * const c_funcs [9] =
49
- {
50
- &_lzo1c_1_compress_func,
51
- &_lzo1c_2_compress_func,
52
- &_lzo1c_3_compress_func,
53
- &_lzo1c_4_compress_func,
54
- &_lzo1c_5_compress_func,
55
- &_lzo1c_6_compress_func,
56
- &_lzo1c_7_compress_func,
57
- &_lzo1c_8_compress_func,
58
- &_lzo1c_9_compress_func
59
- };
60
-
61
-
62
- lzo_compress_t _lzo1c_get_compress_func(int clevel)
63
- {
64
- const lzo_compress_t *f;
65
-
66
- if (clevel < LZO1C_BEST_SPEED || clevel > LZO1C_BEST_COMPRESSION)
67
- {
68
- if (clevel == LZO1C_DEFAULT_COMPRESSION)
69
- clevel = LZO1C_BEST_SPEED;
70
- else
71
- return 0;
72
- }
73
- f = c_funcs[clevel-1];
74
- assert(f && *f);
75
- return *f;
76
- }
77
-
78
-
79
- LZO_PUBLIC(int)
80
- lzo1c_compress ( const lzo_bytep src, lzo_uint src_len,
81
- lzo_bytep dst, lzo_uintp dst_len,
82
- lzo_voidp wrkmem,
83
- int clevel )
84
- {
85
- lzo_compress_t f;
86
-
87
- f = _lzo1c_get_compress_func(clevel);
88
- if (!f)
89
- return LZO_E_ERROR;
90
- return _lzo1c_do_compress(src,src_len,dst,dst_len,wrkmem,f);
91
- }
92
-
93
-
94
-
95
- /*
96
- vi:ts=4:et
97
- */
98
-
@@ -1,312 +0,0 @@
1
- /* lzo1f_1.c -- implementation of the LZO1F-1 compression algorithm
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
- #include "lzo/lzo1f.h"
43
-
44
-
45
- /***********************************************************************
46
- //
47
- ************************************************************************/
48
-
49
- #define M2_MAX_OFFSET 0x0800
50
- #define M3_MAX_OFFSET 0x3fff
51
- #define M3_MARKER 224
52
-
53
-
54
- #ifndef LZO_HASH
55
- #define LZO_HASH LZO_HASH_LZO_INCREMENTAL_A
56
- #endif
57
- #define D_BITS 14
58
- #define D_INDEX1(d,p) d = DM(DMUL(0x21,DX3(p,5,5,6)) >> 5)
59
- #define D_INDEX2(d,p) d = (d & (D_MASK & 0x7ff)) ^ (D_HIGH | 0x1f)
60
- #include "lzo_dict.h"
61
-
62
-
63
- /***********************************************************************
64
- // compress a block of data.
65
- ************************************************************************/
66
-
67
- static __lzo_noinline
68
- int do_compress ( const lzo_bytep in , lzo_uint in_len,
69
- lzo_bytep out, lzo_uintp out_len,
70
- lzo_voidp wrkmem )
71
- {
72
- register const lzo_bytep ip;
73
- lzo_bytep op;
74
- const lzo_bytep const in_end = in + in_len;
75
- const lzo_bytep const ip_end = in + in_len - 9;
76
- const lzo_bytep ii;
77
- lzo_dict_p const dict = (lzo_dict_p) wrkmem;
78
-
79
- op = out;
80
- ip = in;
81
- ii = ip;
82
-
83
- ip++;
84
- for (;;)
85
- {
86
- register const lzo_bytep m_pos;
87
- lzo_uint m_off;
88
- lzo_uint m_len;
89
- lzo_uint dindex;
90
- lzo_uint lit;
91
-
92
- DINDEX1(dindex,ip);
93
- GINDEX(m_pos,m_off,dict,dindex,in);
94
- if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,M3_MAX_OFFSET))
95
- goto literal;
96
- #if 1
97
- if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
98
- goto try_match;
99
- DINDEX2(dindex,ip);
100
- #endif
101
- GINDEX(m_pos,m_off,dict,dindex,in);
102
- if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,M3_MAX_OFFSET))
103
- goto literal;
104
- if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
105
- goto try_match;
106
- goto literal;
107
-
108
-
109
- try_match:
110
- #if 0 && defined(LZO_UNALIGNED_OK_2)
111
- if (* (const lzo_ushortp) m_pos != * (const lzo_ushortp) ip)
112
- #else
113
- if (m_pos[0] != ip[0] || m_pos[1] != ip[1])
114
- #endif
115
- {
116
- }
117
- else
118
- {
119
- if (m_pos[2] == ip[2])
120
- {
121
- m_pos += 3;
122
- #if 0
123
- if (m_off <= M2_MAX_OFFSET)
124
- goto match;
125
- if (lit <= 3)
126
- goto match;
127
- if (lit == 3) /* better compression, but slower */
128
- {
129
- assert(op - 2 > out); op[-2] |= LZO_BYTE(3);
130
- *op++ = *ii++; *op++ = *ii++; *op++ = *ii++;
131
- goto code_match;
132
- }
133
- if (*m_pos == ip[3])
134
- #endif
135
- goto match;
136
- }
137
- }
138
-
139
-
140
- /* a literal */
141
- literal:
142
- UPDATE_I(dict,0,dindex,ip,in);
143
- if (++ip >= ip_end)
144
- break;
145
- continue;
146
-
147
-
148
- /* a match */
149
- match:
150
- UPDATE_I(dict,0,dindex,ip,in);
151
- /* store current literal run */
152
- lit = pd(ip,ii);
153
- if (lit > 0)
154
- {
155
- register lzo_uint t = lit;
156
-
157
- if (t < 4 && op > out)
158
- op[-2] |= LZO_BYTE(t);
159
- else if (t <= 31)
160
- *op++ = LZO_BYTE(t);
161
- else
162
- {
163
- register lzo_uint tt = t - 31;
164
-
165
- *op++ = 0;
166
- while (tt > 255)
167
- {
168
- tt -= 255;
169
- *op++ = 0;
170
- }
171
- assert(tt > 0);
172
- *op++ = LZO_BYTE(tt);
173
- }
174
- do *op++ = *ii++; while (--t > 0);
175
- }
176
- assert(ii == ip);
177
-
178
-
179
- /* code the match */
180
- ip += 3;
181
- if (*m_pos++ != *ip++ || *m_pos++ != *ip++ || *m_pos++ != *ip++ ||
182
- *m_pos++ != *ip++ || *m_pos++ != *ip++ || *m_pos++ != *ip++)
183
- {
184
- --ip;
185
- m_len = pd(ip, ii);
186
- assert(m_len >= 3); assert(m_len <= 8);
187
-
188
- if (m_off <= M2_MAX_OFFSET)
189
- {
190
- m_off -= 1;
191
- *op++ = LZO_BYTE(((m_len - 2) << 5) | ((m_off & 7) << 2));
192
- *op++ = LZO_BYTE(m_off >> 3);
193
- }
194
- else if (m_len == 3 && m_off <= 2*M2_MAX_OFFSET && lit > 0)
195
- {
196
- m_off -= 1;
197
- /* m_off -= M2_MAX_OFFSET; */
198
- *op++ = LZO_BYTE(((m_off & 7) << 2));
199
- *op++ = LZO_BYTE(m_off >> 3);
200
- }
201
- else
202
- {
203
- *op++ = LZO_BYTE(M3_MARKER | (m_len - 2));
204
- *op++ = LZO_BYTE((m_off & 63) << 2);
205
- *op++ = LZO_BYTE(m_off >> 6);
206
- }
207
- }
208
- else
209
- {
210
- {
211
- const lzo_bytep end;
212
- end = in_end;
213
- while (ip < end && *m_pos == *ip)
214
- m_pos++, ip++;
215
- m_len = pd(ip, ii);
216
- }
217
- assert(m_len >= 3);
218
-
219
- if (m_len <= 33)
220
- *op++ = LZO_BYTE(M3_MARKER | (m_len - 2));
221
- else
222
- {
223
- m_len -= 33;
224
- *op++ = M3_MARKER | 0;
225
- while (m_len > 255)
226
- {
227
- m_len -= 255;
228
- *op++ = 0;
229
- }
230
- assert(m_len > 0);
231
- *op++ = LZO_BYTE(m_len);
232
- }
233
- *op++ = LZO_BYTE((m_off & 63) << 2);
234
- *op++ = LZO_BYTE(m_off >> 6);
235
- }
236
-
237
- ii = ip;
238
- if (ip >= ip_end)
239
- break;
240
- }
241
-
242
-
243
- /* store final literal run */
244
- if (pd(in_end,ii) > 0)
245
- {
246
- register lzo_uint t = pd(in_end,ii);
247
-
248
- if (t < 4 && op > out)
249
- op[-2] |= LZO_BYTE(t);
250
- else if (t <= 31)
251
- *op++ = LZO_BYTE(t);
252
- else
253
- {
254
- register lzo_uint tt = t - 31;
255
-
256
- *op++ = 0;
257
- while (tt > 255)
258
- {
259
- tt -= 255;
260
- *op++ = 0;
261
- }
262
- assert(tt > 0);
263
- *op++ = LZO_BYTE(tt);
264
- }
265
- do *op++ = *ii++; while (--t > 0);
266
- }
267
-
268
- *out_len = pd(op, out);
269
- return LZO_E_OK;
270
- }
271
-
272
-
273
- /***********************************************************************
274
- // public entry point
275
- ************************************************************************/
276
-
277
- LZO_PUBLIC(int)
278
- lzo1f_1_compress ( const lzo_bytep in , lzo_uint in_len,
279
- lzo_bytep out, lzo_uintp out_len,
280
- lzo_voidp wrkmem )
281
- {
282
- lzo_bytep op = out;
283
- int r = LZO_E_OK;
284
-
285
- if (in_len <= 0)
286
- *out_len = 0;
287
- else if (in_len <= 10)
288
- {
289
- *op++ = LZO_BYTE(in_len);
290
- do *op++ = *in++; while (--in_len > 0);
291
- *out_len = pd(op, out);
292
- }
293
- else
294
- r = do_compress(in,in_len,out,out_len,wrkmem);
295
-
296
- if (r == LZO_E_OK)
297
- {
298
- op = out + *out_len;
299
- *op++ = M3_MARKER | 1;
300
- *op++ = 0;
301
- *op++ = 0;
302
- *out_len += 3;
303
- }
304
-
305
- return r;
306
- }
307
-
308
-
309
- /*
310
- vi:ts=4:et
311
- */
312
-