Sha256: 687845d1e856c03b9d43fe43d3e8f41fddc75a3db8b164bf3cbcf6fca6541711
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
#include "ruby.h" #include "snappy.h" static VALUE rb_mSnappy; static ID i_to_s; static VALUE snappy_deflate(VALUE self, VALUE source) { snappy::string output; size_t output_length; source = rb_funcall(source, i_to_s, 0); output_length = snappy::Compress(RSTRING_PTR(source), RSTRING_LEN(source), &output); return rb_str_new(output.data(), output_length); } static VALUE snappy_inflate(VALUE self, VALUE source) { snappy::string output; source = rb_funcall(source, i_to_s, 0); if (!snappy::IsValidCompressedBuffer(RSTRING_PTR(source), RSTRING_LEN(source)) || !snappy::Uncompress(RSTRING_PTR(source), RSTRING_LEN(source), &output)) { rb_raise(rb_eRuntimeError, "Couldn't inflate"); } return rb_str_new(output.data(), output.size()); } extern "C" { void Init_snappy() { rb_mSnappy = rb_define_module("Snappy"); rb_define_singleton_method(rb_mSnappy, "deflate", (VALUE (*)(...))snappy_deflate, 1); rb_define_singleton_method(rb_mSnappy, "inflate", (VALUE (*)(...))snappy_inflate, 1); i_to_s = rb_intern("to_s"); } }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
snappy-0.0.0 | ext/snappy.cc |