v2d 0.0.2 → 0.1.0
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.tar.gz.sig +0 -0
- data/Manifest +4 -2
- data/{README → README.rdoc} +8 -8
- data/Rakefile +1 -1
- data/ext/init.c +163 -0
- data/ext/v2d.c +46 -126
- data/ext/v2d.h +48 -0
- data/v2d.gemspec +6 -6
- metadata +12 -7
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/Manifest
CHANGED
data/{README → README.rdoc}
RENAMED
@@ -1,11 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
make install
|
5
|
-
|
6
|
-
Usage:
|
1
|
+
=== Usage
|
2
|
+
Simply require
|
3
|
+
require 'rubygems'
|
7
4
|
require 'v2d'
|
8
|
-
|
5
|
+
And use
|
9
6
|
v1 = V2D[1.0, 2.0] # or v1 = V2D.new(1.0, 2.0)
|
10
7
|
v2 = V2D[0, 0]
|
11
8
|
|
@@ -17,5 +14,8 @@ Usage:
|
|
17
14
|
(v2 / 4) == V2D[2.75, 3]
|
18
15
|
V2D[3, 4].abs == 5
|
19
16
|
|
20
|
-
Tests
|
17
|
+
=== Tests
|
21
18
|
spec v2d_spec.rb
|
19
|
+
|
20
|
+
=== Author
|
21
|
+
Vladimir Parfinenko, write at vladimir[dot]parfinenko[at]gmail[dot]com
|
data/Rakefile
CHANGED
data/ext/init.c
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
#include "v2d.h"
|
3
|
+
|
4
|
+
VALUE cV2D;
|
5
|
+
|
6
|
+
ID ix, iy;
|
7
|
+
|
8
|
+
// DEFINITIONS
|
9
|
+
|
10
|
+
/* Allocate memory */
|
11
|
+
VALUE rb_alloc(VALUE klass);
|
12
|
+
|
13
|
+
/* Return new with initialized x and y */
|
14
|
+
VALUE rb_initialize_with_x_and_y(VALUE self, VALUE x, VALUE y);
|
15
|
+
|
16
|
+
/* Return <tt>V2D.new(x, y)</tt> */
|
17
|
+
VALUE rb_square_brackets(VALUE klass, VALUE x, VALUE y);
|
18
|
+
|
19
|
+
/* Return x */
|
20
|
+
VALUE rb_get_x(VALUE self);
|
21
|
+
|
22
|
+
/* Return y */
|
23
|
+
VALUE rb_get_y(VALUE self);
|
24
|
+
|
25
|
+
/* Set x */
|
26
|
+
VALUE rb_set_x(VALUE self, VALUE x);
|
27
|
+
|
28
|
+
/* Set y */
|
29
|
+
VALUE rb_set_y(VALUE self, VALUE y);
|
30
|
+
|
31
|
+
/* Return sum with +other+ */
|
32
|
+
VALUE rb_add(VALUE self, VALUE other);
|
33
|
+
|
34
|
+
/* Return diff with +other+ */
|
35
|
+
VALUE rb_sub(VALUE self, VALUE other);
|
36
|
+
|
37
|
+
/* Return product with +multiplier+ */
|
38
|
+
VALUE rb_mul(VALUE self, VALUE multiplier);
|
39
|
+
|
40
|
+
/* Return quotient with +divisor+ */
|
41
|
+
VALUE rb_div(VALUE self, VALUE divisor);
|
42
|
+
|
43
|
+
/* Return absolute value */
|
44
|
+
VALUE rb_abs(VALUE self);
|
45
|
+
|
46
|
+
/* Return whether equals to +other+ */
|
47
|
+
VALUE rb_equals(VALUE self, VALUE other);
|
48
|
+
|
49
|
+
|
50
|
+
void Init_v2d() {
|
51
|
+
/* 2D vector */
|
52
|
+
cV2D = rb_define_class("V2D", rb_cObject);
|
53
|
+
|
54
|
+
rb_define_alloc_func(cV2D, rb_alloc);
|
55
|
+
rb_define_method(cV2D, "initialize", rb_initialize_with_x_and_y, 2);
|
56
|
+
rb_define_singleton_method(cV2D, "[]", rb_square_brackets, 2);
|
57
|
+
rb_define_method(cV2D, "x", rb_get_x, 0);
|
58
|
+
rb_define_method(cV2D, "y", rb_get_y, 0);
|
59
|
+
rb_define_method(cV2D, "x=", rb_set_x, 1);
|
60
|
+
rb_define_method(cV2D, "y=", rb_set_y, 1);
|
61
|
+
rb_define_method(cV2D, "+", rb_add, 1);
|
62
|
+
rb_define_method(cV2D, "-", rb_sub, 1);
|
63
|
+
rb_define_method(cV2D, "*", rb_mul, 1);
|
64
|
+
rb_define_method(cV2D, "/", rb_div, 1);
|
65
|
+
rb_define_method(cV2D, "abs", rb_abs, 0);
|
66
|
+
rb_define_method(cV2D, "==", rb_equals, 1);
|
67
|
+
|
68
|
+
ix = rb_intern("@x");
|
69
|
+
iy = rb_intern("@y");
|
70
|
+
}
|
71
|
+
|
72
|
+
// IMPLEMENTATIONS
|
73
|
+
|
74
|
+
VALUE rb_alloc(VALUE klass) {
|
75
|
+
V2D *v = v2d_new();
|
76
|
+
return Data_Wrap_Struct(klass, NULL, v2d_delete, v);
|
77
|
+
}
|
78
|
+
|
79
|
+
VALUE rb_initialize_with_x_and_y(VALUE self, VALUE x, VALUE y) {
|
80
|
+
V2D *v;
|
81
|
+
Data_Get_Struct(self, V2D, v);
|
82
|
+
v->x = NUM2DBL(x);
|
83
|
+
v->y = NUM2DBL(y);
|
84
|
+
return self;
|
85
|
+
}
|
86
|
+
|
87
|
+
VALUE rb_square_brackets(VALUE klass, VALUE x, VALUE y) {
|
88
|
+
VALUE args[] = {x, y};
|
89
|
+
return rb_class_new_instance(2, args, cV2D);
|
90
|
+
}
|
91
|
+
|
92
|
+
VALUE rb_get_x(VALUE self) {
|
93
|
+
V2D *v;
|
94
|
+
Data_Get_Struct(self, V2D, v);
|
95
|
+
return rb_float_new(v->x);
|
96
|
+
}
|
97
|
+
|
98
|
+
VALUE rb_get_y(VALUE self) {
|
99
|
+
V2D *v;
|
100
|
+
Data_Get_Struct(self, V2D, v);
|
101
|
+
return rb_float_new(v->y);
|
102
|
+
}
|
103
|
+
|
104
|
+
VALUE rb_set_x(VALUE self, VALUE x) {
|
105
|
+
V2D *v;
|
106
|
+
Data_Get_Struct(self, V2D, v);
|
107
|
+
v->x = NUM2DBL(x);
|
108
|
+
return x;
|
109
|
+
}
|
110
|
+
|
111
|
+
VALUE rb_set_y(VALUE self, VALUE y) {
|
112
|
+
V2D *v;
|
113
|
+
Data_Get_Struct(self, V2D, v);
|
114
|
+
v->y = NUM2DBL(y);
|
115
|
+
return y;
|
116
|
+
}
|
117
|
+
|
118
|
+
VALUE rb_add(VALUE self, VALUE other) {
|
119
|
+
V2D *v1, *v2;
|
120
|
+
Data_Get_Struct(self, V2D, v1);
|
121
|
+
Data_Get_Struct(other, V2D, v2);
|
122
|
+
V2D *res = v2d_add(v1, v2);
|
123
|
+
return Data_Wrap_Struct(cV2D, NULL, xfree, res);
|
124
|
+
}
|
125
|
+
|
126
|
+
VALUE rb_sub(VALUE self, VALUE other) {
|
127
|
+
V2D *v1, *v2;
|
128
|
+
Data_Get_Struct(self, V2D, v1);
|
129
|
+
Data_Get_Struct(other, V2D, v2);
|
130
|
+
V2D *res = v2d_sub(v1, v2);
|
131
|
+
return Data_Wrap_Struct(cV2D, NULL, xfree, res);
|
132
|
+
}
|
133
|
+
|
134
|
+
VALUE rb_mul(VALUE self, VALUE multiplier) {
|
135
|
+
V2D *v;
|
136
|
+
Data_Get_Struct(self, V2D, v);
|
137
|
+
double m = NUM2DBL(multiplier);
|
138
|
+
V2D *res = v2d_mul(v, m);
|
139
|
+
return Data_Wrap_Struct(cV2D, NULL, xfree, res);
|
140
|
+
}
|
141
|
+
|
142
|
+
VALUE rb_div(VALUE self, VALUE divisor) {
|
143
|
+
V2D *v;
|
144
|
+
Data_Get_Struct(self, V2D, v);
|
145
|
+
double d = NUM2DBL(divisor);
|
146
|
+
V2D *res = v2d_div(v, d);
|
147
|
+
return Data_Wrap_Struct(cV2D, NULL, xfree, res);
|
148
|
+
}
|
149
|
+
|
150
|
+
VALUE rb_abs(VALUE self) {
|
151
|
+
V2D *v;
|
152
|
+
Data_Get_Struct(self, V2D, v);
|
153
|
+
double res = v2d_abs(v);
|
154
|
+
return rb_float_new(res);
|
155
|
+
}
|
156
|
+
|
157
|
+
VALUE rb_equals(VALUE self, VALUE other) {
|
158
|
+
V2D *v1, *v2;
|
159
|
+
Data_Get_Struct(self, V2D, v1);
|
160
|
+
Data_Get_Struct(other, V2D, v2);
|
161
|
+
return v2d_equals(v1, v2) ? Qtrue : Qfalse;
|
162
|
+
}
|
163
|
+
|
data/ext/v2d.c
CHANGED
@@ -1,156 +1,76 @@
|
|
1
|
+
#include "v2d.h"
|
1
2
|
#include <ruby.h>
|
2
3
|
#include <math.h>
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
ID ix, iy;
|
7
|
-
|
8
|
-
/* DEFINITION */
|
9
|
-
|
10
|
-
typedef struct _V2D {
|
11
|
-
double x, y;
|
12
|
-
} V2D;
|
13
|
-
|
14
|
-
VALUE v2d_alloc(VALUE klass);
|
15
|
-
/*VALUE v2d_initialize(VALUE self);*/
|
16
|
-
VALUE v2d_initialize_with_x_and_y(VALUE self, VALUE x, VALUE y);
|
17
|
-
VALUE v2d_square_brackets(VALUE klass, VALUE x, VALUE y);
|
18
|
-
VALUE v2d_get_x(VALUE self);
|
19
|
-
VALUE v2d_get_y(VALUE self);
|
20
|
-
VALUE v2d_set_x(VALUE self, VALUE x);
|
21
|
-
VALUE v2d_set_y(VALUE self, VALUE y);
|
22
|
-
VALUE v2d_add(VALUE self, VALUE other);
|
23
|
-
VALUE v2d_sub(VALUE self, VALUE other);
|
24
|
-
VALUE v2d_mul(VALUE self, VALUE multiplier);
|
25
|
-
VALUE v2d_div(VALUE self, VALUE divisor);
|
26
|
-
VALUE v2d_abs(VALUE self);
|
27
|
-
VALUE v2d_equals(VALUE self, VALUE other);
|
28
|
-
|
29
|
-
void Init_v2d() {
|
30
|
-
cV2D = rb_define_class("V2D", rb_cObject);
|
31
|
-
|
32
|
-
rb_define_alloc_func(cV2D, v2d_alloc);
|
33
|
-
/*rb_define_method(cV2D, "initialize", v2d_initialize, 0);*/
|
34
|
-
rb_define_method(cV2D, "initialize", v2d_initialize_with_x_and_y, 2);
|
35
|
-
rb_define_singleton_method(cV2D, "[]", v2d_square_brackets, 2);
|
36
|
-
rb_define_method(cV2D, "x", v2d_get_x, 0);
|
37
|
-
rb_define_method(cV2D, "y", v2d_get_y, 0);
|
38
|
-
rb_define_method(cV2D, "x=", v2d_set_x, 1);
|
39
|
-
rb_define_method(cV2D, "y=", v2d_set_y, 1);
|
40
|
-
rb_define_method(cV2D, "+", v2d_add, 1);
|
41
|
-
rb_define_method(cV2D, "-", v2d_sub, 1);
|
42
|
-
rb_define_method(cV2D, "*", v2d_mul, 1);
|
43
|
-
rb_define_method(cV2D, "/", v2d_div, 1);
|
44
|
-
rb_define_method(cV2D, "abs", v2d_abs, 0);
|
45
|
-
rb_define_method(cV2D, "==", v2d_equals, 1);
|
46
|
-
|
47
|
-
ix = rb_intern("@x");
|
48
|
-
iy = rb_intern("@y");
|
49
|
-
}
|
50
|
-
|
51
|
-
/* IMPLEMENTATION */
|
5
|
+
#define DBL_EPSILON (1e-9)
|
52
6
|
|
53
|
-
|
54
|
-
V2D *
|
55
|
-
|
7
|
+
V2D * v2d_new() {
|
8
|
+
V2D *res = (V2D*)xmalloc(sizeof(V2D));
|
9
|
+
res->x = 0;
|
10
|
+
res->y = 0;
|
11
|
+
return res;
|
56
12
|
}
|
57
13
|
|
58
|
-
|
59
|
-
|
60
|
-
/*}*/
|
61
|
-
|
62
|
-
VALUE v2d_initialize_with_x_and_y(VALUE self, VALUE x, VALUE y) {
|
63
|
-
V2D *v;
|
64
|
-
Data_Get_Struct(self, V2D, v);
|
65
|
-
v->x = NUM2DBL(x);
|
66
|
-
v->y = NUM2DBL(y);
|
67
|
-
return self;
|
14
|
+
void v2d_delete(V2D * v) {
|
15
|
+
xfree(v);
|
68
16
|
}
|
69
17
|
|
70
|
-
|
71
|
-
|
72
|
-
return rb_class_new_instance(2, args, cV2D);
|
18
|
+
V2D * v2d_clone(V2D * v) {
|
19
|
+
return v2d_assign(v2d_new(), v);
|
73
20
|
}
|
74
21
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
return
|
22
|
+
V2D * v2d_assign(V2D * dest, V2D * src) {
|
23
|
+
dest->x = src->x;
|
24
|
+
dest->y = src->y;
|
25
|
+
return dest;
|
79
26
|
}
|
80
27
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
return
|
28
|
+
V2D * v2d_add_to(V2D * v1, V2D * v2) {
|
29
|
+
v1->x += v2->x;
|
30
|
+
v1->y += v2->y;
|
31
|
+
return v1;
|
85
32
|
}
|
86
33
|
|
87
|
-
|
88
|
-
|
89
|
-
Data_Get_Struct(self, V2D, v);
|
90
|
-
v->x = NUM2DBL(x);
|
91
|
-
return x;
|
34
|
+
V2D * v2d_add(V2D * v1, V2D * v2) {
|
35
|
+
return v2d_add_to(v2d_clone(v1), v2);
|
92
36
|
}
|
93
37
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
return y;
|
38
|
+
V2D * v2d_sub_from(V2D * v1, V2D * v2) {
|
39
|
+
v1->x -= v2->x;
|
40
|
+
v1->y -= v2->y;
|
41
|
+
return v1;
|
99
42
|
}
|
100
43
|
|
101
|
-
|
102
|
-
|
103
|
-
Data_Get_Struct(self, V2D, v1);
|
104
|
-
Data_Get_Struct(other, V2D, v2);
|
105
|
-
|
106
|
-
V2D *res = (V2D*)xmalloc(sizeof(V2D));
|
107
|
-
res->x = v1->x + v2->x;
|
108
|
-
res->y = v1->y + v2->y;
|
109
|
-
return Data_Wrap_Struct(cV2D, NULL, xfree, res);
|
44
|
+
V2D * v2d_sub(V2D * v1, V2D * v2) {
|
45
|
+
return v2d_sub_from(v2d_clone(v1), v2);
|
110
46
|
}
|
111
47
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
V2D *res = (V2D*)xmalloc(sizeof(V2D));
|
118
|
-
res->x = v1->x - v2->x;
|
119
|
-
res->y = v1->y - v2->y;
|
120
|
-
return Data_Wrap_Struct(cV2D, NULL, xfree, res);
|
48
|
+
V2D * v2d_mul_by(V2D * v, double multiplier) {
|
49
|
+
v->x *= multiplier;
|
50
|
+
v->y *= multiplier;
|
51
|
+
return v;
|
121
52
|
}
|
122
53
|
|
123
|
-
|
124
|
-
|
125
|
-
Data_Get_Struct(self, V2D, v);
|
126
|
-
double m = NUM2DBL(multiplier);
|
127
|
-
|
128
|
-
V2D *res = (V2D*)xmalloc(sizeof(V2D));
|
129
|
-
res->x = v->x * m;
|
130
|
-
res->y = v->y * m;
|
131
|
-
return Data_Wrap_Struct(cV2D, NULL, xfree, res);
|
54
|
+
V2D * v2d_mul(V2D * v, double multiplier) {
|
55
|
+
return v2d_mul_by(v2d_clone(v), multiplier);
|
132
56
|
}
|
133
57
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
58
|
+
V2D * v2d_div_by(V2D * v, double divisor) {
|
59
|
+
v->x /= divisor;
|
60
|
+
v->y /= divisor;
|
61
|
+
return v;
|
62
|
+
}
|
138
63
|
|
139
|
-
|
140
|
-
|
141
|
-
res->y = v->y / d;
|
142
|
-
return Data_Wrap_Struct(cV2D, NULL, xfree, res);
|
64
|
+
V2D * v2d_div(V2D * v, double divisor) {
|
65
|
+
return v2d_div_by(v2d_clone(v), divisor);
|
143
66
|
}
|
144
67
|
|
145
|
-
|
146
|
-
|
147
|
-
Data_Get_Struct(self, V2D, v);
|
148
|
-
return rb_float_new(sqrt(v->x*v->x + v->y*v->y));
|
68
|
+
double v2d_abs(V2D * v) {
|
69
|
+
return sqrt(v->x*v->x + v->y*v->y);
|
149
70
|
}
|
150
71
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
Data_Get_Struct(other, V2D, v2);
|
155
|
-
return (v1->x == v2->x && v1->y == v2->y) ? Qtrue : Qfalse;
|
72
|
+
int v2d_equals(V2D * v1, V2D * v2) {
|
73
|
+
return fabs(v1->x - v2->x) < DBL_EPSILON &&
|
74
|
+
fabs(v1->y - v2->y) < DBL_EPSILON;
|
156
75
|
}
|
76
|
+
|
data/ext/v2d.h
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
typedef struct _V2D {
|
4
|
+
double x, y;
|
5
|
+
} V2D;
|
6
|
+
|
7
|
+
/* Allocates new zero-vector */
|
8
|
+
V2D * v2d_new();
|
9
|
+
|
10
|
+
/* Delete vector */
|
11
|
+
void v2d_delete(V2D * v);
|
12
|
+
|
13
|
+
/* Allocates new vector equals to +v+ */
|
14
|
+
V2D * v2d_clone(V2D * v);
|
15
|
+
|
16
|
+
/* Assigns +src+ to +dest+ */
|
17
|
+
V2D * v2d_assign(V2D * dest, V2D * src);
|
18
|
+
|
19
|
+
/* Add +v2+ to +v1+ and return +v1+ */
|
20
|
+
V2D * v2d_add_to(V2D * v1, V2D * v2);
|
21
|
+
|
22
|
+
/* Return sum of +v1+ and +v2+ */
|
23
|
+
V2D * v2d_add(V2D * v1, V2D * v2);
|
24
|
+
|
25
|
+
/* Sub +v2+ from +v1+ and return +v1+ */
|
26
|
+
V2D * v2d_sub_from(V2D * v1, V2D * v2);
|
27
|
+
|
28
|
+
/* Return diff of +v1+ and +v2+ */
|
29
|
+
V2D * v2d_sub(V2D * v1, V2D * v2);
|
30
|
+
|
31
|
+
/* Mul +v+ by +multiplier+ and return +v+ */
|
32
|
+
V2D * v2d_mul_by(V2D * v, double multiplier);
|
33
|
+
|
34
|
+
/* Return product of +v1+ and +multiplier+ */
|
35
|
+
V2D * v2d_mul(V2D * v, double multiplier);
|
36
|
+
|
37
|
+
/* Div +v+ by +multiplier+ and return +v+ */
|
38
|
+
V2D * v2d_div_by(V2D * v, double divisor);
|
39
|
+
|
40
|
+
/* Return quotient of +v1+ and +divisor+ */
|
41
|
+
V2D * v2d_div(V2D * v, double divisor);
|
42
|
+
|
43
|
+
/* Return absolute value of +v+ */
|
44
|
+
double v2d_abs(V2D * v);
|
45
|
+
|
46
|
+
/* Return whether +v1+ equals to +v2+ */
|
47
|
+
int v2d_equals(V2D * v1, V2D * v2);
|
48
|
+
|
data/v2d.gemspec
CHANGED
@@ -2,20 +2,20 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{v2d}
|
5
|
-
s.version = "0.0
|
5
|
+
s.version = "0.1.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Vladimir Parfinenko"]
|
9
9
|
s.cert_chain = ["/Users/cypok/gem-public_cert.pem"]
|
10
|
-
s.date = %q{2010-09-
|
10
|
+
s.date = %q{2010-09-17}
|
11
11
|
s.description = %q{2D Vector implemented as Ruby extension}
|
12
12
|
s.email = %q{vladimir.parfinenko@gmail.com}
|
13
13
|
s.extensions = ["ext/extconf.rb"]
|
14
|
-
s.extra_rdoc_files = ["README", "ext/extconf.rb", "ext/v2d.c"]
|
15
|
-
s.files = ["README", "Rakefile", "ext/extconf.rb", "ext/v2d.c", "
|
14
|
+
s.extra_rdoc_files = ["README.rdoc", "ext/extconf.rb", "ext/init.c", "ext/v2d.c", "ext/v2d.h"]
|
15
|
+
s.files = ["Manifest", "README.rdoc", "Rakefile", "ext/extconf.rb", "ext/init.c", "ext/v2d.c", "ext/v2d.h", "spec/v2d_spec.rb", "v2d.gemspec"]
|
16
16
|
s.homepage = %q{http://github.com/cypok/v2d}
|
17
|
-
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "V2d", "--main", "README"]
|
18
|
-
s.require_paths = ["ext"]
|
17
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "V2d", "--main", "README.rdoc"]
|
18
|
+
s.require_paths = ["lib", "ext"]
|
19
19
|
s.rubyforge_project = %q{v2d}
|
20
20
|
s.rubygems_version = %q{1.3.7}
|
21
21
|
s.signing_key = %q{/Users/cypok/gem-private_key.pem}
|
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.2
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Vladimir Parfinenko
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
78F0qvtLjR0DAnN6uYs98PR+jHE+0ckLX3D9sw==
|
37
37
|
-----END CERTIFICATE-----
|
38
38
|
|
39
|
-
date: 2010-09-
|
39
|
+
date: 2010-09-17 00:00:00 +07:00
|
40
40
|
default_executable:
|
41
41
|
dependencies: []
|
42
42
|
|
@@ -47,16 +47,20 @@ executables: []
|
|
47
47
|
extensions:
|
48
48
|
- ext/extconf.rb
|
49
49
|
extra_rdoc_files:
|
50
|
-
- README
|
50
|
+
- README.rdoc
|
51
51
|
- ext/extconf.rb
|
52
|
+
- ext/init.c
|
52
53
|
- ext/v2d.c
|
54
|
+
- ext/v2d.h
|
53
55
|
files:
|
54
|
-
-
|
56
|
+
- Manifest
|
57
|
+
- README.rdoc
|
55
58
|
- Rakefile
|
56
59
|
- ext/extconf.rb
|
60
|
+
- ext/init.c
|
57
61
|
- ext/v2d.c
|
62
|
+
- ext/v2d.h
|
58
63
|
- spec/v2d_spec.rb
|
59
|
-
- Manifest
|
60
64
|
- v2d.gemspec
|
61
65
|
has_rdoc: true
|
62
66
|
homepage: http://github.com/cypok/v2d
|
@@ -69,8 +73,9 @@ rdoc_options:
|
|
69
73
|
- --title
|
70
74
|
- V2d
|
71
75
|
- --main
|
72
|
-
- README
|
76
|
+
- README.rdoc
|
73
77
|
require_paths:
|
78
|
+
- lib
|
74
79
|
- ext
|
75
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
76
81
|
none: false
|
metadata.gz.sig
CHANGED
Binary file
|