extlzham 0.0.1.PROTOTYPE

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 (59) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +27 -0
  3. data/README.md +21 -0
  4. data/Rakefile +143 -0
  5. data/contrib/lzham/LICENSE +22 -0
  6. data/contrib/lzham/README.md +209 -0
  7. data/contrib/lzham/include/lzham.h +781 -0
  8. data/contrib/lzham/lzhamcomp/lzham_comp.h +38 -0
  9. data/contrib/lzham/lzhamcomp/lzham_lzbase.cpp +244 -0
  10. data/contrib/lzham/lzhamcomp/lzham_lzbase.h +45 -0
  11. data/contrib/lzham/lzhamcomp/lzham_lzcomp.cpp +608 -0
  12. data/contrib/lzham/lzhamcomp/lzham_lzcomp_internal.cpp +1966 -0
  13. data/contrib/lzham/lzhamcomp/lzham_lzcomp_internal.h +472 -0
  14. data/contrib/lzham/lzhamcomp/lzham_lzcomp_state.cpp +1413 -0
  15. data/contrib/lzham/lzhamcomp/lzham_match_accel.cpp +562 -0
  16. data/contrib/lzham/lzhamcomp/lzham_match_accel.h +146 -0
  17. data/contrib/lzham/lzhamcomp/lzham_null_threading.h +97 -0
  18. data/contrib/lzham/lzhamcomp/lzham_pthreads_threading.cpp +229 -0
  19. data/contrib/lzham/lzhamcomp/lzham_pthreads_threading.h +520 -0
  20. data/contrib/lzham/lzhamcomp/lzham_threading.h +12 -0
  21. data/contrib/lzham/lzhamcomp/lzham_win32_threading.cpp +220 -0
  22. data/contrib/lzham/lzhamcomp/lzham_win32_threading.h +368 -0
  23. data/contrib/lzham/lzhamdecomp/lzham_assert.cpp +66 -0
  24. data/contrib/lzham/lzhamdecomp/lzham_assert.h +40 -0
  25. data/contrib/lzham/lzhamdecomp/lzham_checksum.cpp +73 -0
  26. data/contrib/lzham/lzhamdecomp/lzham_checksum.h +13 -0
  27. data/contrib/lzham/lzhamdecomp/lzham_config.h +23 -0
  28. data/contrib/lzham/lzhamdecomp/lzham_core.h +264 -0
  29. data/contrib/lzham/lzhamdecomp/lzham_decomp.h +37 -0
  30. data/contrib/lzham/lzhamdecomp/lzham_helpers.h +54 -0
  31. data/contrib/lzham/lzhamdecomp/lzham_huffman_codes.cpp +262 -0
  32. data/contrib/lzham/lzhamdecomp/lzham_huffman_codes.h +14 -0
  33. data/contrib/lzham/lzhamdecomp/lzham_lzdecomp.cpp +1527 -0
  34. data/contrib/lzham/lzhamdecomp/lzham_lzdecompbase.cpp +131 -0
  35. data/contrib/lzham/lzhamdecomp/lzham_lzdecompbase.h +89 -0
  36. data/contrib/lzham/lzhamdecomp/lzham_math.h +142 -0
  37. data/contrib/lzham/lzhamdecomp/lzham_mem.cpp +284 -0
  38. data/contrib/lzham/lzhamdecomp/lzham_mem.h +112 -0
  39. data/contrib/lzham/lzhamdecomp/lzham_platform.cpp +157 -0
  40. data/contrib/lzham/lzhamdecomp/lzham_platform.h +284 -0
  41. data/contrib/lzham/lzhamdecomp/lzham_prefix_coding.cpp +351 -0
  42. data/contrib/lzham/lzhamdecomp/lzham_prefix_coding.h +146 -0
  43. data/contrib/lzham/lzhamdecomp/lzham_symbol_codec.cpp +1484 -0
  44. data/contrib/lzham/lzhamdecomp/lzham_symbol_codec.h +556 -0
  45. data/contrib/lzham/lzhamdecomp/lzham_timer.cpp +147 -0
  46. data/contrib/lzham/lzhamdecomp/lzham_timer.h +99 -0
  47. data/contrib/lzham/lzhamdecomp/lzham_traits.h +141 -0
  48. data/contrib/lzham/lzhamdecomp/lzham_types.h +97 -0
  49. data/contrib/lzham/lzhamdecomp/lzham_utils.h +58 -0
  50. data/contrib/lzham/lzhamdecomp/lzham_vector.cpp +75 -0
  51. data/contrib/lzham/lzhamdecomp/lzham_vector.h +588 -0
  52. data/contrib/lzham/lzhamlib/lzham_lib.cpp +179 -0
  53. data/examples/basic.rb +48 -0
  54. data/ext/extconf.rb +26 -0
  55. data/ext/extlzham.c +741 -0
  56. data/gemstub.rb +22 -0
  57. data/lib/extlzham/version.rb +5 -0
  58. data/lib/extlzham.rb +153 -0
  59. metadata +135 -0
