ninjudd-tuple 0.0.10 → 0.0.11
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.
- data/VERSION.yml +1 -1
- data/ext/tuple.c +19 -4
- data/test/test_helper.rb +12 -0
- metadata +2 -2
data/VERSION.yml
CHANGED
data/ext/tuple.c
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#include "ruby.h"
|
2
|
+
#include <netinet/in.h>
|
2
3
|
|
3
4
|
VALUE mTuple;
|
4
5
|
VALUE rb_cDate;
|
@@ -26,6 +27,19 @@ static void null_pad(VALUE data, int len) {
|
|
26
27
|
}
|
27
28
|
}
|
28
29
|
|
30
|
+
|
31
|
+
u_int32_t split64(int64_t num, int word) {
|
32
|
+
u_int32_t *split = (u_int32_t*)(void*)#
|
33
|
+
|
34
|
+
static int i = 1;
|
35
|
+
if (*(char *)&i == 1) word = word ? 1: 0;
|
36
|
+
else word = word ? 0: 1;
|
37
|
+
|
38
|
+
return split[word];
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
|
29
43
|
/*
|
30
44
|
* call-seq:
|
31
45
|
* Tuple.dump(tuple) -> string
|
@@ -42,6 +56,7 @@ static VALUE tuple_dump(VALUE self, VALUE tuple) {
|
|
42
56
|
int64_t fixnum;
|
43
57
|
BDIGIT *digits;
|
44
58
|
|
59
|
+
|
45
60
|
if (TYPE(tuple) != T_ARRAY) tuple = rb_ary_new4(1, &tuple);
|
46
61
|
|
47
62
|
for (i = 0; i < RARRAY(tuple)->len; i++) {
|
@@ -54,14 +69,14 @@ static VALUE tuple_dump(VALUE self, VALUE tuple) {
|
|
54
69
|
len = fixnum > UINT_MAX ? 2 : 1;
|
55
70
|
header[2] = sign ? INTP_SORT : INTN_SORT;
|
56
71
|
header[3] = sign ? len : UCHAR_MAX - len;
|
57
|
-
rb_str_cat(data, (char*)&header, sizeof(header));
|
72
|
+
rb_str_cat(data, (char*)&header, sizeof(header));
|
58
73
|
|
59
74
|
if (len == 2) {
|
60
|
-
digit = (
|
75
|
+
digit = split64(fixnum, 1);
|
61
76
|
digit = htonl(sign ? digit : UINT_MAX - digit);
|
62
77
|
rb_str_cat(data, (char*)&digit, sizeof(digit));
|
63
78
|
}
|
64
|
-
digit = (
|
79
|
+
digit = split64(fixnum, 0);
|
65
80
|
digit = htonl(sign ? digit : UINT_MAX - digit);
|
66
81
|
rb_str_cat(data, (char*)&digit, sizeof(digit));
|
67
82
|
} else if (TYPE(item) == T_BIGNUM) {
|
@@ -209,7 +224,7 @@ static VALUE tuple_load(VALUE self, VALUE data) {
|
|
209
224
|
}
|
210
225
|
|
211
226
|
static VALUE array_compare(VALUE self, VALUE other) {
|
212
|
-
rb_funcall(tuple_dump(mTuple, self), rb_intern("<=>"), 1, tuple_dump(mTuple, other));
|
227
|
+
return rb_funcall(tuple_dump(mTuple, self), rb_intern("<=>"), 1, tuple_dump(mTuple, other));
|
213
228
|
}
|
214
229
|
|
215
230
|
VALUE mTuple;
|
data/test/test_helper.rb
CHANGED
@@ -6,5 +6,17 @@ require 'mocha'
|
|
6
6
|
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../ext')
|
7
7
|
require 'tuple'
|
8
8
|
|
9
|
+
if not [].respond_to?(:shuffle)
|
10
|
+
class Array
|
11
|
+
def shuffle
|
12
|
+
t_self = self.dup
|
13
|
+
t_size = self.size
|
14
|
+
result=[]
|
15
|
+
t_size.times { result << t_self.slice!(rand(t_self.size)) }
|
16
|
+
result
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
9
21
|
class Test::Unit::TestCase
|
10
22
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ninjudd-tuple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Balthrop
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-22 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|