snappy 0.0.2 → 0.0.3

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 (5) hide show
  1. data/VERSION +1 -1
  2. data/ext/api.cc +43 -19
  3. data/ext/extconf.rb +8 -3
  4. data/snappy.gemspec +7 -7
  5. metadata +13 -15
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/ext/api.cc CHANGED
@@ -2,44 +2,68 @@
2
2
  #include "snappy.h"
3
3
 
4
4
  static VALUE rb_mSnappy;
5
- static ID i_to_s;
5
+ static VALUE rb_eSnappy;
6
6
 
7
7
  static VALUE
8
- snappy_deflate(VALUE self, VALUE source)
8
+ snappy_deflate(int argc, VALUE *argv, VALUE self)
9
9
  {
10
- snappy::string output;
10
+ VALUE src, dst;
11
11
  size_t output_length;
12
12
 
13
- source = rb_funcall(source, i_to_s, 0);
14
- output_length = snappy::Compress(RSTRING_PTR(source), RSTRING_LEN(source), &output);
13
+ rb_scan_args(argc, argv, "11", &src, &dst);
14
+ StringValue(src);
15
15
 
16
- return rb_str_new(output.data(), output_length);
16
+ output_length = snappy::MaxCompressedLength(RSTRING_LEN(src));
17
+
18
+ if (NIL_P(dst)) {
19
+ dst = rb_str_new(NULL, output_length);
20
+ } else {
21
+ StringValue(dst);
22
+ rb_str_resize(dst, output_length);
23
+ }
24
+
25
+ snappy::RawCompress(RSTRING_PTR(src), RSTRING_LEN(src), RSTRING_PTR(dst), &output_length);
26
+ rb_str_resize(dst, output_length);
27
+
28
+ return dst;
17
29
  }
18
30
 
19
31
  static VALUE
20
- snappy_inflate(VALUE self, VALUE source)
32
+ snappy_inflate(int argc, VALUE *argv, VALUE self)
21
33
  {
22
- snappy::string output;
34
+ VALUE src, dst;
35
+ size_t output_length;
36
+
37
+ rb_scan_args(argc, argv, "11", &src, &dst);
38
+ StringValue(src);
23
39
 
24
- source = rb_funcall(source, i_to_s, 0);
25
- if (!snappy::IsValidCompressedBuffer(RSTRING_PTR(source), RSTRING_LEN(source)) ||
26
- !snappy::Uncompress(RSTRING_PTR(source), RSTRING_LEN(source), &output)) {
27
- rb_raise(rb_eRuntimeError, "Couldn't inflate");
40
+ if (!snappy::GetUncompressedLength(RSTRING_PTR(src), RSTRING_LEN(src), &output_length)) {
41
+ rb_raise(rb_eSnappy, "snappy::GetUncompressedLength");
28
42
  }
29
43
 
30
- return rb_str_new(output.data(), output.size());
44
+ if (NIL_P(dst)) {
45
+ dst = rb_str_new(NULL, output_length);
46
+ } else {
47
+ StringValue(dst);
48
+ rb_str_resize(dst, output_length);
49
+ }
50
+
51
+ if (!snappy::RawUncompress(RSTRING_PTR(src), RSTRING_LEN(src), RSTRING_PTR(dst))) {
52
+ rb_raise(rb_eSnappy, "snappy::RawUncompress");
53
+ }
54
+
55
+ return dst;
31
56
  }
32
57
 
33
58
  extern "C" {
34
59
  void Init_snappy()
35
60
  {
36
61
  rb_mSnappy = rb_define_module("Snappy");
37
- rb_define_singleton_method(rb_mSnappy, "deflate", (VALUE (*)(...))snappy_deflate, 1);
38
- rb_define_singleton_method(rb_mSnappy, "inflate", (VALUE (*)(...))snappy_inflate, 1);
39
-
40
- rb_define_singleton_method(rb_mSnappy, "compress", (VALUE (*)(...))snappy_deflate, 1);
41
- rb_define_singleton_method(rb_mSnappy, "uncompress", (VALUE (*)(...))snappy_inflate, 1);
62
+ rb_eSnappy = rb_define_class_under(rb_mSnappy, "Error", rb_eStandardError);
63
+ rb_define_singleton_method(rb_mSnappy, "deflate", (VALUE (*)(...))snappy_deflate, -1);
64
+ rb_define_singleton_method(rb_mSnappy, "inflate", (VALUE (*)(...))snappy_inflate, -1);
42
65
 
43
- i_to_s = rb_intern("to_s");
66
+ rb_define_singleton_method(rb_mSnappy, "compress", (VALUE (*)(...))snappy_deflate, -1);
67
+ rb_define_singleton_method(rb_mSnappy, "uncompress", (VALUE (*)(...))snappy_inflate, -1);
44
68
  }
45
69
  }
data/ext/extconf.rb CHANGED
@@ -20,11 +20,14 @@ def try_configure
20
20
  have_header 'stdlib.h'
21
21
  have_header 'strings.h'
22
22
  have_header 'string.h'
23
+ have_header 'sys/byteswap.h'
24
+ have_header 'sys/endian.h'
23
25
  have_header 'sys/mman.h'
26
+ have_header 'sys/resource.h'
24
27
  have_header 'sys/stat.h'
25
28
  have_header 'sys/types.h'
26
- have_header 'sys/resource.h'
27
29
  have_header 'unistd.h'
30
+ have_header 'windows.h'
28
31
 
29
32
  if try_run 'int main(int argc, char** argv){ int i = 1; return *((char*)&i); }'
30
33
  $defs << '-DWORDS_BIGENDIAN'
@@ -37,7 +40,7 @@ unless have_library 'snappy'
37
40
  tar = 'tar'
38
41
  tar = 'gnutar' if find_executable 'gnutar'
39
42
 
40
- ver = "1.0.2"
43
+ ver = "1.0.4"
41
44
  src = "snappy-#{ver}"
42
45
 
43
46
  FileUtils.rm_rf File.join dst, src
@@ -51,6 +54,8 @@ unless have_library 'snappy'
51
54
 
52
55
  %w(
53
56
  config.h
57
+ snappy-c.cc
58
+ snappy-c.h
54
59
  snappy-internal.h
55
60
  snappy-sinksource.cc
56
61
  snappy-sinksource.h
@@ -68,7 +73,7 @@ snappy.h
68
73
  %r'#if @ac_cv_have_stddef_h@' => '#ifdef HAVE_STDDEF_H',
69
74
  %r'@SNAPPY_MAJOR@' => '1',
70
75
  %r'@SNAPPY_MINOR@' => '0',
71
- %r'@SNAPPY_PATCHLEVEL@' => '2',
76
+ %r'@SNAPPY_PATCHLEVEL@' => '4',
72
77
  }.each { |ptn, str| hdr.gsub! ptn, str }
73
78
  File.open(File.join(dst, 'snappy-stubs-public.h'), 'wb'){ |f| f.write hdr }
74
79
 
data/snappy.gemspec CHANGED
@@ -5,14 +5,14 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{snappy}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["miyucy"]
12
- s.date = %q{2011-05-09}
11
+ s.authors = [%q{miyucy}]
12
+ s.date = %q{2011-10-13}
13
13
  s.description = %q{libsnappy binding for Ruby}
14
14
  s.email = %q{miyucy@gmail.com}
15
- s.extensions = ["ext/extconf.rb"]
15
+ s.extensions = [%q{ext/extconf.rb}]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE.txt",
18
18
  "README.rdoc"
@@ -33,9 +33,9 @@ Gem::Specification.new do |s|
33
33
  "spec/spec_helper.rb"
34
34
  ]