data/gemstub.rb ADDED
@@ -0,0 +1,22 @@
1
+ #vim: set fileencoding:utf-8
2
+
3
+ require_relative "lib/extlzham/version"
4
+
5
+ GEMSTUB = Gem::Specification.new do |s|
6
+ s.name = "extlzham"
7
+ s.version = LZHAM::VERSION
8
+ s.summary = "ruby binding for lzham"
9
+ s.description = <<EOS
10
+ ruby binding for lzham <https://github.com/richgel999/lzham_codec>.
11
+ EOS
12
+ s.homepage = "http://sourceforge.jp/projects/rutsubo/"
13
+ s.license = "2-clause BSD License"
14
+ s.author = "dearblue"
15
+ s.email = "dearblue@users.sourceforge.jp"
16
+
17
+ s.required_ruby_version = ">= 2.0"
18
+ s.add_development_dependency "rspec", "~> 2.14"
19
+ s.add_development_dependency "rake", "~> 10.0"
20
+ end
21
+
22
+ EXTRA.concat(FileList["contrib/lzham/{LICENSE,README.md,include/lzham.h,{lzhamcomp,lzhamdecomp,lzhamlib}/*.{h,hh,hxx,hpp,c,cc,cxx,cpp,C}}"])
@@ -0,0 +1,5 @@
1
+ require "rubygems"
2
+
3
+ module LZHAM
4
+ VERSION = Gem::Version.new("0.0.1.PROTOTYPE")
5
+ end
data/lib/extlzham.rb ADDED
@@ -0,0 +1,153 @@
1
+ #vim: set fileencoding:utf-8
2
+
3
+ require "stringio"
4
+
5
+ ver = RbConfig::CONFIG["ruby_version"]
6
+ soname = File.basename(__FILE__, ".rb") << ".so"
7
+ lib = File.join(File.dirname(__FILE__), ver, soname)
8
+ if File.file?(lib)
9
+ require_relative File.join(ver, soname)
10
+ else
11
+ require_relative soname
12
+ end
13
+
14
+ require_relative "extlzham/version"
15
+
16
+ module LZHAM
17
+ #
18
+ # call-seq:
19
+ # encode(string, opts = {}) -> encoded string
20
+ # encode(out_stream, opts = {}) -> lzham encoder object
21
+ # encode(out_stream, opts = {}) { |encoder| ... } -> out_stream
22
+ #
23
+ # [RETURN (encoded string)]
24
+ # Return LZHAM'd binary string.
25
+ #
26
+ # [RETURN (lzham encoder object)]
27
+ # Return LZHAM encoder. When finished process, must call <tt>.finish</tt> method (as same as Zlib::Deflate#finish).
28
+ #
29
+ # [RETURN (out_stream)]
30
+ # Return out_stream parameter.
31
+ #
32
+ # [string]
33
+ # Input data as binary.
34
+ #
35
+ # [out_stream]
36
+ # Writable I/O liked object for LZHAM'd binary data.
37
+ #
38
+ # This object is called <tt><<</tt> method.
39
+ #
40
+ # This object is not closed after finished process.
41
+ #
42
+ # [opts (dictsize)]
43
+ # Set in lzham_compress_params.m_dict_size_log2. Default is <tt>LZHAM::MIN_DICT_SIZE_LOG2</tt>.
44
+ #
45
+ # [opts (level)]
46
+ # Set in lzham_compress_params.m_level. Default is <tt>LZHAM::COMP_LEVEL_DEFAULT</tt>.
47
+ #
48
+ # [opts (table_update_rate)]
49
+ # Set in lzham_compress_params.m_table_update_rate. Default is <tt>0</tt>.
50
+ #
51
+ # [opts (threads)]
52
+ # Set in lzham_compress_params.m_max_helper_threads. Default is <tt>-1</tt>.
53
+ #
54
+ # [opts (flags)]
55
+ # Set in lzham_compress_params.m_compress_flags. Default is <tt>0</tt>.
56
+ #
57
+ # [opts (table_max_update_interval)]
58
+ # Set in lzham_compress_params.m_table_max_update_interval. Default is <tt>0</tt>.
59
+ #
60
+ # [opts (table_update_interval_slow_rate)]
61
+ # Set in lzham_compress_params.m_table_update_interval_slow_rate. Default is <tt>0</tt>.
62
+ #
63
+ # [opts (seed)]
64
+ # Set in lzham_compress_params.m_pSeed_bytes and lzham_compress_params.m_num_seed_bytes.
65
+ #
66
+ # But this parameter is ignored currentry (not implemented).
67
+ #
68
+ # ==== example (when given string)
69
+ #
70
+ # require "extlzham"
71
+ # lzhamd = LZHAM.encode("This is not LZHAM'd string data." * 50)
72
+ # p lzhamd.class # => String
73
+ # p lzhamd # => ...binary data...
74
+ #
75
+ def self.encode(obj, *args)
76
+ if obj.kind_of?(String)
77
+ ex = LZHAM::Encoder.new(s = "".force_encoding(Encoding::BINARY), *args)
78
+ ex << obj
79
+ ex.finish
80
+ s
81
+ else
82
+ enc = Encoder.new(obj, *args)
83
+ return enc unless block_given?
84
+ begin
85
+ yield(enc)
86
+ obj
87
+ ensure
88
+ enc.finish
89
+ end
90
+ end
91
+ end
92
+
93
+ #
94
+ # call-seq:
95
+ # decode(string, opts = {}) -> decoded string
96
+ # decode(out_stream, opts = {}) -> lzham decoder object
97
+ # decode(out_stream, opts = {}) { |decoder| ... } -> out_stream
98
+ #
99
+ # [opts (dictsize)]
100
+ # Set in lzham_decompress_params.m_dict_size_log2. Default is <tt>LZHAM::MIN_DICT_SIZE_LOG2</tt>.
101
+ #
102
+ # [opts (table_update_rate)]
103
+ # Set in lzham_decompress_params.m_table_update_rate. Default is <tt>0</tt>.
104
+ #
105
+ # [opts (flags)]
106
+ # Set in lzham_decompress_params.m_compress_flags. Default is <tt>0</tt>.
107
+ #
108
+ # [opts (table_max_update_interval)]
109
+ # Set in lzham_decompress_params.m_table_max_update_interval. Default is <tt>0</tt>.
110
+ #
111
+ # [opts (table_update_interval_slow_rate)]
112
+ # Set in lzham_decompress_params.m_table_update_interval_slow_rate. Default is <tt>0</tt>.
113
+ #
114
+ # [opts (seed)]
115
+ # Set in lzham_decompress_params.m_pSeed_bytes and lzham_decompress_params.m_num_seed_bytes.
116
+ #
117
+ # But this parameter is ignored currentry (not implemented).
118
+ #
119
+ def self.decode(obj, *args)
120
+ if obj.kind_of?(String)
121
+ dx = LZHAM::Decoder.new(s = "".force_encoding(Encoding::BINARY), *args)
122
+ dx << obj
123
+ dx.finish
124
+ s
125
+ else
126
+ dec = Decoder.new(obj, *args)
127
+ return dec unless block_given?
128
+ begin
129
+ yield(dec)
130
+ obj
131
+ ensure
132
+ dec.finish
133
+ end
134
+ end
135
+ end
136
+
137
+ Compressor = Encoder
138
+ Decompressor = Decoder
139
+ Uncompressor = Decoder
140
+
141
+ class Encoder
142
+ alias encode update
143
+ alias compress update
144
+ alias close finish
145
+ end
146
+
147
+ class Decoder
148
+ alias decode update
149
+ alias decompress update
150
+ alias uncompress update
151
+ alias close finish
152
+ end
153
+ end
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: extlzham
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.PROTOTYPE
5
+ platform: ruby
6
+ authors:
7
+ - dearblue
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: |
42
+ ruby binding for lzham <https://github.com/richgel999/lzham_codec>.
43
+ email: dearblue@users.sourceforge.jp
44
+ executables: []
45
+ extensions:
46
+ - ext/extconf.rb
47
+ extra_rdoc_files:
48
+ - LICENSE.md
49
+ - README.md
50
+ - ext/extlzham.c
51
+ - lib/extlzham.rb
52
+ - lib/extlzham/version.rb
53
+ files:
54
+ - LICENSE.md
55
+ - README.md
56
+ - Rakefile
57
+ - contrib/lzham/LICENSE
58
+ - contrib/lzham/README.md
59
+ - contrib/lzham/include/lzham.h
60
+ - contrib/lzham/lzhamcomp/lzham_comp.h
61
+ - contrib/lzham/lzhamcomp/lzham_lzbase.cpp
62
+ - contrib/lzham/lzhamcomp/lzham_lzbase.h
63
+ - contrib/lzham/lzhamcomp/lzham_lzcomp.cpp
64
+ - contrib/lzham/lzhamcomp/lzham_lzcomp_internal.cpp
65
+ - contrib/lzham/lzhamcomp/lzham_lzcomp_internal.h
66
+ - contrib/lzham/lzhamcomp/lzham_lzcomp_state.cpp
67
+ - contrib/lzham/lzhamcomp/lzham_match_accel.cpp
68
+ - contrib/lzham/lzhamcomp/lzham_match_accel.h
69
+ - contrib/lzham/lzhamcomp/lzham_null_threading.h
70
+ - contrib/lzham/lzhamcomp/lzham_pthreads_threading.cpp
71
+ - contrib/lzham/lzhamcomp/lzham_pthreads_threading.h
72
+ - contrib/lzham/lzhamcomp/lzham_threading.h
73
+ - contrib/lzham/lzhamcomp/lzham_win32_threading.cpp
74
+ - contrib/lzham/lzhamcomp/lzham_win32_threading.h
75
+ - contrib/lzham/lzhamdecomp/lzham_assert.cpp
76
+ - contrib/lzham/lzhamdecomp/lzham_assert.h
77
+ - contrib/lzham/lzhamdecomp/lzham_checksum.cpp
78
+ - contrib/lzham/lzhamdecomp/lzham_checksum.h
79
+ - contrib/lzham/lzhamdecomp/lzham_config.h
80
+ - contrib/lzham/lzhamdecomp/lzham_core.h
81
+ - contrib/lzham/lzhamdecomp/lzham_decomp.h
82
+ - contrib/lzham/lzhamdecomp/lzham_helpers.h
83
+ - contrib/lzham/lzhamdecomp/lzham_huffman_codes.cpp
84
+ - contrib/lzham/lzhamdecomp/lzham_huffman_codes.h
85
+ - contrib/lzham/lzhamdecomp/lzham_lzdecomp.cpp
86
+ - contrib/lzham/lzhamdecomp/lzham_lzdecompbase.cpp
87
+ - contrib/lzham/lzhamdecomp/lzham_lzdecompbase.h
88
+ - contrib/lzham/lzhamdecomp/lzham_math.h
89
+ - contrib/lzham/lzhamdecomp/lzham_mem.cpp
90
+ - contrib/lzham/lzhamdecomp/lzham_mem.h
91
+ - contrib/lzham/lzhamdecomp/lzham_platform.cpp
92
+ - contrib/lzham/lzhamdecomp/lzham_platform.h
93
+ - contrib/lzham/lzhamdecomp/lzham_prefix_coding.cpp
94
+ - contrib/lzham/lzhamdecomp/lzham_prefix_coding.h
95
+ - contrib/lzham/lzhamdecomp/lzham_symbol_codec.cpp
96
+ - contrib/lzham/lzhamdecomp/lzham_symbol_codec.h
97
+ - contrib/lzham/lzhamdecomp/lzham_timer.cpp
98
+ - contrib/lzham/lzhamdecomp/lzham_timer.h
99
+ - contrib/lzham/lzhamdecomp/lzham_traits.h
100
+ - contrib/lzham/lzhamdecomp/lzham_types.h
101
+ - contrib/lzham/lzhamdecomp/lzham_utils.h
102
+ - contrib/lzham/lzhamdecomp/lzham_vector.cpp
103
+ - contrib/lzham/lzhamdecomp/lzham_vector.h
104
+ - contrib/lzham/lzhamlib/lzham_lib.cpp
105
+ - examples/basic.rb
106
+ - ext/extconf.rb
107
+ - ext/extlzham.c
108
+ - gemstub.rb
109
+ - lib/extlzham.rb
110
+ - lib/extlzham/version.rb
111
+ homepage: http://sourceforge.jp/projects/rutsubo/
112
+ licenses:
113
+ - 2-clause BSD License
114
+ metadata: {}
115
+ post_install_message:
116
+ rdoc_options: []
117
+ require_paths:
118
+ - lib
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '2.0'
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">"
127
+ - !ruby/object:Gem::Version
128
+ version: 1.3.1
129
+ requirements: []
130
+ rubyforge_project:
131
+ rubygems_version: 2.4.5
132
+ signing_key:
133
+ specification_version: 4
134
+ summary: ruby binding for lzham
135
+ test_files: []