listpack 0.0.1.beta2 → 0.0.1.beta3
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -2
- data/Rakefile +3 -0
- data/ext/listpack/extconf.rb +1 -1
- data/ext/listpack/listpack_rb.c +41 -0
- data/lib/listpack/version.rb +1 -1
- data/listpack.gemspec +7 -4
- metadata +45 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf0000e6a9319e810ad90290e80bb6375bcaf8c91407f01d0caeb05bdca53ffd
|
4
|
+
data.tar.gz: d6e9fc6e06ac5ebbca6242e60bd5d1cca12a57b2bbcc6620d369179c1c32253f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c823632a71f7e2a334ac0cd2b8d437243103c31e034b3e3393c14f526d108fc7ada25fcc93bb9d6dc5447d7dd78073e204659e203839c81e095146fd1529361
|
7
|
+
data.tar.gz: 640eae14403530aaaf6ecf5a0de107edd839576a80be8f8aa5f2ae3f47faf431479cb4039776d669fc26ee949eeae22ab3f9673b390941ecef52c2ade68c4fcb
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
listpack (0.0.1.
|
5
|
-
rake-compiler
|
4
|
+
listpack (0.0.1.beta3)
|
6
5
|
|
7
6
|
GEM
|
8
7
|
remote: https://rubygems.org/
|
@@ -37,8 +36,11 @@ PLATFORMS
|
|
37
36
|
ruby
|
38
37
|
|
39
38
|
DEPENDENCIES
|
39
|
+
bundler
|
40
40
|
byebug
|
41
41
|
listpack!
|
42
|
+
rake
|
43
|
+
rake-compiler
|
42
44
|
rspec
|
43
45
|
simplecov
|
44
46
|
|
data/Rakefile
CHANGED
@@ -7,9 +7,12 @@ RSpec::Core::RakeTask.new(:spec)
|
|
7
7
|
task :default => :spec
|
8
8
|
|
9
9
|
task :spec => :compile
|
10
|
+
task :build => :compile
|
10
11
|
|
11
12
|
gem_spec = Gem::Specification.load('listpack.gemspec')
|
12
13
|
Rake::ExtensionTask.new("listpack_c", gem_spec) do |ext|
|
13
14
|
ext.lib_dir = 'lib/listpack'
|
14
15
|
ext.ext_dir = 'ext/listpack'
|
15
16
|
end
|
17
|
+
|
18
|
+
task :default => [:clobber, :compile, :spec]
|
data/ext/listpack/extconf.rb
CHANGED
data/ext/listpack/listpack_rb.c
CHANGED
@@ -193,10 +193,51 @@ static VALUE allocate(VALUE klass)
|
|
193
193
|
return Data_Wrap_Struct(klass, NULL, deallocate, list);
|
194
194
|
}
|
195
195
|
|
196
|
+
VALUE rb_class_listpack_dump(VALUE self, VALUE rb_ary)
|
197
|
+
{
|
198
|
+
Check_Type(rb_ary, T_ARRAY);
|
199
|
+
unsigned long len = (unsigned int) RARRAY_LEN(rb_ary);
|
200
|
+
unsigned char *lp = lpNew();
|
201
|
+
unsigned int i = 0;
|
202
|
+
VALUE current;
|
203
|
+
|
204
|
+
for (i = 0; i < len; i++) {
|
205
|
+
current = rb_ary_entry(rb_ary, i);
|
206
|
+
// TODO: convert integer to string if necessary
|
207
|
+
Check_Type(current, T_STRING);
|
208
|
+
lp = lpAppend(lp, (unsigned char *) RSTRING_PTR(current), RSTRING_LENINT(current));
|
209
|
+
if (lp == NULL) {
|
210
|
+
rb_raise(rb_eNoMemError, "no memory for listpack");
|
211
|
+
}
|
212
|
+
}
|
213
|
+
|
214
|
+
return rb_str_new((char *) lp, lpBytes(lp));
|
215
|
+
}
|
216
|
+
|
217
|
+
VALUE rb_class_listpack_load(VALUE self, VALUE rb_str)
|
218
|
+
{
|
219
|
+
Check_Type(rb_str, T_STRING);
|
220
|
+
char *lp = RSTRING_PTR(rb_str);
|
221
|
+
unsigned char *p = lpFirst((unsigned char *) lp);
|
222
|
+
unsigned int len = lpLength((unsigned char *) lp);
|
223
|
+
unsigned int i = 0;
|
224
|
+
VALUE r_array = rb_ary_new2(len);
|
225
|
+
|
226
|
+
while(p) {
|
227
|
+
rb_ary_store(r_array, i++, _rb_listpack_getvalue(p));
|
228
|
+
p = lpNext((unsigned char *) lp, p);
|
229
|
+
}
|
230
|
+
|
231
|
+
return r_array;
|
232
|
+
}
|
233
|
+
|
196
234
|
void Init_listpack_c(void) {
|
197
235
|
Listpack = rb_define_class("Listpack", rb_cObject);
|
198
236
|
rb_define_alloc_func(Listpack, allocate);
|
199
237
|
|
238
|
+
rb_define_singleton_method(Listpack, "dump", rb_class_listpack_dump, 1);
|
239
|
+
rb_define_singleton_method(Listpack, "load", rb_class_listpack_load, 1);
|
240
|
+
|
200
241
|
rb_define_method(Listpack, "append", rb_listpack_append, 1);
|
201
242
|
rb_define_method(Listpack, "current", rb_listpack_current, 0);
|
202
243
|
rb_define_method(Listpack, "first", rb_listpack_first, 0);
|
data/lib/listpack/version.rb
CHANGED
data/listpack.gemspec
CHANGED
@@ -10,7 +10,6 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.version = Listpack::VERSION
|
11
11
|
spec.authors = ["Sebastian Wallin"]
|
12
12
|
spec.email = ["sebastian.wallin@gmail.com"]
|
13
|
-
spec.extensions = ["ext/listpack/extconf.rb"]
|
14
13
|
spec.platform = Gem::Platform::RUBY
|
15
14
|
|
16
15
|
spec.summary = %q{Ruby wrapper for Redis listpack data structure}
|
@@ -21,9 +20,13 @@ Gem::Specification.new do |spec|
|
|
21
20
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
22
21
|
f.match(%r{^(test|spec|features)/})
|
23
22
|
end
|
24
|
-
spec.bindir =
|
23
|
+
spec.bindir = 'exe'
|
25
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
|
-
spec.require_paths = [
|
25
|
+
spec.require_paths = ['lib']
|
26
|
+
spec.extensions = ['ext/listpack/extconf.rb']
|
27
27
|
|
28
|
-
spec.
|
28
|
+
spec.add_development_dependency 'bundler'
|
29
|
+
spec.add_development_dependency 'rake'
|
30
|
+
spec.add_development_dependency 'rake-compiler'
|
31
|
+
spec.add_development_dependency 'rspec'
|
29
32
|
end
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: listpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Wallin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: rake-compiler
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -17,7 +45,21 @@ dependencies:
|
|
17
45
|
- - ">="
|
18
46
|
- !ruby/object:Gem::Version
|
19
47
|
version: '0'
|
20
|
-
type: :
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
21
63
|
prerelease: false
|
22
64
|
version_requirements: !ruby/object:Gem::Requirement
|
23
65
|
requirements:
|