ruby-dcl 1.6.3.1 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/ChangeLog +57 -1
- data/Gemfile +4 -0
- data/GenWrapper/Makefile +1 -0
- data/GenWrapper/dcl_rb_heading +2 -8
- data/GenWrapper/elim_ary_size.rb +1 -1
- data/GenWrapper/proto/Makefile +17 -16
- data/GenWrapper/proto/grph1_sgpack.fp +367 -1
- data/GenWrapper/proto/grph1_stpack.fp +45 -1
- data/GenWrapper/proto/grph1_swpack.fp +70 -1
- data/GenWrapper/proto/grph2_uipack.fp +508 -0
- data/GenWrapper/proto/math1_clsplib.fp +74 -0
- data/GenWrapper/proto/misc1_randlib.fp +15 -1
- data/README.md +29 -0
- data/Rakefile +18 -38
- data/dcl_narrayed_funcs.c +23 -22
- data/dcl_rubydcloriginal.c +21 -21
- data/demo/grph2/uipack/uipk01.rb +38 -0
- data/demo/grph2/uipack/uipk02.rb +48 -0
- data/demo/grph2/umpack/test09_2.rb +89 -0
- data/demo/math1/clsplib/cslb01.rb +55 -0
- data/extconf.rb +16 -48
- data/grph1_sgpack.c +1166 -0
- data/grph1_stpack.c +141 -0
- data/grph1_swpack.c +182 -0
- data/grph2_uipack.c +1456 -0
- data/init.c.default +8 -0
- data/lib/.keepme +0 -0
- data/lib/dcl/dcl.rb +5578 -0
- data/lib/dcl/version.rb +3 -0
- data/lib/dcl.rb +2 -5084
- data/math1_clsplib.c +329 -0
- data/misc1_randlib.c +37 -0
- data/ruby-dcl.gemspec +30 -0
- metadata +343 -352
- data/GenWrapper/etc/Mk_proto +0 -375
- data/GenWrapper/etc/dcl_gen +0 -13
- data/GenWrapper/etc/p_init +0 -410
- data/GenWrapper/proto/math2_shtlib.fp_old +0 -1294
- data/README_old +0 -79
- data/dummy.c +0 -9
- data/grph1_zgpack.c.org +0 -141
- data/init.c.gtk +0 -189
data/math1_clsplib.c
ADDED
@@ -0,0 +1,329 @@
|
|
1
|
+
/*
|
2
|
+
* $Id: p_header,v 1.2 2011-02-23 17:47:10 koshiro Exp $
|
3
|
+
*/
|
4
|
+
|
5
|
+
#include <stdio.h>
|
6
|
+
#include "ruby.h"
|
7
|
+
#include "libtinyf2c.h"
|
8
|
+
#include "narray.h"
|
9
|
+
|
10
|
+
/* for compatibility with ruby 1.6 */
|
11
|
+
#ifndef StringValuePtr
|
12
|
+
#define StringValuePtr(s) STR2CSTR(s)
|
13
|
+
#endif
|
14
|
+
|
15
|
+
#define DFLT_SIZE 32
|
16
|
+
|
17
|
+
extern char *dcl_obj2ccharary(VALUE, int, int);
|
18
|
+
extern integer *dcl_obj2cintegerary(VALUE);
|
19
|
+
extern real *dcl_obj2crealary(VALUE);
|
20
|
+
extern complex *dcl_obj2ccomplexary(VALUE);
|
21
|
+
extern logical *dcl_obj2clogicalary(VALUE);
|
22
|
+
|
23
|
+
extern VALUE dcl_ccharary2obj(char *, int, int);
|
24
|
+
extern VALUE dcl_cintegerary2obj(integer *, int, int, int *);
|
25
|
+
extern VALUE dcl_crealary2obj(real *, int, int, int *);
|
26
|
+
extern VALUE dcl_ccomplexary2obj(complex *, int, char *);
|
27
|
+
extern VALUE dcl_clogicalary2obj(logical *, int, int, int *);
|
28
|
+
|
29
|
+
extern void dcl_freeccharary(char *);
|
30
|
+
extern void dcl_freecintegerary(integer *);
|
31
|
+
extern void dcl_freecrealary(real *);
|
32
|
+
extern void dcl_freeccomplexary(complex *);
|
33
|
+
extern void dcl_freeclogicalary(logical *);
|
34
|
+
|
35
|
+
/* for functions which return real */
|
36
|
+
/* fnclib */
|
37
|
+
extern real rd2r_(real *);
|
38
|
+
extern real rr2d_(real *);
|
39
|
+
extern real rexp_(real *, integer *, integer *);
|
40
|
+
extern real rfpi_(void);
|
41
|
+
extern real rmod_(real *, real *);
|
42
|
+
/* gnmlib */
|
43
|
+
extern real rgnlt_(real *);
|
44
|
+
extern real rgnle_(real *);
|
45
|
+
extern real rgngt_(real *);
|
46
|
+
extern real rgnge_(real *);
|
47
|
+
/* rfalib */
|
48
|
+
extern real rmax_(real *, integer *, integer *);
|
49
|
+
extern real rmin_(real *, integer *, integer *);
|
50
|
+
extern real rsum_(real *, integer *, integer *);
|
51
|
+
extern real rave_(real *, integer *, integer *);
|
52
|
+
extern real rvar_(real *, integer *, integer *);
|
53
|
+
extern real rstd_(real *, integer *, integer *);
|
54
|
+
extern real rrms_(real *, integer *, integer *);
|
55
|
+
extern real ramp_(real *, integer *, integer *);
|
56
|
+
/* rfblib */
|
57
|
+
extern real rprd_(real *, real *, integer *, integer *, integer *);
|
58
|
+
extern real rcov_(real *, real *, integer *, integer *, integer *);
|
59
|
+
extern real rcor_(real *, real *, integer *, integer *, integer *);
|
60
|
+
|
61
|
+
|
62
|
+
extern VALUE mDCL;
|
63
|
+
|
64
|
+
#if DCLVER >= 544
|
65
|
+
|
66
|
+
static VALUE
|
67
|
+
dcl_clrgsv(obj, r, g, b, n, m)
|
68
|
+
VALUE obj, r, g, b, n, m;
|
69
|
+
{
|
70
|
+
integer *i_r;
|
71
|
+
integer *i_g;
|
72
|
+
integer *i_b;
|
73
|
+
real *o_h;
|
74
|
+
real *o_s;
|
75
|
+
real *o_v;
|
76
|
+
integer i_n;
|
77
|
+
integer i_m;
|
78
|
+
VALUE h;
|
79
|
+
VALUE s;
|
80
|
+
VALUE v;
|
81
|
+
|
82
|
+
if ((TYPE(r) == T_BIGNUM) || (TYPE(r) == T_FIXNUM)) {
|
83
|
+
r = rb_Array(r);
|
84
|
+
}
|
85
|
+
/* if ((TYPE(r) != T_ARRAY) &&
|
86
|
+
(rb_obj_is_kind_of(r, cNArray) != Qtrue)) {
|
87
|
+
rb_raise(rb_eTypeError, "invalid type");
|
88
|
+
} -- no check since obj2c*ary will do that */
|
89
|
+
if ((TYPE(g) == T_BIGNUM) || (TYPE(g) == T_FIXNUM)) {
|
90
|
+
g = rb_Array(g);
|
91
|
+
}
|
92
|
+
/* if ((TYPE(g) != T_ARRAY) &&
|
93
|
+
(rb_obj_is_kind_of(g, cNArray) != Qtrue)) {
|
94
|
+
rb_raise(rb_eTypeError, "invalid type");
|
95
|
+
} -- no check since obj2c*ary will do that */
|
96
|
+
if ((TYPE(b) == T_BIGNUM) || (TYPE(b) == T_FIXNUM)) {
|
97
|
+
b = rb_Array(b);
|
98
|
+
}
|
99
|
+
/* if ((TYPE(b) != T_ARRAY) &&
|
100
|
+
(rb_obj_is_kind_of(b, cNArray) != Qtrue)) {
|
101
|
+
rb_raise(rb_eTypeError, "invalid type");
|
102
|
+
} -- no check since obj2c*ary will do that */
|
103
|
+
if ((TYPE(n) != T_BIGNUM) || (TYPE(n) != T_FIXNUM)) {
|
104
|
+
n = rb_funcall(n, rb_intern("to_i"), 0);
|
105
|
+
}
|
106
|
+
if ((TYPE(m) != T_BIGNUM) || (TYPE(m) != T_FIXNUM)) {
|
107
|
+
m = rb_funcall(m, rb_intern("to_i"), 0);
|
108
|
+
}
|
109
|
+
|
110
|
+
i_n = NUM2INT(n);
|
111
|
+
i_m = NUM2INT(m);
|
112
|
+
i_r = dcl_obj2cintegerary(r);
|
113
|
+
i_g = dcl_obj2cintegerary(g);
|
114
|
+
i_b = dcl_obj2cintegerary(b);
|
115
|
+
|
116
|
+
o_h= ALLOCA_N(real, (i_n*i_m));
|
117
|
+
o_s= ALLOCA_N(real, (i_n*i_m));
|
118
|
+
o_v= ALLOCA_N(real, (i_n*i_m));
|
119
|
+
|
120
|
+
clrgsv_(i_r, i_g, i_b, o_h, o_s, o_v, &i_n, &i_m);
|
121
|
+
|
122
|
+
{int array_shape[2] = {i_n, i_m};
|
123
|
+
h = dcl_crealary2obj(o_h, (i_n*i_m), 2, array_shape);
|
124
|
+
}
|
125
|
+
{int array_shape[2] = {i_n, i_m};
|
126
|
+
s = dcl_crealary2obj(o_s, (i_n*i_m), 2, array_shape);
|
127
|
+
}
|
128
|
+
{int array_shape[2] = {i_n, i_m};
|
129
|
+
v = dcl_crealary2obj(o_v, (i_n*i_m), 2, array_shape);
|
130
|
+
}
|
131
|
+
|
132
|
+
dcl_freecintegerary(i_r);
|
133
|
+
dcl_freecintegerary(i_g);
|
134
|
+
dcl_freecintegerary(i_b);
|
135
|
+
|
136
|
+
return rb_ary_new3(3, h, s, v);
|
137
|
+
|
138
|
+
}
|
139
|
+
|
140
|
+
static VALUE
|
141
|
+
dcl_clsvrg(obj, h, s, v, n, m)
|
142
|
+
VALUE obj, h, s, v, n, m;
|
143
|
+
{
|
144
|
+
real *i_h;
|
145
|
+
real *i_s;
|
146
|
+
real *i_v;
|
147
|
+
integer *o_r;
|
148
|
+
integer *o_g;
|
149
|
+
integer *o_b;
|
150
|
+
integer i_n;
|
151
|
+
integer i_m;
|
152
|
+
VALUE r;
|
153
|
+
VALUE g;
|
154
|
+
VALUE b;
|
155
|
+
|
156
|
+
if (TYPE(h) == T_FLOAT) {
|
157
|
+
h = rb_Array(h);
|
158
|
+
}
|
159
|
+
/* if ((TYPE(h) != T_ARRAY) &&
|
160
|
+
(rb_obj_is_kind_of(h, cNArray) != Qtrue)) {
|
161
|
+
rb_raise(rb_eTypeError, "invalid type");
|
162
|
+
} -- no check since obj2c*ary will do that */
|
163
|
+
if (TYPE(s) == T_FLOAT) {
|
164
|
+
s = rb_Array(s);
|
165
|
+
}
|
166
|
+
/* if ((TYPE(s) != T_ARRAY) &&
|
167
|
+
(rb_obj_is_kind_of(s, cNArray) != Qtrue)) {
|
168
|
+
rb_raise(rb_eTypeError, "invalid type");
|
169
|
+
} -- no check since obj2c*ary will do that */
|
170
|
+
if (TYPE(v) == T_FLOAT) {
|
171
|
+
v = rb_Array(v);
|
172
|
+
}
|
173
|
+
/* if ((TYPE(v) != T_ARRAY) &&
|
174
|
+
(rb_obj_is_kind_of(v, cNArray) != Qtrue)) {
|
175
|
+
rb_raise(rb_eTypeError, "invalid type");
|
176
|
+
} -- no check since obj2c*ary will do that */
|
177
|
+
if ((TYPE(n) != T_BIGNUM) || (TYPE(n) != T_FIXNUM)) {
|
178
|
+
n = rb_funcall(n, rb_intern("to_i"), 0);
|
179
|
+
}
|
180
|
+
if ((TYPE(m) != T_BIGNUM) || (TYPE(m) != T_FIXNUM)) {
|
181
|
+
m = rb_funcall(m, rb_intern("to_i"), 0);
|
182
|
+
}
|
183
|
+
|
184
|
+
i_n = NUM2INT(n);
|
185
|
+
i_m = NUM2INT(m);
|
186
|
+
i_h = dcl_obj2crealary(h);
|
187
|
+
i_s = dcl_obj2crealary(s);
|
188
|
+
i_v = dcl_obj2crealary(v);
|
189
|
+
|
190
|
+
o_r= ALLOCA_N(integer, (i_n*i_m));
|
191
|
+
o_g= ALLOCA_N(integer, (i_n*i_m));
|
192
|
+
o_b= ALLOCA_N(integer, (i_n*i_m));
|
193
|
+
|
194
|
+
clsvrg_(i_h, i_s, i_v, o_r, o_g, o_b, &i_n, &i_m);
|
195
|
+
|
196
|
+
{int array_shape[2] = {i_n, i_m};
|
197
|
+
r = dcl_cintegerary2obj(o_r, (i_n*i_m), 2, array_shape);
|
198
|
+
}
|
199
|
+
{int array_shape[2] = {i_n, i_m};
|
200
|
+
g = dcl_cintegerary2obj(o_g, (i_n*i_m), 2, array_shape);
|
201
|
+
}
|
202
|
+
{int array_shape[2] = {i_n, i_m};
|
203
|
+
b = dcl_cintegerary2obj(o_b, (i_n*i_m), 2, array_shape);
|
204
|
+
}
|
205
|
+
|
206
|
+
dcl_freecrealary(i_h);
|
207
|
+
dcl_freecrealary(i_s);
|
208
|
+
dcl_freecrealary(i_v);
|
209
|
+
|
210
|
+
return rb_ary_new3(3, r, g, b);
|
211
|
+
|
212
|
+
}
|
213
|
+
|
214
|
+
static VALUE
|
215
|
+
dcl_inorml(obj, v, n, m, x, y)
|
216
|
+
VALUE obj, v, n, m, x, y;
|
217
|
+
{
|
218
|
+
integer *i_v;
|
219
|
+
real *o_w;
|
220
|
+
integer i_n;
|
221
|
+
integer i_m;
|
222
|
+
real i_x;
|
223
|
+
real i_y;
|
224
|
+
VALUE w;
|
225
|
+
|
226
|
+
if ((TYPE(v) == T_BIGNUM) || (TYPE(v) == T_FIXNUM)) {
|
227
|
+
v = rb_Array(v);
|
228
|
+
}
|
229
|
+
/* if ((TYPE(v) != T_ARRAY) &&
|
230
|
+
(rb_obj_is_kind_of(v, cNArray) != Qtrue)) {
|
231
|
+
rb_raise(rb_eTypeError, "invalid type");
|
232
|
+
} -- no check since obj2c*ary will do that */
|
233
|
+
if ((TYPE(n) != T_BIGNUM) || (TYPE(n) != T_FIXNUM)) {
|
234
|
+
n = rb_funcall(n, rb_intern("to_i"), 0);
|
235
|
+
}
|
236
|
+
if ((TYPE(m) != T_BIGNUM) || (TYPE(m) != T_FIXNUM)) {
|
237
|
+
m = rb_funcall(m, rb_intern("to_i"), 0);
|
238
|
+
}
|
239
|
+
if (TYPE(x) != T_FLOAT) {
|
240
|
+
x = rb_funcall(x, rb_intern("to_f"), 0);
|
241
|
+
}
|
242
|
+
if (TYPE(y) != T_FLOAT) {
|
243
|
+
y = rb_funcall(y, rb_intern("to_f"), 0);
|
244
|
+
}
|
245
|
+
|
246
|
+
i_n = NUM2INT(n);
|
247
|
+
i_m = NUM2INT(m);
|
248
|
+
i_x = (real)NUM2DBL(x);
|
249
|
+
i_y = (real)NUM2DBL(y);
|
250
|
+
i_v = dcl_obj2cintegerary(v);
|
251
|
+
|
252
|
+
o_w= ALLOCA_N(real, (i_n*i_m));
|
253
|
+
|
254
|
+
inorml_(i_v, o_w, &i_n, &i_m, &i_x, &i_y);
|
255
|
+
|
256
|
+
{int array_shape[2] = {i_n, i_m};
|
257
|
+
w = dcl_crealary2obj(o_w, (i_n*i_m), 2, array_shape);
|
258
|
+
}
|
259
|
+
|
260
|
+
dcl_freecintegerary(i_v);
|
261
|
+
|
262
|
+
return w;
|
263
|
+
|
264
|
+
}
|
265
|
+
|
266
|
+
static VALUE
|
267
|
+
dcl_rnorml(obj, v, n, m, x, y)
|
268
|
+
VALUE obj, v, n, m, x, y;
|
269
|
+
{
|
270
|
+
real *i_v;
|
271
|
+
real *o_w;
|
272
|
+
integer i_n;
|
273
|
+
integer i_m;
|
274
|
+
real i_x;
|
275
|
+
real i_y;
|
276
|
+
VALUE w;
|
277
|
+
|
278
|
+
if (TYPE(v) == T_FLOAT) {
|
279
|
+
v = rb_Array(v);
|
280
|
+
}
|
281
|
+
/* if ((TYPE(v) != T_ARRAY) &&
|
282
|
+
(rb_obj_is_kind_of(v, cNArray) != Qtrue)) {
|
283
|
+
rb_raise(rb_eTypeError, "invalid type");
|
284
|
+
} -- no check since obj2c*ary will do that */
|
285
|
+
if ((TYPE(n) != T_BIGNUM) || (TYPE(n) != T_FIXNUM)) {
|
286
|
+
n = rb_funcall(n, rb_intern("to_i"), 0);
|
287
|
+
}
|
288
|
+
if ((TYPE(m) != T_BIGNUM) || (TYPE(m) != T_FIXNUM)) {
|
289
|
+
m = rb_funcall(m, rb_intern("to_i"), 0);
|
290
|
+
}
|
291
|
+
if (TYPE(x) != T_FLOAT) {
|
292
|
+
x = rb_funcall(x, rb_intern("to_f"), 0);
|
293
|
+
}
|
294
|
+
if (TYPE(y) != T_FLOAT) {
|
295
|
+
y = rb_funcall(y, rb_intern("to_f"), 0);
|
296
|
+
}
|
297
|
+
|
298
|
+
i_n = NUM2INT(n);
|
299
|
+
i_m = NUM2INT(m);
|
300
|
+
i_x = (real)NUM2DBL(x);
|
301
|
+
i_y = (real)NUM2DBL(y);
|
302
|
+
i_v = dcl_obj2crealary(v);
|
303
|
+
|
304
|
+
o_w= ALLOCA_N(real, (i_n*i_m));
|
305
|
+
|
306
|
+
rnorml_(i_v, o_w, &i_n, &i_m, &i_x, &i_y);
|
307
|
+
|
308
|
+
{int array_shape[2] = {i_n, i_m};
|
309
|
+
w = dcl_crealary2obj(o_w, (i_n*i_m), 2, array_shape);
|
310
|
+
}
|
311
|
+
|
312
|
+
dcl_freecrealary(i_v);
|
313
|
+
|
314
|
+
return w;
|
315
|
+
|
316
|
+
}
|
317
|
+
|
318
|
+
#endif
|
319
|
+
void
|
320
|
+
init_math1_clsplib(mDCL)
|
321
|
+
VALUE mDCL;
|
322
|
+
{
|
323
|
+
#if DCLVER >= 544
|
324
|
+
rb_define_module_function(mDCL, "clrgsv", dcl_clrgsv, 5);
|
325
|
+
rb_define_module_function(mDCL, "clsvrg", dcl_clsvrg, 5);
|
326
|
+
rb_define_module_function(mDCL, "inorml", dcl_inorml, 5);
|
327
|
+
rb_define_module_function(mDCL, "rnorml", dcl_rnorml, 5);
|
328
|
+
#endif
|
329
|
+
}
|
data/misc1_randlib.c
CHANGED
@@ -61,6 +61,34 @@ extern real rcor_(real *, real *, integer *, integer *, integer *);
|
|
61
61
|
|
62
62
|
extern VALUE mDCL;
|
63
63
|
|
64
|
+
#if DCLVER >= 544
|
65
|
+
|
66
|
+
static VALUE
|
67
|
+
dcl_rngu0(obj, iseed)
|
68
|
+
VALUE obj, iseed;
|
69
|
+
{
|
70
|
+
integer io_iseed;
|
71
|
+
real o_rtn_val;
|
72
|
+
VALUE rtn_val;
|
73
|
+
|
74
|
+
if ((TYPE(iseed) != T_BIGNUM) || (TYPE(iseed) != T_FIXNUM)) {
|
75
|
+
iseed = rb_funcall(iseed, rb_intern("to_i"), 0);
|
76
|
+
}
|
77
|
+
|
78
|
+
io_iseed = NUM2INT(iseed);
|
79
|
+
|
80
|
+
|
81
|
+
o_rtn_val = rngu0_(&io_iseed);
|
82
|
+
|
83
|
+
rtn_val = rb_float_new((double)o_rtn_val);
|
84
|
+
|
85
|
+
|
86
|
+
return rtn_val;
|
87
|
+
|
88
|
+
}
|
89
|
+
|
90
|
+
#endif
|
91
|
+
|
64
92
|
static VALUE
|
65
93
|
dcl_rngu1(obj, iseed)
|
66
94
|
VALUE obj, iseed;
|
@@ -109,6 +137,8 @@ dcl_rngu2(obj, iseed)
|
|
109
137
|
|
110
138
|
}
|
111
139
|
|
140
|
+
#if DCLVER < 544
|
141
|
+
|
112
142
|
static VALUE
|
113
143
|
dcl_rngu3(obj, iseed)
|
114
144
|
VALUE obj, iseed;
|
@@ -132,11 +162,18 @@ dcl_rngu3(obj, iseed)
|
|
132
162
|
return rtn_val;
|
133
163
|
|
134
164
|
}
|
165
|
+
|
166
|
+
#endif
|
135
167
|
void
|
136
168
|
init_misc1_randlib(mDCL)
|
137
169
|
VALUE mDCL;
|
138
170
|
{
|
171
|
+
#if DCLVER >= 544
|
172
|
+
rb_define_module_function(mDCL, "rngu0", dcl_rngu0, 1);
|
173
|
+
#endif
|
139
174
|
rb_define_module_function(mDCL, "rngu1", dcl_rngu1, 1);
|
140
175
|
rb_define_module_function(mDCL, "rngu2", dcl_rngu2, 1);
|
176
|
+
#if DCLVER < 544
|
141
177
|
rb_define_module_function(mDCL, "rngu3", dcl_rngu3, 1);
|
178
|
+
#endif
|
142
179
|
}
|
data/ruby-dcl.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.unshift File.expand_path("../lib", __FILE__)
|
3
|
+
require "dcl/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "ruby-dcl"
|
7
|
+
s.version = DCL::VERSION
|
8
|
+
s.authors = ["T. Horinouchi", "K. Kuroi", "K. Goto"\
|
9
|
+
,"S. Nishizawa", "T. Koshiro",'GFD Dennou Club']
|
10
|
+
s.email = ["eriko@gfd-dennou.org"]
|
11
|
+
s.homepage = 'http://www.gfd-dennou.org/arch/ruby/products/ruby-dcl/'
|
12
|
+
s.summary = %q{one-to-one interface to the DCL graphic library}
|
13
|
+
s.description = %q{RubyDCL is a ruby interface to the scientific graphic library DCL. It supports all the subroutines and functions in DCL on a one-to-one basis. }
|
14
|
+
|
15
|
+
s.rubyforge_project = "ruby-dcl"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
s.extensions << "extconf.rb"
|
22
|
+
|
23
|
+
# specify any dependencies here; for example:
|
24
|
+
#s.add_development_dependency "rspec"
|
25
|
+
#s.add_runtime_dependency "narray"
|
26
|
+
s.required_ruby_version = Gem::Requirement.new(">= 1.6")
|
27
|
+
s.add_runtime_dependency(%q<narray>, [">= 0.5.5"])
|
28
|
+
s.add_runtime_dependency(%q<narray_miss>, [">= 0"])
|
29
|
+
s.add_runtime_dependency(%q<gtk2>, [">= 0"])
|
30
|
+
end
|