edlib 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.
- checksums.yaml +4 -4
- data/ext/edlib/edlibext.c +49 -11
- data/lib/edlib/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e6f83cf227f49681f1c3c1e50b0ca5a9816ff6b2ad42c8fc293963e4c82dd1a
|
4
|
+
data.tar.gz: d725b5937ea1c5c3c04cae03015682285d4481bde378f89bbc7336bc532c758e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a5aba207f2e51a0091b36dd1666a68daf68f93cba48ffa86f6daf0c18a28967f8b393f58ff3377191096bd0e8994e8d99afd64322cf5d53fa42a69499d1b4fe
|
7
|
+
data.tar.gz: ddd9bc252e46eb4bd53d3a435321242b42829f94aeaa6d115597ad9ec27d05424a53523cc0d5688af49368e59bb1023b5766adb45cba58e309823a3ce82c5317
|
data/ext/edlib/edlibext.c
CHANGED
@@ -3,13 +3,15 @@
|
|
3
3
|
|
4
4
|
VALUE mEdlib;
|
5
5
|
VALUE cAligner;
|
6
|
+
EdlibEqualityPair *eqpairs;
|
6
7
|
|
7
8
|
static size_t config_memsize(const void *ptr);
|
9
|
+
static void config_free(void *ptr);
|
8
10
|
|
9
11
|
static const rb_data_type_t config_type = {
|
10
12
|
.wrap_struct_name = "EdlibAlignConfig",
|
11
13
|
.function = {
|
12
|
-
.dfree =
|
14
|
+
.dfree = config_free,
|
13
15
|
.dsize = config_memsize,
|
14
16
|
},
|
15
17
|
.flags = RUBY_TYPED_FREE_IMMEDIATELY,
|
@@ -24,6 +26,17 @@ config_allocate(VALUE klass)
|
|
24
26
|
return obj;
|
25
27
|
}
|
26
28
|
|
29
|
+
static void
|
30
|
+
config_free(void *ptr)
|
31
|
+
{
|
32
|
+
if (eqpairs != NULL)
|
33
|
+
{
|
34
|
+
free(eqpairs);
|
35
|
+
eqpairs = NULL;
|
36
|
+
}
|
37
|
+
xfree(ptr);
|
38
|
+
}
|
39
|
+
|
27
40
|
static size_t
|
28
41
|
config_memsize(const void *ptr)
|
29
42
|
{
|
@@ -31,7 +44,8 @@ config_memsize(const void *ptr)
|
|
31
44
|
return sizeof(ptr) + 2 * sizeof(char) * (config->additionalEqualitiesLength);
|
32
45
|
}
|
33
46
|
|
34
|
-
static EdlibAlignConfig *
|
47
|
+
static EdlibAlignConfig *
|
48
|
+
get_config(VALUE self)
|
35
49
|
{
|
36
50
|
EdlibAlignConfig *ptr = NULL;
|
37
51
|
TypedData_Get_Struct(self, EdlibAlignConfig, &config_type, ptr);
|
@@ -94,7 +108,7 @@ set_mode(EdlibAlignConfig *config, VALUE mode)
|
|
94
108
|
{
|
95
109
|
if (TYPE(mode) == T_SYMBOL)
|
96
110
|
{
|
97
|
-
mode =
|
111
|
+
mode = rb_String(mode);
|
98
112
|
}
|
99
113
|
switch (TYPE(mode))
|
100
114
|
{
|
@@ -238,9 +252,20 @@ static VALUE
|
|
238
252
|
set_additional_equalities(EdlibAlignConfig *config, VALUE equalities)
|
239
253
|
{
|
240
254
|
Check_Type(equalities, T_ARRAY);
|
241
|
-
|
242
|
-
|
243
|
-
|
255
|
+
int len = RARRAY_LEN(equalities);
|
256
|
+
if (len == 0)
|
257
|
+
{
|
258
|
+
if(eqpairs != NULL) {
|
259
|
+
free(eqpairs);
|
260
|
+
eqpairs = NULL;
|
261
|
+
}
|
262
|
+
config->additionalEqualities = NULL;
|
263
|
+
config->additionalEqualitiesLength = 0;
|
264
|
+
return equalities;
|
265
|
+
}
|
266
|
+
char *first_arr = malloc(len * sizeof(char));
|
267
|
+
char *second_arr = malloc(len * sizeof(char));
|
268
|
+
for (int i = 0; i < len; i++)
|
244
269
|
{
|
245
270
|
VALUE pair = rb_ary_entry(equalities, i);
|
246
271
|
Check_Type(pair, T_ARRAY);
|
@@ -258,15 +283,28 @@ set_additional_equalities(EdlibAlignConfig *config, VALUE equalities)
|
|
258
283
|
}
|
259
284
|
char c1 = RSTRING_PTR(s1)[0];
|
260
285
|
char c2 = RSTRING_PTR(s2)[0];
|
286
|
+
first_arr[i] = c1;
|
287
|
+
second_arr[i] = c2;
|
288
|
+
}
|
289
|
+
|
290
|
+
if (eqpairs != NULL)
|
291
|
+
{
|
292
|
+
free(eqpairs);
|
293
|
+
}
|
261
294
|
|
262
|
-
|
263
|
-
|
295
|
+
eqpairs = (EdlibEqualityPair *)malloc(sizeof(EdlibEqualityPair) * len);
|
296
|
+
|
297
|
+
for (int i = 0; i < len; i++)
|
298
|
+
{
|
299
|
+
eqpairs[i].first = first_arr[i];
|
300
|
+
eqpairs[i].second = second_arr[i];
|
264
301
|
}
|
265
302
|
|
266
|
-
config->additionalEqualities =
|
267
|
-
|
303
|
+
config->additionalEqualities = eqpairs;
|
304
|
+
config->additionalEqualitiesLength = len;
|
268
305
|
|
269
|
-
|
306
|
+
free(first_arr);
|
307
|
+
free(second_arr);
|
270
308
|
|
271
309
|
return equalities;
|
272
310
|
}
|
data/lib/edlib/version.rb
CHANGED
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: edlib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kojix2
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2022-10-31 00:00:00.000000000 Z
|
@@ -29,7 +29,7 @@ homepage: https://github.com/kojix2/ruby-edlib
|
|
29
29
|
licenses:
|
30
30
|
- MIT
|
31
31
|
metadata: {}
|
32
|
-
post_install_message:
|
32
|
+
post_install_message:
|
33
33
|
rdoc_options: []
|
34
34
|
require_paths:
|
35
35
|
- lib
|
@@ -45,7 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
45
45
|
version: '0'
|
46
46
|
requirements: []
|
47
47
|
rubygems_version: 3.3.7
|
48
|
-
signing_key:
|
48
|
+
signing_key:
|
49
49
|
specification_version: 4
|
50
50
|
summary: ruby-edlib is a wrapper for edlib.
|
51
51
|
test_files: []
|