35
35
  s.homepage = %q{http://github.com/miyucy/snappy}
36
- s.licenses = ["MIT"]
37
- s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.6.2}
36
+ s.licenses = [%q{MIT}]
37
+ s.require_paths = [%q{lib}]
38
+ s.rubygems_version = %q{1.8.9}
39
39
  s.summary = %q{libsnappy binding for Ruby}
40
40
  s.test_files = [
41
41
  "spec/snappy_spec.rb",
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snappy
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - miyucy
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-09 00:00:00 +09:00
19
- default_executable:
18
+ date: 2011-10-13 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -30,9 +29,9 @@ dependencies:
30
29
  - 3
31
30
  - 0
32
31
  version: 2.3.0
33
- prerelease: false
34
- type: :development
35
32
  requirement: *id001
33
+ type: :development
34
+ prerelease: false
36
35
  name: rspec
37
36
  - !ruby/object:Gem::Dependency
38
37
  version_requirements: &id002 !ruby/object:Gem::Requirement
@@ -46,9 +45,9 @@ dependencies:
46
45
  - 0
47
46
  - 0
48
47
  version: 1.0.0
49
- prerelease: false
50
- type: :development
51
48
  requirement: *id002
49
+ type: :development
50
+ prerelease: false
52
51
  name: bundler
53
52
  - !ruby/object:Gem::Dependency
54
53
  version_requirements: &id003 !ruby/object:Gem::Requirement
@@ -62,9 +61,9 @@ dependencies:
62
61
  - 5
63
62
  - 2
64
63
  version: 1.5.2
65
- prerelease: false
66
- type: :development
67
64
  requirement: *id003
65
+ type: :development
66
+ prerelease: false
68
67
  name: jeweler
69
68
  - !ruby/object:Gem::Dependency
70
69
  version_requirements: &id004 !ruby/object:Gem::Requirement
@@ -76,9 +75,9 @@ dependencies:
76
75
  segments:
77
76
  - 0
78
77
  version: "0"
79
- prerelease: false
80
- type: :development
81
78
  requirement: *id004
79
+ type: :development
80
+ prerelease: false
82
81
  name: rcov
83
82
  description: libsnappy binding for Ruby
84
83
  email: miyucy@gmail.com
@@ -103,7 +102,6 @@ files:
103
102
  - snappy.gemspec
104
103
  - spec/snappy_spec.rb
105
104
  - spec/spec_helper.rb
106
- has_rdoc: true
107
105
  homepage: http://github.com/miyucy/snappy
108
106
  licenses:
109
107
  - MIT
@@ -133,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
131
  requirements: []
134
132
 
135
133
  rubyforge_project:
136
- rubygems_version: 1.6.2
134
+ rubygems_version: 1.8.9
137
135
  signing_key:
138
136
  specification_version: 3
139
137
  summary: libsnappy binding for Ruby