dartsclone 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/ext/dartsclone/dartscloneext.hpp +27 -11
- data/lib/dartsclone/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dce86b5df78cc6b62be497a33f5203a352def9f83767191840e2cd5f2bcae460
|
4
|
+
data.tar.gz: da2b74859ccc9834583b33ac4c9628b976a6e329b9a8d77348b4947767503794
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 074b992e52c7604970772c30976cbbe4cf8efd7f7cb6d26dcf62e8f3eb2998b4cb08dd615ab224809786cd1f65fc4759f80fe3d8ba53e4674a17afe25188b43d
|
7
|
+
data.tar.gz: 0d136b219466c196dbb9616b02f01ab98b3225fef93831e6e80aefa049561aab621073fa6ac6589e3132b71e803eb65c0f0f1474a9047be62093e58ce426594a
|
data/CHANGELOG.md
CHANGED
@@ -30,6 +30,8 @@ class RbDoubleArray
|
|
30
30
|
rb_define_method(rb_cDoubleArray, "build", RUBY_METHOD_FUNC(_double_array_build), -1);
|
31
31
|
rb_define_method(rb_cDoubleArray, "open", RUBY_METHOD_FUNC(_double_array_open), -1);
|
32
32
|
rb_define_method(rb_cDoubleArray, "save", RUBY_METHOD_FUNC(_double_array_save), -1);
|
33
|
+
rb_define_method(rb_cDoubleArray, "get_array", RUBY_METHOD_FUNC(_double_array_get_array), 0);
|
34
|
+
rb_define_method(rb_cDoubleArray, "set_array", RUBY_METHOD_FUNC(_double_array_set_array), 1);
|
33
35
|
rb_define_method(rb_cDoubleArray, "exact_match_search", RUBY_METHOD_FUNC(_double_array_exact_match_search), -1);
|
34
36
|
rb_define_method(rb_cDoubleArray, "common_prefix_search", RUBY_METHOD_FUNC(_double_array_common_prefix_search), -1);
|
35
37
|
rb_define_method(rb_cDoubleArray, "traverse", RUBY_METHOD_FUNC(_double_array_traverse), -1);
|
@@ -90,8 +92,8 @@ class RbDoubleArray
|
|
90
92
|
|
91
93
|
const char* filename = StringValueCStr(_filename);
|
92
94
|
const char* mode = kwvalues[0] == Qundef ? "rb" : StringValueCStr(kwvalues[0]);
|
93
|
-
const size_t offset = kwvalues[1] == Qundef ? 0 : (
|
94
|
-
const size_t size = kwvalues[2] == Qundef ? 0 : (
|
95
|
+
const size_t offset = kwvalues[1] == Qundef ? 0 : NUM2SIZET(kwvalues[1]);
|
96
|
+
const size_t size = kwvalues[2] == Qundef ? 0 : NUM2SIZET(kwvalues[2]);
|
95
97
|
|
96
98
|
if (get_double_array(self)->open(filename, mode, offset, size) != 0) {
|
97
99
|
return Qfalse;
|
@@ -110,7 +112,7 @@ class RbDoubleArray
|
|
110
112
|
|
111
113
|
const char* filename = StringValueCStr(_filename);
|
112
114
|
const char* mode = kwvalues[0] == Qundef ? "wb" : StringValueCStr(kwvalues[0]);
|
113
|
-
const size_t offset = kwvalues[1] == Qundef ? 0 : (
|
115
|
+
const size_t offset = kwvalues[1] == Qundef ? 0 : NUM2SIZET(kwvalues[1]);
|
114
116
|
|
115
117
|
if (get_double_array(self)->save(filename, mode, offset) != 0) {
|
116
118
|
return Qfalse;
|
@@ -118,6 +120,20 @@ class RbDoubleArray
|
|
118
120
|
return Qtrue;
|
119
121
|
};
|
120
122
|
|
123
|
+
static VALUE _double_array_get_array(VALUE self) {
|
124
|
+
const char* arr = (char*)get_double_array(self)->array();
|
125
|
+
const size_t sz = get_double_array(self)->total_size();
|
126
|
+
return rb_str_new(arr, sz);
|
127
|
+
};
|
128
|
+
|
129
|
+
static VALUE _double_array_set_array(VALUE self, VALUE bytes) {
|
130
|
+
const size_t sz = NUM2SIZET(rb_funcall(bytes, rb_intern("size"), 0));
|
131
|
+
const size_t total_sz = sz / get_double_array(self)->unit_size();
|
132
|
+
char* arr = StringValuePtr(bytes);
|
133
|
+
get_double_array(self)->set_array(arr, total_sz);
|
134
|
+
return Qnil;
|
135
|
+
};
|
136
|
+
|
121
137
|
static VALUE _double_array_exact_match_search(int argc, VALUE* argv, VALUE self) {
|
122
138
|
VALUE _key = Qnil;
|
123
139
|
VALUE kwargs = Qnil;
|
@@ -133,8 +149,8 @@ class RbDoubleArray
|
|
133
149
|
}
|
134
150
|
|
135
151
|
const char* key = StringValueCStr(_key);
|
136
|
-
const size_t length = kwvalues[0] == Qundef ? 0 : (
|
137
|
-
const size_t node_pos = kwvalues[1] == Qundef ? 0 : (
|
152
|
+
const size_t length = kwvalues[0] == Qundef ? 0 : NUM2SIZET(kwvalues[0]);
|
153
|
+
const size_t node_pos = kwvalues[1] == Qundef ? 0 : NUM2SIZET(kwvalues[1]);
|
138
154
|
|
139
155
|
Darts::DoubleArray::value_type value;
|
140
156
|
get_double_array(self)->exactMatchSearch(key, value, length, node_pos);
|
@@ -156,9 +172,9 @@ class RbDoubleArray
|
|
156
172
|
}
|
157
173
|
|
158
174
|
const char* key = StringValueCStr(_key);
|
159
|
-
const size_t max_num_results = kwvalues[0] == Qundef ? (
|
160
|
-
const size_t length = kwvalues[1] == Qundef ? 0 : (
|
161
|
-
const size_t node_pos = kwvalues[2] == Qundef ? 0 : (
|
175
|
+
const size_t max_num_results = kwvalues[0] == Qundef ? NUM2SIZET(rb_funcall(_key, rb_intern("size"), 0)) : NUM2SIZET(kwvalues[0]);
|
176
|
+
const size_t length = kwvalues[1] == Qundef ? 0 : NUM2SIZET(kwvalues[1]);
|
177
|
+
const size_t node_pos = kwvalues[2] == Qundef ? 0 : NUM2SIZET(kwvalues[2]);
|
162
178
|
|
163
179
|
Darts::DoubleArray::result_pair_type* results =
|
164
180
|
(Darts::DoubleArray::result_pair_type*)ruby_xmalloc(max_num_results * sizeof(Darts::DoubleArray::result_pair_type));
|
@@ -191,9 +207,9 @@ class RbDoubleArray
|
|
191
207
|
rb_get_kwargs(kwargs, kwtable, 2, 1, kwvalues);
|
192
208
|
|
193
209
|
const char* key = StringValueCStr(_key);
|
194
|
-
size_t node_pos = (
|
195
|
-
size_t key_pos = (
|
196
|
-
const size_t length = kwvalues[2] == Qundef ? 0 : (
|
210
|
+
size_t node_pos = NUM2SIZET(kwvalues[0]);
|
211
|
+
size_t key_pos = NUM2SIZET(kwvalues[1]);
|
212
|
+
const size_t length = kwvalues[2] == Qundef ? 0 : NUM2SIZET(kwvalues[2]);
|
197
213
|
|
198
214
|
Darts::DoubleArray::value_type value = get_double_array(self)->traverse(key, node_pos, key_pos, length);
|
199
215
|
|
data/lib/dartsclone/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dartsclone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yoshoku
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-10-
|
11
|
+
date: 2020-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Darts-clone.rb is a Ruby binding for the Darts-clone.
|
14
14
|
email:
|