carray 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -1
- data/ca_iter_block.c +32 -30
- data/ca_iter_dimension.c +24 -22
- data/ca_iter_window.c +25 -23
- data/ca_obj_array.c +58 -56
- data/ca_obj_bitarray.c +27 -27
- data/ca_obj_bitfield.c +46 -45
- data/ca_obj_block.c +77 -72
- data/ca_obj_fake.c +20 -20
- data/ca_obj_farray.c +22 -22
- data/ca_obj_field.c +31 -30
- data/ca_obj_grid.c +63 -62
- data/ca_obj_mapping.c +35 -32
- data/ca_obj_object.c +54 -54
- data/ca_obj_reduce.c +13 -13
- data/ca_obj_refer.c +42 -39
- data/ca_obj_repeat.c +50 -47
- data/ca_obj_select.c +24 -24
- data/ca_obj_shift.c +61 -58
- data/ca_obj_transpose.c +52 -51
- data/ca_obj_unbound_repeat.c +28 -27
- data/ca_obj_window.c +77 -72
- data/carray.gemspec +0 -2
- data/carray.h +190 -163
- data/carray_access.c +137 -136
- data/carray_attribute.c +24 -13
- data/carray_call_cfunc.c +21 -21
- data/carray_cast.c +106 -110
- data/carray_cast_func.rb +17 -17
- data/carray_class.c +3 -3
- data/carray_conversion.c +15 -15
- data/carray_copy.c +27 -27
- data/carray_core.c +22 -21
- data/carray_element.c +55 -47
- data/carray_generate.c +32 -32
- data/carray_iterator.c +36 -35
- data/carray_loop.c +37 -37
- data/carray_mask.c +21 -21
- data/carray_math.rb +18 -18
- data/carray_numeric.c +1 -1
- data/carray_operator.c +19 -18
- data/carray_order.c +30 -30
- data/carray_random.c +34 -32
- data/carray_sort_addr.c +12 -12
- data/carray_stat.c +127 -127
- data/carray_stat_proc.rb +152 -141
- data/carray_test.c +16 -16
- data/carray_utils.c +58 -56
- data/ext/calculus/carray_calculus.c +19 -20
- data/ext/calculus/carray_interp.c +12 -11
- data/ext/fortio/lib/fortio/fortran_sequential.rb +2 -2
- data/ext/fortio/ruby_fortio.c +1 -1
- data/ext/imagemap/carray_imagemap.c +14 -14
- data/ext/narray/ca_wrap_narray.c +30 -21
- data/extconf.rb +5 -0
- data/lib/carray/base/basic.rb +4 -3
- data/lib/carray/base/serialize.rb +3 -3
- data/lib/carray/graphics/gnuplot.rb +10 -7
- data/lib/carray/io/csv.rb +14 -9
- data/lib/carray/io/imagemagick.rb +7 -0
- data/lib/carray/io/sqlite3.rb +6 -4
- data/mkmath.rb +20 -20
- data/ruby_carray.c +2 -0
- data/ruby_ccomplex.c +3 -3
- data/test/test_130.rb +23 -0
- data/test/test_ALL.rb +2 -1
- data/test/test_order.rb +3 -3
- data/test/test_stat.rb +2 -2
- data/version.h +4 -4
- metadata +4 -37
- data/examples/ex001.rb +0 -10
- data/examples/test-int.rb +0 -13
- data/lib/carray/autoload/autoload_io_excel.rb +0 -5
- data/lib/carray/io/excel.rb +0 -26
data/carray_element.c
CHANGED
@@ -26,9 +26,10 @@ VALUE
|
|
26
26
|
rb_ca_elem_swap (VALUE self, VALUE ridx1, VALUE ridx2)
|
27
27
|
{
|
28
28
|
CArray *ca;
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
ca_size_t idx1[CA_RANK_MAX], idx2[CA_RANK_MAX];
|
30
|
+
ca_size_t addr1 = 0, addr2 = 0;
|
31
|
+
int8_t i;
|
32
|
+
ca_size_t k;
|
32
33
|
int has_mask, has_index1, has_index2;
|
33
34
|
char _val1[32], _val2[32];
|
34
35
|
char *val1 = _val1, *val2 = _val2;
|
@@ -48,7 +49,7 @@ rb_ca_elem_swap (VALUE self, VALUE ridx1, VALUE ridx2)
|
|
48
49
|
|
49
50
|
if ( TYPE(ridx1) == T_ARRAY ) {
|
50
51
|
for (i=0; i<ca->rank; i++) {
|
51
|
-
k =
|
52
|
+
k = NUM2SIZE(rb_ary_entry(ridx1, i));
|
52
53
|
CA_CHECK_INDEX(k, ca->dim[i]);
|
53
54
|
idx1[i] = k;
|
54
55
|
}
|
@@ -59,7 +60,7 @@ rb_ca_elem_swap (VALUE self, VALUE ridx1, VALUE ridx2)
|
|
59
60
|
}
|
60
61
|
}
|
61
62
|
else {
|
62
|
-
k =
|
63
|
+
k = NUM2SIZE(ridx1);
|
63
64
|
CA_CHECK_INDEX(k, ca->elements);
|
64
65
|
addr1 = k;
|
65
66
|
has_index1 = 0;
|
@@ -71,7 +72,7 @@ rb_ca_elem_swap (VALUE self, VALUE ridx1, VALUE ridx2)
|
|
71
72
|
|
72
73
|
if ( TYPE(ridx2) == T_ARRAY ) {
|
73
74
|
for (i=0; i<ca->rank; i++) {
|
74
|
-
k =
|
75
|
+
k = NUM2SIZE(rb_ary_entry(ridx2, i));
|
75
76
|
CA_CHECK_INDEX(k, ca->dim[i]);
|
76
77
|
idx2[i] = k;
|
77
78
|
}
|
@@ -82,7 +83,7 @@ rb_ca_elem_swap (VALUE self, VALUE ridx1, VALUE ridx2)
|
|
82
83
|
}
|
83
84
|
}
|
84
85
|
else {
|
85
|
-
k =
|
86
|
+
k = NUM2SIZE(ridx2);
|
86
87
|
CA_CHECK_INDEX(k, ca->elements);
|
87
88
|
addr2 = k;
|
88
89
|
has_index2 = 0;
|
@@ -137,9 +138,10 @@ VALUE
|
|
137
138
|
rb_ca_elem_copy (VALUE self, VALUE ridx1, VALUE ridx2)
|
138
139
|
{
|
139
140
|
CArray *ca;
|
140
|
-
|
141
|
-
|
142
|
-
|
141
|
+
ca_size_t idx1[CA_RANK_MAX], idx2[CA_RANK_MAX];
|
142
|
+
ca_size_t addr1 = 0, addr2 = 0;
|
143
|
+
int8_t i;
|
144
|
+
ca_size_t k;
|
143
145
|
int has_mask;
|
144
146
|
char _val[32];
|
145
147
|
char *val = _val;
|
@@ -158,7 +160,7 @@ rb_ca_elem_copy (VALUE self, VALUE ridx1, VALUE ridx2)
|
|
158
160
|
|
159
161
|
if ( TYPE(ridx1) == T_ARRAY ) {
|
160
162
|
for (i=0; i<ca->rank; i++) {
|
161
|
-
k =
|
163
|
+
k = NUM2SIZE(rb_ary_entry(ridx1, i));
|
162
164
|
CA_CHECK_INDEX(k, ca->dim[i]);
|
163
165
|
idx1[i] = k;
|
164
166
|
}
|
@@ -168,7 +170,7 @@ rb_ca_elem_copy (VALUE self, VALUE ridx1, VALUE ridx2)
|
|
168
170
|
}
|
169
171
|
}
|
170
172
|
else {
|
171
|
-
k =
|
173
|
+
k = NUM2SIZE(ridx1);
|
172
174
|
CA_CHECK_INDEX(k, ca->elements);
|
173
175
|
addr1 = k;
|
174
176
|
ca_fetch_addr(ca, addr1, val);
|
@@ -179,7 +181,7 @@ rb_ca_elem_copy (VALUE self, VALUE ridx1, VALUE ridx2)
|
|
179
181
|
|
180
182
|
if ( TYPE(ridx2) == T_ARRAY ) {
|
181
183
|
for (i=0; i<ca->rank; i++) {
|
182
|
-
k =
|
184
|
+
k = NUM2SIZE(rb_ary_entry(ridx2, i));
|
183
185
|
CA_CHECK_INDEX(k, ca->dim[i]);
|
184
186
|
idx2[i] = k;
|
185
187
|
}
|
@@ -189,7 +191,7 @@ rb_ca_elem_copy (VALUE self, VALUE ridx1, VALUE ridx2)
|
|
189
191
|
}
|
190
192
|
}
|
191
193
|
else {
|
192
|
-
k =
|
194
|
+
k = NUM2SIZE(ridx2);
|
193
195
|
CA_CHECK_INDEX(k, ca->elements);
|
194
196
|
addr2 = k;
|
195
197
|
ca_store_addr(ca, addr2, val);
|
@@ -216,9 +218,10 @@ VALUE
|
|
216
218
|
rb_ca_elem_store (VALUE self, VALUE ridx, VALUE obj)
|
217
219
|
{
|
218
220
|
CArray *ca;
|
219
|
-
|
220
|
-
|
221
|
-
|
221
|
+
ca_size_t idx[CA_RANK_MAX];
|
222
|
+
ca_size_t addr = 0;
|
223
|
+
int8_t i;
|
224
|
+
ca_size_t k;
|
222
225
|
|
223
226
|
rb_ca_modify(self);
|
224
227
|
|
@@ -226,14 +229,14 @@ rb_ca_elem_store (VALUE self, VALUE ridx, VALUE obj)
|
|
226
229
|
|
227
230
|
if ( TYPE(ridx) == T_ARRAY ) {
|
228
231
|
for (i=0; i<ca->rank; i++) {
|
229
|
-
k =
|
232
|
+
k = NUM2SIZE(rb_ary_entry(ridx, i));
|
230
233
|
CA_CHECK_INDEX(k, ca->dim[i]);
|
231
234
|
idx[i] = k;
|
232
235
|
}
|
233
236
|
rb_ca_store_index(self, idx, obj);
|
234
237
|
}
|
235
238
|
else {
|
236
|
-
k =
|
239
|
+
k = NUM2SIZE(ridx);
|
237
240
|
CA_CHECK_INDEX(k, ca->elements);
|
238
241
|
addr = k;
|
239
242
|
rb_ca_store_addr(self, addr, obj);
|
@@ -253,22 +256,23 @@ VALUE
|
|
253
256
|
rb_ca_elem_fetch (VALUE self, VALUE ridx)
|
254
257
|
{
|
255
258
|
CArray *ca;
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
+
ca_size_t idx[CA_RANK_MAX];
|
260
|
+
ca_size_t addr = 0;
|
261
|
+
int8_t i;
|
262
|
+
ca_size_t k;
|
259
263
|
|
260
264
|
Data_Get_Struct(self, CArray, ca);
|
261
265
|
|
262
266
|
if ( TYPE(ridx) == T_ARRAY ) {
|
263
267
|
for (i=0; i<ca->rank; i++) {
|
264
|
-
k =
|
268
|
+
k = NUM2SIZE(rb_ary_entry(ridx, i));
|
265
269
|
CA_CHECK_INDEX(k, ca->dim[i]);
|
266
270
|
idx[i] = k;
|
267
271
|
}
|
268
272
|
return rb_ca_fetch_index(self, idx);
|
269
273
|
}
|
270
274
|
else {
|
271
|
-
k =
|
275
|
+
k = NUM2SIZE(ridx);
|
272
276
|
CA_CHECK_INDEX(k, ca->elements);
|
273
277
|
addr = k;
|
274
278
|
return rb_ca_fetch_addr(self, addr);
|
@@ -287,9 +291,10 @@ rb_ca_elem_incr (VALUE self, VALUE ridx1)
|
|
287
291
|
{
|
288
292
|
volatile VALUE out;
|
289
293
|
CArray *ca;
|
290
|
-
|
291
|
-
|
292
|
-
|
294
|
+
ca_size_t idx1[CA_RANK_MAX];
|
295
|
+
ca_size_t addr1 = 0;
|
296
|
+
int8_t i;
|
297
|
+
ca_size_t k;
|
293
298
|
int has_index1 = 0;
|
294
299
|
int has_mask;
|
295
300
|
char _val[8];
|
@@ -310,7 +315,7 @@ rb_ca_elem_incr (VALUE self, VALUE ridx1)
|
|
310
315
|
|
311
316
|
if ( TYPE(ridx1) == T_ARRAY ) {
|
312
317
|
for (i=0; i<ca->rank; i++) {
|
313
|
-
k =
|
318
|
+
k = NUM2SIZE(rb_ary_entry(ridx1, i));
|
314
319
|
CA_CHECK_INDEX(k, ca->dim[i]);
|
315
320
|
idx1[i] = k;
|
316
321
|
}
|
@@ -326,7 +331,7 @@ rb_ca_elem_incr (VALUE self, VALUE ridx1)
|
|
326
331
|
has_index1 = 1;
|
327
332
|
}
|
328
333
|
else {
|
329
|
-
k =
|
334
|
+
k = NUM2SIZE(ridx1);
|
330
335
|
CA_CHECK_INDEX(k, ca->elements);
|
331
336
|
addr1 = k;
|
332
337
|
if ( has_mask ) {
|
@@ -347,8 +352,8 @@ rb_ca_elem_incr (VALUE self, VALUE ridx1)
|
|
347
352
|
case CA_UINT16: out = UINT2NUM(++*((uint16_t*) val)); break;
|
348
353
|
case CA_INT32: out = INT2NUM(++*((int32_t*) val)); break;
|
349
354
|
case CA_UINT32: out = UINT2NUM(++*((uint32_t*) val)); break;
|
350
|
-
case CA_INT64: out =
|
351
|
-
case CA_UINT64: out =
|
355
|
+
case CA_INT64: out = LL2NUM(++*((int64_t*) val)); break;
|
356
|
+
case CA_UINT64: out = ULL2NUM(++*((uint64_t*) val)); break;
|
352
357
|
}
|
353
358
|
|
354
359
|
if ( has_index1 ) {
|
@@ -373,9 +378,10 @@ rb_ca_elem_decr (VALUE self, VALUE ridx1)
|
|
373
378
|
{
|
374
379
|
volatile VALUE out;
|
375
380
|
CArray *ca;
|
376
|
-
|
377
|
-
|
378
|
-
|
381
|
+
ca_size_t idx1[CA_RANK_MAX];
|
382
|
+
ca_size_t addr1 = 0;
|
383
|
+
int8_t i;
|
384
|
+
ca_size_t k;
|
379
385
|
int has_index1 = 0;
|
380
386
|
int has_mask;
|
381
387
|
char _val[8];
|
@@ -396,7 +402,7 @@ rb_ca_elem_decr (VALUE self, VALUE ridx1)
|
|
396
402
|
|
397
403
|
if ( TYPE(ridx1) == T_ARRAY ) {
|
398
404
|
for (i=0; i<ca->rank; i++) {
|
399
|
-
k =
|
405
|
+
k = NUM2SIZE(rb_ary_entry(ridx1, i));
|
400
406
|
CA_CHECK_INDEX(k, ca->dim[i]);
|
401
407
|
idx1[i] = k;
|
402
408
|
}
|
@@ -412,7 +418,7 @@ rb_ca_elem_decr (VALUE self, VALUE ridx1)
|
|
412
418
|
has_index1 = 1;
|
413
419
|
}
|
414
420
|
else {
|
415
|
-
k =
|
421
|
+
k = NUM2SIZE(ridx1);
|
416
422
|
CA_CHECK_INDEX(k, ca->elements);
|
417
423
|
addr1 = k;
|
418
424
|
if ( has_mask ) {
|
@@ -458,9 +464,10 @@ VALUE
|
|
458
464
|
rb_ca_elem_test_masked (VALUE self, VALUE ridx1)
|
459
465
|
{
|
460
466
|
CArray *ca;
|
461
|
-
|
462
|
-
|
463
|
-
|
467
|
+
ca_size_t idx1[CA_RANK_MAX];
|
468
|
+
ca_size_t addr1 = 0;
|
469
|
+
int8_t i;
|
470
|
+
ca_size_t k;
|
464
471
|
boolean8_t m = 0;
|
465
472
|
|
466
473
|
Data_Get_Struct(self, CArray, ca);
|
@@ -469,7 +476,7 @@ rb_ca_elem_test_masked (VALUE self, VALUE ridx1)
|
|
469
476
|
|
470
477
|
if ( TYPE(ridx1) == T_ARRAY ) {
|
471
478
|
for (i=0; i<ca->rank; i++) {
|
472
|
-
k =
|
479
|
+
k = NUM2SIZE(rb_ary_entry(ridx1, i));
|
473
480
|
CA_CHECK_INDEX(k, ca->dim[i]);
|
474
481
|
idx1[i] = k;
|
475
482
|
}
|
@@ -478,7 +485,7 @@ rb_ca_elem_test_masked (VALUE self, VALUE ridx1)
|
|
478
485
|
}
|
479
486
|
}
|
480
487
|
else {
|
481
|
-
k =
|
488
|
+
k = NUM2SIZE(ridx1);
|
482
489
|
CA_CHECK_INDEX(k, ca->elements);
|
483
490
|
addr1 = k;
|
484
491
|
if ( ca->mask ) {
|
@@ -503,22 +510,23 @@ static VALUE
|
|
503
510
|
rb_ca_incr_addr (volatile VALUE self, volatile VALUE raddr)
|
504
511
|
{
|
505
512
|
CArray *ca, *ci;
|
506
|
-
|
507
|
-
|
513
|
+
int64_t *q, *p;
|
514
|
+
ca_size_t k, elements;
|
515
|
+
ca_size_t i;
|
508
516
|
boolean8_t *m;
|
509
517
|
|
510
518
|
rb_ca_modify(self);
|
511
519
|
|
512
|
-
self = rb_ca_wrap_writable(self,
|
513
|
-
raddr = rb_ca_wrap_readonly(raddr,
|
520
|
+
self = rb_ca_wrap_writable(self, INT2NUM(CA_INT64));
|
521
|
+
raddr = rb_ca_wrap_readonly(raddr, INT2NUM(CA_INT64));
|
514
522
|
|
515
523
|
Data_Get_Struct(self, CArray, ca);
|
516
524
|
Data_Get_Struct(raddr, CArray, ci);
|
517
525
|
|
518
526
|
ca_attach_n(2, ca, ci);
|
519
527
|
|
520
|
-
q = (
|
521
|
-
p = (
|
528
|
+
q = (int64_t *) ca->ptr;
|
529
|
+
p = (int64_t *) ci->ptr;
|
522
530
|
m = ( ci->mask ) ? (boolean8_t *) ci->mask->ptr : NULL;
|
523
531
|
|
524
532
|
elements = ca->elements;
|
data/carray_generate.c
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
static VALUE
|
32
32
|
rb_ca_boolean_set (int argc, VALUE *argv, VALUE self)
|
33
33
|
{
|
34
|
-
VALUE one =
|
34
|
+
VALUE one = INT2NUM(1);
|
35
35
|
rb_ca_modify(self);
|
36
36
|
if ( ! rb_ca_is_boolean_type(self) ) {
|
37
37
|
rb_raise(rb_eCADataTypeError, "reciever should be a boolean array");
|
@@ -43,7 +43,7 @@ rb_ca_boolean_set (int argc, VALUE *argv, VALUE self)
|
|
43
43
|
static VALUE
|
44
44
|
rb_ca_boolean_unset (int argc, VALUE *argv, VALUE self)
|
45
45
|
{
|
46
|
-
VALUE zero =
|
46
|
+
VALUE zero = INT2NUM(0);
|
47
47
|
rb_ca_modify(self);
|
48
48
|
if ( ! rb_ca_is_boolean_type(self) ) {
|
49
49
|
rb_raise(rb_eCADataTypeError, "reciever should be a boolean array");
|
@@ -68,8 +68,8 @@ rb_ca_where (VALUE self)
|
|
68
68
|
volatile VALUE bool, obj;
|
69
69
|
CArray *ca, *co;
|
70
70
|
boolean8_t *p, *m;
|
71
|
-
|
72
|
-
|
71
|
+
ca_size_t *q;
|
72
|
+
ca_size_t i, count;
|
73
73
|
|
74
74
|
bool = ( ! rb_ca_is_boolean_type(self) ) ? rb_ca_to_boolean(self) : self;
|
75
75
|
|
@@ -95,12 +95,12 @@ rb_ca_where (VALUE self)
|
|
95
95
|
}
|
96
96
|
|
97
97
|
/* create output array */
|
98
|
-
obj = rb_carray_new(
|
98
|
+
obj = rb_carray_new(CA_SIZE, 1, &count, 0, NULL);
|
99
99
|
Data_Get_Struct(obj, CArray, co);
|
100
100
|
|
101
101
|
/* store address which elements is true to output array */
|
102
102
|
p = (boolean8_t *) ca->ptr;
|
103
|
-
q = (
|
103
|
+
q = (ca_size_t *) co->ptr;
|
104
104
|
m = ca_mask_ptr(ca);
|
105
105
|
if ( m ) {
|
106
106
|
for (i=0; i<ca->elements; i++) { /* not-masked && true */
|
@@ -125,25 +125,25 @@ rb_ca_where (VALUE self)
|
|
125
125
|
#define proc_seq_bang(type, from, to) \
|
126
126
|
{ \
|
127
127
|
type *p = (type *)ca->ptr; \
|
128
|
-
|
128
|
+
ca_size_t i; \
|
129
129
|
if ( NIL_P(roffset) && NIL_P(rstep) ) { \
|
130
130
|
for (i=0; i<ca->elements; i++) { \
|
131
|
-
*p++ = to(i); \
|
131
|
+
*p++ = (type) to(i); \
|
132
132
|
} \
|
133
133
|
} \
|
134
134
|
else if ( rb_obj_is_kind_of(rstep, rb_cFloat) || \
|
135
135
|
rb_obj_is_kind_of(roffset, rb_cFloat) ) { \
|
136
|
-
type offset = (NIL_P(roffset)) ? (type) 0 : from(roffset); \
|
136
|
+
type offset = (NIL_P(roffset)) ? (type) 0 : (type) from(roffset); \
|
137
137
|
double step = (NIL_P(rstep)) ? 1 : NUM2DBL(rstep); \
|
138
138
|
for (i=0; i<ca->elements; i++) { \
|
139
|
-
*p++ = to(step*i+offset); \
|
139
|
+
*p++ = (type) to(step*i+offset); \
|
140
140
|
} \
|
141
141
|
} \
|
142
142
|
else { \
|
143
|
-
type offset = (NIL_P(roffset)) ? (type) 0 : from(roffset); \
|
144
|
-
type step = (NIL_P(rstep)) ? (type) 1 : from(rstep); \
|
143
|
+
type offset = (NIL_P(roffset)) ? (type) 0 : (type) from(roffset); \
|
144
|
+
type step = (NIL_P(rstep)) ? (type) 1 : (type) from(rstep); \
|
145
145
|
for (i=0; i<ca->elements; i++) { \
|
146
|
-
*p++ = to(step*i+offset); \
|
146
|
+
*p++ = (type) to(step*i+offset); \
|
147
147
|
} \
|
148
148
|
} \
|
149
149
|
}
|
@@ -151,25 +151,25 @@ rb_ca_where (VALUE self)
|
|
151
151
|
#define proc_seq_bang_with_block(type, from, to) \
|
152
152
|
{ \
|
153
153
|
type *p = (type *)ca->ptr; \
|
154
|
-
|
154
|
+
ca_size_t i; \
|
155
155
|
if ( NIL_P(roffset) && NIL_P(rstep) ) { \
|
156
156
|
for (i=0; i<ca->elements; i++) { \
|
157
|
-
*p++ = from(rb_yield(
|
157
|
+
*p++ = (type) from(rb_yield(SIZE2NUM(i))); \
|
158
158
|
} \
|
159
159
|
} \
|
160
160
|
else if ( rb_obj_is_kind_of(rstep, rb_cFloat) || \
|
161
161
|
rb_obj_is_kind_of(roffset, rb_cFloat)) { \
|
162
|
-
type offset = (NIL_P(roffset)) ? (type) 0 : from(roffset); \
|
162
|
+
type offset = (NIL_P(roffset)) ? (type) 0 : (type) from(roffset); \
|
163
163
|
double step = (NIL_P(rstep)) ? 1 : NUM2DBL(rstep); \
|
164
164
|
for (i=0; i<ca->elements; i++) { \
|
165
|
-
*p++ = from(rb_yield(rb_float_new(step*i+offset))); \
|
165
|
+
*p++ = (type) from(rb_yield(rb_float_new(step*i+offset))); \
|
166
166
|
} \
|
167
167
|
} \
|
168
168
|
else { \
|
169
|
-
type offset = (NIL_P(roffset)) ? (type) 0 : from(roffset); \
|
170
|
-
type step = (NIL_P(rstep)) ? (type) 1 : from(rstep); \
|
169
|
+
type offset = (NIL_P(roffset)) ? (type) 0 : (type) from(roffset); \
|
170
|
+
type step = (NIL_P(rstep)) ? (type) 1 : (type) from(rstep); \
|
171
171
|
for (i=0; i<ca->elements; i++) { \
|
172
|
-
*p++ = from(rb_yield(
|
172
|
+
*p++ = (type) from(rb_yield(SIZE2NUM(step*i+offset))); \
|
173
173
|
} \
|
174
174
|
} \
|
175
175
|
}
|
@@ -180,11 +180,11 @@ rb_ca_seq_bang_object (int argc, VALUE *argv, VALUE self)
|
|
180
180
|
volatile VALUE roffset, rstep, rval, rmethod = Qnil;
|
181
181
|
CArray *ca;
|
182
182
|
VALUE *p;
|
183
|
-
|
183
|
+
ca_size_t i;
|
184
184
|
|
185
185
|
Data_Get_Struct(self, CArray, ca);
|
186
186
|
|
187
|
-
rb_scan_args((argc>2) ? 2 : argc, argv, "02", &roffset, &rstep);
|
187
|
+
rb_scan_args((argc>2) ? 2 : argc, argv, "02", (VALUE *) &roffset, (VALUE *) &rstep);
|
188
188
|
|
189
189
|
if ( TYPE(rstep) == T_SYMBOL ) { /* e.g. a.seq("a", :succ) */
|
190
190
|
rmethod = rstep;
|
@@ -280,7 +280,7 @@ rb_ca_seq_bang_method (int argc, VALUE *argv, VALUE self)
|
|
280
280
|
return rb_ca_seq_bang_object(argc, argv, self);
|
281
281
|
}
|
282
282
|
|
283
|
-
rb_scan_args(argc, argv, "02", &roffset, &rstep);
|
283
|
+
rb_scan_args(argc, argv, "02", (VALUE *) &roffset, (VALUE *) &rstep);
|
284
284
|
|
285
285
|
ca_allocate(ca);
|
286
286
|
|
@@ -376,11 +376,11 @@ rb_ca_seq2 (VALUE self, int n, VALUE *args)
|
|
376
376
|
|
377
377
|
|
378
378
|
void
|
379
|
-
ca_swap_bytes (char *ptr,
|
379
|
+
ca_swap_bytes (char *ptr, ca_size_t bytes, ca_size_t elements)
|
380
380
|
{
|
381
381
|
char *p;
|
382
382
|
char val;
|
383
|
-
|
383
|
+
ca_size_t i;
|
384
384
|
|
385
385
|
#define SWAP_BYTE(a, b) (val = (a), (a) = (b), (b) = val)
|
386
386
|
|
@@ -568,7 +568,7 @@ rb_ca_swap_bytes (VALUE self)
|
|
568
568
|
boolean8_t *m = (ca->mask) ? (boolean8_t*) ca->mask->ptr : NULL; \
|
569
569
|
type min = (type) from(rmin); \
|
570
570
|
type max = (type) from(rmax); \
|
571
|
-
|
571
|
+
ca_size_t i; \
|
572
572
|
if ( m && rfval == CA_UNDEF) { \
|
573
573
|
for (i=ca->elements; i; i--, ptr++, m++) { \
|
574
574
|
if ( ! *m ) { \
|
@@ -579,7 +579,7 @@ rb_ca_swap_bytes (VALUE self)
|
|
579
579
|
} \
|
580
580
|
else { \
|
581
581
|
int has_fill = ! ( NIL_P(rfval) ); \
|
582
|
-
type fill = (has_fill) ? from(rfval) : (type) 0; \
|
582
|
+
type fill = (has_fill) ? (type) from(rfval) : (type) 0; \
|
583
583
|
if ( m ) { \
|
584
584
|
for (i=ca->elements; i; i--, ptr++) { \
|
585
585
|
if ( ! *m++ ) { \
|
@@ -624,7 +624,7 @@ rb_ca_trim_bang (int argc, VALUE *argv, VALUE self)
|
|
624
624
|
|
625
625
|
Data_Get_Struct(self, CArray, ca);
|
626
626
|
|
627
|
-
rb_scan_args(argc, argv, "21", &rmin, &rmax, &rfval);
|
627
|
+
rb_scan_args(argc, argv, "21", (VALUE *) &rmin, (VALUE *) &rmax, (VALUE *) &rfval);
|
628
628
|
|
629
629
|
if ( rfval == CA_UNDEF ) {
|
630
630
|
ca_create_mask(ca);
|
@@ -633,10 +633,10 @@ rb_ca_trim_bang (int argc, VALUE *argv, VALUE self)
|
|
633
633
|
ca_attach(ca);
|
634
634
|
|
635
635
|
switch ( ca->data_type ) {
|
636
|
-
case CA_INT8: proc_trim_bang(int8_t,
|
637
|
-
case CA_UINT8: proc_trim_bang(uint8_t,
|
638
|
-
case CA_INT16: proc_trim_bang(int16_t,
|
639
|
-
case CA_UINT16: proc_trim_bang(uint16_t,
|
636
|
+
case CA_INT8: proc_trim_bang(int8_t, NUM2INT); break;
|
637
|
+
case CA_UINT8: proc_trim_bang(uint8_t, NUM2UINT); break;
|
638
|
+
case CA_INT16: proc_trim_bang(int16_t, NUM2INT); break;
|
639
|
+
case CA_UINT16: proc_trim_bang(uint16_t, NUM2INT); break;
|
640
640
|
case CA_INT32: proc_trim_bang(int32_t, NUM2LONG); break;
|
641
641
|
case CA_UINT32: proc_trim_bang(uint32_t, NUM2LONG); break;
|
642
642
|
case CA_INT64: proc_trim_bang(int64_t, NUM2LONG); break;
|