carray 1.2.0 → 1.3.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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -1
  3. data/ca_iter_block.c +32 -30
  4. data/ca_iter_dimension.c +24 -22
  5. data/ca_iter_window.c +25 -23
  6. data/ca_obj_array.c +58 -56
  7. data/ca_obj_bitarray.c +27 -27
  8. data/ca_obj_bitfield.c +46 -45
  9. data/ca_obj_block.c +77 -72
  10. data/ca_obj_fake.c +20 -20
  11. data/ca_obj_farray.c +22 -22
  12. data/ca_obj_field.c +31 -30
  13. data/ca_obj_grid.c +63 -62
  14. data/ca_obj_mapping.c +35 -32
  15. data/ca_obj_object.c +54 -54
  16. data/ca_obj_reduce.c +13 -13
  17. data/ca_obj_refer.c +42 -39
  18. data/ca_obj_repeat.c +50 -47
  19. data/ca_obj_select.c +24 -24
  20. data/ca_obj_shift.c +61 -58
  21. data/ca_obj_transpose.c +52 -51
  22. data/ca_obj_unbound_repeat.c +28 -27
  23. data/ca_obj_window.c +77 -72
  24. data/carray.gemspec +0 -2
  25. data/carray.h +190 -163
  26. data/carray_access.c +137 -136
  27. data/carray_attribute.c +24 -13
  28. data/carray_call_cfunc.c +21 -21
  29. data/carray_cast.c +106 -110
  30. data/carray_cast_func.rb +17 -17
  31. data/carray_class.c +3 -3
  32. data/carray_conversion.c +15 -15
  33. data/carray_copy.c +27 -27
  34. data/carray_core.c +22 -21
  35. data/carray_element.c +55 -47
  36. data/carray_generate.c +32 -32
  37. data/carray_iterator.c +36 -35
  38. data/carray_loop.c +37 -37
  39. data/carray_mask.c +21 -21
  40. data/carray_math.rb +18 -18
  41. data/carray_numeric.c +1 -1
  42. data/carray_operator.c +19 -18
  43. data/carray_order.c +30 -30
  44. data/carray_random.c +34 -32
  45. data/carray_sort_addr.c +12 -12
  46. data/carray_stat.c +127 -127
  47. data/carray_stat_proc.rb +152 -141
  48. data/carray_test.c +16 -16
  49. data/carray_utils.c +58 -56
  50. data/ext/calculus/carray_calculus.c +19 -20
  51. data/ext/calculus/carray_interp.c +12 -11
  52. data/ext/fortio/lib/fortio/fortran_sequential.rb +2 -2
  53. data/ext/fortio/ruby_fortio.c +1 -1
  54. data/ext/imagemap/carray_imagemap.c +14 -14
  55. data/ext/narray/ca_wrap_narray.c +30 -21
  56. data/extconf.rb +5 -0
  57. data/lib/carray/base/basic.rb +4 -3
  58. data/lib/carray/base/serialize.rb +3 -3
  59. data/lib/carray/graphics/gnuplot.rb +10 -7
  60. data/lib/carray/io/csv.rb +14 -9
  61. data/lib/carray/io/imagemagick.rb +7 -0
  62. data/lib/carray/io/sqlite3.rb +6 -4
  63. data/mkmath.rb +20 -20
  64. data/ruby_carray.c +2 -0
  65. data/ruby_ccomplex.c +3 -3
  66. data/test/test_130.rb +23 -0
  67. data/test/test_ALL.rb +2 -1
  68. data/test/test_order.rb +3 -3
  69. data/test/test_stat.rb +2 -2
  70. data/version.h +4 -4
  71. metadata +4 -37
  72. data/examples/ex001.rb +0 -10
  73. data/examples/test-int.rb +0 -13
  74. data/lib/carray/autoload/autoload_io_excel.rb +0 -5
  75. data/lib/carray/io/excel.rb +0 -26
data/ca_obj_reduce.c CHANGED
@@ -24,9 +24,9 @@ static VALUE rb_cCAReduce;
24
24
  /* ------------------------------------------------------------------- */
25
25
 
26
26
  int
27
- ca_reduce_setup (CAReduce *ca, CArray *parent, int32_t count, int32_t offset)
27
+ ca_reduce_setup (CAReduce *ca, CArray *parent, ca_size_t count, ca_size_t offset)
28
28
  {
29
- int32_t elements;
29
+ ca_size_t elements;
30
30
 
31
31
  /* check arguments */
32
32
 
@@ -66,7 +66,7 @@ ca_reduce_setup (CAReduce *ca, CArray *parent, int32_t count, int32_t offset)
66
66
  }
67
67
 
68
68
  CAReduce *
69
- ca_reduce_new (CArray *parent, int32_t count, int32_t offset)
69
+ ca_reduce_new (CArray *parent, ca_size_t count, ca_size_t offset)
70
70
  {
71
71
  CAReduce *ca = ALLOC(CAReduce);
72
72
  ca_reduce_setup(ca, parent, count, offset);
@@ -94,21 +94,21 @@ ca_reduce_func_clone (void *ap)
94
94
  }
95
95
 
96
96
  static char *
97
- ca_reduce_func_ptr_at_addr (void *ap, int32_t addr)
97
+ ca_reduce_func_ptr_at_addr (void *ap, ca_size_t addr)
98
98
  {
99
99
  CAReduce *ca = (CAReduce *) ap;
100
100
  return ca->ptr + addr;
101
101
  }
102
102
 
103
103
  static char *
104
- ca_reduce_func_ptr_at_index (void *ap, int32_t *idx)
104
+ ca_reduce_func_ptr_at_index (void *ap, ca_size_t *idx)
105
105
  {
106
106
  CAReduce *ca = (CAReduce *) ap;
107
107
  return ca_func[CA_OBJ_ARRAY].ptr_at_index(ca, idx);
108
108
  }
109
109
 
110
110
  static void
111
- ca_reduce_func_fetch_addr (void *ap, int32_t addr, void *ptr)
111
+ ca_reduce_func_fetch_addr (void *ap, ca_size_t addr, void *ptr)
112
112
  {
113
113
  CAReduce *ca = (CAReduce *) ap;
114
114
  char q;
@@ -124,10 +124,10 @@ ca_reduce_func_fetch_addr (void *ap, int32_t addr, void *ptr)
124
124
  }
125
125
 
126
126
  static void
127
- ca_reduce_func_store_addr (void *ap, int32_t addr, void *ptr)
127
+ ca_reduce_func_store_addr (void *ap, ca_size_t addr, void *ptr)
128
128
  {
129
129
  CAReduce *ca = (CAReduce *) ap;
130
- int32_t i;
130
+ ca_size_t i;
131
131
  for (i=0; i<ca->count; i++) {
132
132
  ca_store_addr(ca->parent, addr*ca->count+i+ca->offset, ptr);
133
133
  }
@@ -147,7 +147,7 @@ ca_reduce_func_attach (void *ap)
147
147
  {
148
148
  CAReduce *ca = (CAReduce *) ap;
149
149
  char *p;
150
- int32_t i;
150
+ ca_size_t i;
151
151
  ca_attach(ca->parent);
152
152
  /* ca->ptr = ALLOC_N(char, ca->elements); */
153
153
  ca->ptr = malloc_with_check(ca_length(ca));
@@ -163,7 +163,7 @@ ca_reduce_func_sync (void *ap)
163
163
  {
164
164
  CAReduce *ca = (CAReduce *) ap;
165
165
  char *p;
166
- int32_t i;
166
+ ca_size_t i;
167
167
  p = ca->ptr;
168
168
  ca_attach(ca->parent);
169
169
  for (i=0; i<ca->elements; i++) {
@@ -187,7 +187,7 @@ static void
187
187
  ca_reduce_func_copy_data (void *ap, void *ptr)
188
188
  {
189
189
  CAReduce *ca = (CAReduce *) ap;
190
- int32_t i;
190
+ ca_size_t i;
191
191
  char *p;
192
192
  ca_attach(ca->parent);
193
193
  p = ptr;
@@ -203,7 +203,7 @@ ca_reduce_func_sync_data (void *ap, void *ptr)
203
203
  {
204
204
  CAReduce *ca = (CAReduce *) ap;
205
205
  char *p;
206
- int32_t i;
206
+ ca_size_t i;
207
207
  ca_attach(ca->parent);
208
208
  p = ptr;
209
209
  for (i=0; i<ca->elements; i++) {
@@ -218,7 +218,7 @@ static void
218
218
  ca_reduce_func_fill_data (void *ap, void *ptr)
219
219
  {
220
220
  CAReduce *ca = (CAReduce *) ap;
221
- int32_t i;
221
+ ca_size_t i;
222
222
  ca_attach(ca->parent);
223
223
  for (i=0; i<ca->elements; i++) {
224
224
  ca_reduce_func_store_addr(ca, i, ptr);
data/ca_obj_refer.c CHANGED
@@ -21,11 +21,11 @@ VALUE rb_cCARefer;
21
21
 
22
22
  static int
23
23
  ca_refer_setup (CARefer *ca, CArray *parent,
24
- int8_t data_type, int8_t rank, int32_t *dim, int32_t bytes,
25
- int32_t offset)
24
+ int8_t data_type, int8_t rank, ca_size_t *dim, ca_size_t bytes,
25
+ ca_size_t offset)
26
26
  {
27
- int32_t elements, ratio;
28
- int32_t i;
27
+ ca_size_t elements, ratio;
28
+ int8_t i;
29
29
  int is_deformed;
30
30
 
31
31
  CA_CHECK_DATA_TYPE(data_type);
@@ -82,7 +82,7 @@ ca_refer_setup (CARefer *ca, CArray *parent,
82
82
  ca->rank = rank;
83
83
  ca->bytes = bytes;
84
84
  ca->elements = elements;
85
- ca->dim = ALLOC_N(int32_t, rank);
85
+ ca->dim = ALLOC_N(ca_size_t, rank);
86
86
  ca->ptr = NULL;
87
87
  ca->mask = NULL;
88
88
  ca->mask0 = NULL;
@@ -99,7 +99,7 @@ ca_refer_setup (CARefer *ca, CArray *parent,
99
99
  ca->is_deformed = 1;
100
100
  }
101
101
 
102
- memcpy(ca->dim, dim, rank * sizeof(int32_t));
102
+ memcpy(ca->dim, dim, rank * sizeof(ca_size_t));
103
103
 
104
104
  if ( ca_is_scalar(parent) ) {
105
105
  ca_set_flag(ca, CA_FLAG_SCALAR);
@@ -110,8 +110,8 @@ ca_refer_setup (CARefer *ca, CArray *parent,
110
110
 
111
111
  CARefer *
112
112
  ca_refer_new (CArray *parent,
113
- int8_t data_type, int8_t rank, int32_t *dim, int32_t bytes,
114
- int32_t offset)
113
+ int8_t data_type, int8_t rank, ca_size_t *dim, ca_size_t bytes,
114
+ ca_size_t offset)
115
115
  {
116
116
  CARefer *ca = ALLOC(CARefer);
117
117
  ca_refer_setup(ca, parent, data_type, rank, dim, bytes, offset);
@@ -141,10 +141,10 @@ ca_refer_func_clone (void *ap)
141
141
  }
142
142
 
143
143
  static char *
144
- ca_refer_func_ptr_at_addr (void *ap, int32_t addr)
144
+ ca_refer_func_ptr_at_addr (void *ap, ca_size_t addr)
145
145
  {
146
146
  CARefer *ca = (CARefer *) ap;
147
- int major, minor;
147
+ ca_size_t major, minor;
148
148
  switch ( ca->is_deformed ) {
149
149
  case 0:
150
150
  case 1:
@@ -161,11 +161,12 @@ ca_refer_func_ptr_at_addr (void *ap, int32_t addr)
161
161
  }
162
162
 
163
163
  static char *
164
- ca_refer_func_ptr_at_index (void *ap, int32_t *idx)
164
+ ca_refer_func_ptr_at_index (void *ap, ca_size_t *idx)
165
165
  {
166
166
  CARefer *ca = (CARefer*) ap;
167
- int32_t *dim = ca->dim;
168
- int32_t n, i;
167
+ ca_size_t *dim = ca->dim;
168
+ int8_t i;
169
+ ca_size_t n;
169
170
  n = idx[0]; /* n = idx[0]*dim[1]*dim[2]*...*dim[rank-1] */
170
171
  for (i=1; i<ca->rank; i++) { /* + idx[1]*dim[1]*dim[2]*...*dim[rank-1] */
171
172
  n = dim[i]*n+idx[i]; /* ... + idx[rank-2]*dim[1] + idx[rank-1] */
@@ -174,10 +175,10 @@ ca_refer_func_ptr_at_index (void *ap, int32_t *idx)
174
175
  }
175
176
 
176
177
  static void
177
- ca_refer_func_fetch_addr (void *ap, int32_t addr, void *ptr)
178
+ ca_refer_func_fetch_addr (void *ap, ca_size_t addr, void *ptr)
178
179
  {
179
180
  CARefer *ca = (CARefer *) ap;
180
- int major, minor;
181
+ ca_size_t major, minor;
181
182
  switch ( ca->is_deformed ) {
182
183
  case 0:
183
184
  ca_fetch_addr(ca->parent, addr, ptr);
@@ -213,12 +214,13 @@ ca_refer_func_fetch_addr (void *ap, int32_t addr, void *ptr)
213
214
  }
214
215
 
215
216
  static void
216
- ca_refer_func_fetch_index (void *ap, int32_t *idx, void *ptr)
217
+ ca_refer_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
217
218
  {
218
219
  CARefer *ca = (CARefer *) ap;
219
220
  if ( ca->is_deformed ) {
220
- int32_t *dim = ca->dim;
221
- int32_t n, i;
221
+ ca_size_t *dim = ca->dim;
222
+ int8_t i;
223
+ ca_size_t n;
222
224
  n = idx[0];
223
225
  for (i=1; i<ca->rank; i++) {
224
226
  n = dim[i]*n+idx[i];
@@ -231,10 +233,10 @@ ca_refer_func_fetch_index (void *ap, int32_t *idx, void *ptr)
231
233
  }
232
234
 
233
235
  static void
234
- ca_refer_func_store_addr (void *ap, int32_t addr, void *ptr)
236
+ ca_refer_func_store_addr (void *ap, ca_size_t addr, void *ptr)
235
237
  {
236
238
  CARefer *ca = (CARefer *) ap;
237
- int major, minor;
239
+ ca_size_t major, minor;
238
240
  switch ( ca->is_deformed ) {
239
241
  case 0:
240
242
  ca_store_addr(ca->parent, addr, ptr);
@@ -273,12 +275,13 @@ ca_refer_func_store_addr (void *ap, int32_t addr, void *ptr)
273
275
  }
274
276
 
275
277
  static void
276
- ca_refer_func_store_index (void *ap, int32_t *idx, void *ptr)
278
+ ca_refer_func_store_index (void *ap, ca_size_t *idx, void *ptr)
277
279
  {
278
280
  CARefer *ca = (CARefer *) ap;
279
281
  if ( ca->is_deformed ) {
280
- int32_t *dim = ca->dim;
281
- int32_t n, i;
282
+ ca_size_t *dim = ca->dim;
283
+ int8_t i;
284
+ ca_size_t n;
282
285
  n = idx[0];
283
286
  for (i=1; i<ca->rank; i++) {
284
287
  n = dim[i]*n+idx[i];
@@ -354,8 +357,8 @@ ca_refer_func_sync_data (void *ap, void *ptr)
354
357
 
355
358
  #define proc_fill_bang_fixlen() \
356
359
  { \
357
- int32_t i; \
358
- int32_t bytes = ca->bytes; \
360
+ ca_size_t i; \
361
+ ca_size_t bytes = ca->bytes; \
359
362
  char *p = ca->parent->ptr + ca->parent->bytes * ca->offset; \
360
363
  for (i=ca->elements; i; i--, p+=bytes) { \
361
364
  memcpy(p, val, bytes); \
@@ -364,7 +367,7 @@ ca_refer_func_sync_data (void *ap, void *ptr)
364
367
 
365
368
  #define proc_fill_bang(type) \
366
369
  { \
367
- int32_t i; \
370
+ ca_size_t i; \
368
371
  type *p = (type *)(ca->parent->ptr + ca->parent->bytes * ca->offset); \
369
372
  type v = *(type *)val; \
370
373
  for (i=ca->elements; i; i--, p++) { \
@@ -421,7 +424,7 @@ ca_refer_func_create_mask (void *ap)
421
424
  CA_BOOLEAN, ca->rank, ca->dim, 0, ca->offset);
422
425
  }
423
426
  else if ( ca->is_deformed == -2 ) {
424
- int32_t count[CA_RANK_MAX];
427
+ ca_size_t count[CA_RANK_MAX];
425
428
  int i;
426
429
  for (i=0; i<ca->parent->rank; i++) {
427
430
  count[i] = 0;
@@ -512,9 +515,9 @@ rb_ca_refer (int argc, VALUE *argv, VALUE self)
512
515
  CARefer *cr;
513
516
  int8_t data_type;
514
517
  int8_t rank;
515
- int32_t dim[CA_RANK_MAX];
516
- int32_t bytes, offset = 0;
517
- int32_t i;
518
+ ca_size_t dim[CA_RANK_MAX];
519
+ ca_size_t bytes, offset = 0;
520
+ int8_t i;
518
521
 
519
522
  Data_Get_Struct(self, CArray, ca);
520
523
 
@@ -532,10 +535,10 @@ rb_ca_refer (int argc, VALUE *argv, VALUE self)
532
535
  }
533
536
  else {
534
537
  volatile VALUE rtype, rdim, ropt, rbytes = Qnil, roffset = Qnil;
535
- int32_t elements;
538
+ ca_size_t elements;
536
539
 
537
540
  ropt = rb_pop_options(&argc, &argv);
538
- rb_scan_args(argc, argv, "11", &rtype, &rdim);
541
+ rb_scan_args(argc, argv, "11", (VALUE *) &rtype, (VALUE *) &rdim);
539
542
  rb_scan_options(ropt, "bytes,offset", &rbytes, &roffset);
540
543
 
541
544
  if ( NIL_P(rbytes) ) {
@@ -559,12 +562,12 @@ rb_ca_refer (int argc, VALUE *argv, VALUE self)
559
562
 
560
563
  elements = 1;
561
564
  for (i=0; i<rank; i++) {
562
- dim[i] = NUM2INT(rb_ary_entry(rdim, i));
565
+ dim[i] = NUM2SIZE(rb_ary_entry(rdim, i));
563
566
  elements *= dim[i];
564
567
  }
565
568
 
566
569
  if ( ! NIL_P(roffset) ) {
567
- offset = NUM2LONG(roffset);
570
+ offset = NUM2SIZE(roffset);
568
571
  }
569
572
 
570
573
  cr = ca_refer_new((CArray*)ca, data_type, rank, dim, bytes, offset);
@@ -581,18 +584,18 @@ rb_ca_refer (int argc, VALUE *argv, VALUE self)
581
584
 
582
585
  VALUE
583
586
  rb_ca_refer_new (VALUE self,
584
- int8_t data_type, int8_t rank, int32_t *dim, int32_t bytes,
585
- int32_t offset)
587
+ int8_t data_type, int8_t rank, ca_size_t *dim, ca_size_t bytes,
588
+ ca_size_t offset)
586
589
  {
587
590
  volatile VALUE list, rdim, ropt;
588
591
  CArray *ca;
589
- int32_t i;
592
+ int8_t i;
590
593
 
591
594
  Data_Get_Struct(self, CArray, ca);
592
595
 
593
596
  rdim = rb_ary_new2(rank);
594
597
  for (i=0; i<rank; i++) {
595
- rb_ary_store(rdim, i, INT2NUM(dim[i]));
598
+ rb_ary_store(rdim, i, SIZE2NUM(dim[i]));
596
599
  }
597
600
 
598
601
  list = rb_ary_new2(3);
@@ -604,7 +607,7 @@ rb_ca_refer_new (VALUE self,
604
607
  }
605
608
  rb_ary_store(list, 1, rdim);
606
609
  ropt = rb_hash_new();
607
- rb_set_options(ropt, "bytes,offset", INT2NUM(bytes), INT2NUM(offset));
610
+ rb_set_options(ropt, "bytes,offset", SIZE2NUM(bytes), SIZE2NUM(offset));
608
611
  rb_ary_store(list, 2, ropt);
609
612
 
610
613
  return rb_ca_refer(3, RARRAY_PTR(list), self);
data/ca_obj_repeat.c CHANGED
@@ -20,10 +20,10 @@ VALUE rb_cCARepeat;
20
20
  */
21
21
 
22
22
  int
23
- ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, int32_t *count)
23
+ ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, ca_size_t *count)
24
24
  {
25
25
  int8_t data_type;
26
- int32_t elements, bytes, nrpt, repeat_level, repeat_num,
26
+ ca_size_t elements, bytes, nrpt, repeat_level, repeat_num,
27
27
  contig_level, contig_num, data_rank;
28
28
  int i, j;
29
29
 
@@ -78,12 +78,12 @@ ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, int32_t *count)
78
78
  ca->elements = elements;
79
79
  ca->ptr = NULL;
80
80
  ca->mask = NULL;
81
- ca->dim = ALLOC_N(int32_t, rank);
81
+ ca->dim = ALLOC_N(ca_size_t, rank);
82
82
 
83
83
  ca->parent = parent;
84
84
  ca->attach = 0;
85
85
  ca->nosync = 0;
86
- ca->count = ALLOC_N(int32_t, rank);
86
+ ca->count = ALLOC_N(ca_size_t, rank);
87
87
  ca->repeat_level = repeat_level;
88
88
  ca->repeat_num = repeat_num;
89
89
  ca->contig_level = contig_level;
@@ -99,7 +99,7 @@ ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, int32_t *count)
99
99
  }
100
100
  }
101
101
 
102
- memcpy(ca->count, count, rank * sizeof(int32_t));
102
+ memcpy(ca->count, count, rank * sizeof(ca_size_t));
103
103
 
104
104
  ca_set_flag(ca, CA_FLAG_READ_ONLY);
105
105
 
@@ -112,7 +112,7 @@ ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, int32_t *count)
112
112
 
113
113
 
114
114
  CARepeat *
115
- ca_repeat_new (CArray *parent, int8_t rank, int32_t *count)
115
+ ca_repeat_new (CArray *parent, int8_t rank, ca_size_t *count)
116
116
  {
117
117
  CARepeat *ca = ALLOC(CARepeat);
118
118
  ca_repeat_setup(ca, parent, rank, count);
@@ -145,30 +145,31 @@ ca_repeat_func_clone (void *ap)
145
145
  }
146
146
 
147
147
  static char *
148
- ca_repeat_func_ptr_at_addr (void *ap, int32_t addr)
148
+ ca_repeat_func_ptr_at_addr (void *ap, ca_size_t addr)
149
149
  {
150
150
  CARepeat *ca = (CARepeat *) ap;
151
151
  if ( ca->ptr ) {
152
152
  return ca->ptr + ca->bytes * addr;
153
153
  }
154
154
  else {
155
- int32_t idx[CA_RANK_MAX];
155
+ ca_size_t idx[CA_RANK_MAX];
156
156
  ca_addr2index((CArray *)ca, addr, idx);
157
157
  return ca_ptr_at_index(ca, idx);
158
158
  }
159
159
  }
160
160
 
161
161
  static char *
162
- ca_repeat_func_ptr_at_index (void *ap, int32_t *idx)
162
+ ca_repeat_func_ptr_at_index (void *ap, ca_size_t *idx)
163
163
  {
164
164
  CARepeat *ca = (CARepeat *) ap;
165
165
  if ( ca->ptr ) {
166
166
  return ca_array_func_ptr_at_index(ca, idx);
167
167
  }
168
168
  else {
169
- int32_t *count = ca->count;
170
- int32_t *dim0 = ca->parent->dim;
171
- int32_t n, i, j;
169
+ ca_size_t *count = ca->count;
170
+ ca_size_t *dim0 = ca->parent->dim;
171
+ int8_t i;
172
+ ca_size_t n, j;
172
173
 
173
174
  j = 0;
174
175
  n = 0;
@@ -189,12 +190,13 @@ ca_repeat_func_ptr_at_index (void *ap, int32_t *idx)
189
190
  }
190
191
 
191
192
  static void
192
- ca_repeat_func_fetch_index (void *ap, int32_t *idx, void *ptr)
193
+ ca_repeat_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
193
194
  {
194
195
  CARepeat *ca = (CARepeat *) ap;
195
- int32_t *count = ca->count;
196
- int32_t idx0[CA_RANK_MAX];
197
- int32_t n, i, j;
196
+ ca_size_t *count = ca->count;
197
+ ca_size_t idx0[CA_RANK_MAX];
198
+ int8_t i;
199
+ ca_size_t n, j;
198
200
  j = 0;
199
201
  n = 0;
200
202
  for (i=0; i<ca->rank; i++) {
@@ -206,12 +208,13 @@ ca_repeat_func_fetch_index (void *ap, int32_t *idx, void *ptr)
206
208
  }
207
209
 
208
210
  static void
209
- ca_repeat_func_store_index (void *ap, int32_t *idx, void *ptr)
211
+ ca_repeat_func_store_index (void *ap, ca_size_t *idx, void *ptr)
210
212
  {
211
213
  CARepeat *ca = (CARepeat *) ap;
212
- int32_t *count = ca->count;
213
- int32_t idx0[CA_RANK_MAX];
214
- int32_t n, i, j;
214
+ ca_size_t *count = ca->count;
215
+ ca_size_t idx0[CA_RANK_MAX];
216
+ int8_t i;
217
+ ca_size_t n, j;
215
218
  j = 0;
216
219
  n = 0;
217
220
  for (i=0; i<ca->rank; i++) {
@@ -329,7 +332,7 @@ ca_operation_function_t ca_repeat_func = {
329
332
  /* ------------------------------------------------------------------- */
330
333
 
331
334
  static void
332
- memfill (void *dp, void *sp, size_t bytes, size_t n)
335
+ memfill (void *dp, void *sp, ca_size_t bytes, ca_size_t n)
333
336
  {
334
337
  switch ( bytes ) {
335
338
  case 1:
@@ -351,7 +354,7 @@ memfill (void *dp, void *sp, size_t bytes, size_t n)
351
354
  break;
352
355
  }
353
356
  default: {
354
- int32_t i;
357
+ ca_size_t i;
355
358
  char *p = (char *) dp, *q = (char *) sp;
356
359
  for (i=0; i<n; i++) {
357
360
  memcpy(p, q, bytes);
@@ -363,10 +366,10 @@ memfill (void *dp, void *sp, size_t bytes, size_t n)
363
366
 
364
367
  static void
365
368
  ca_repeat_attach_loop1 (CARepeat *ca, int8_t level, int8_t level0,
366
- int32_t *idx, int32_t *idx0)
369
+ ca_size_t *idx, ca_size_t *idx0)
367
370
  {
368
- int32_t *count = ca->count;
369
- int32_t i;
371
+ ca_size_t *count = ca->count;
372
+ ca_size_t i;
370
373
 
371
374
  if ( level == ca->contig_level ) {
372
375
  if ( ca->contig_num == 1 ) {
@@ -402,9 +405,9 @@ ca_repeat_attach_loop1 (CARepeat *ca, int8_t level, int8_t level0,
402
405
  static void
403
406
  ca_repeat_attach (CARepeat *ca)
404
407
  {
405
- int32_t idx[CA_RANK_MAX];
406
- int32_t idx0[CA_RANK_MAX];
407
- int32_t i;
408
+ ca_size_t idx[CA_RANK_MAX];
409
+ ca_size_t idx0[CA_RANK_MAX];
410
+ ca_size_t i;
408
411
  char *dp, *sp;
409
412
 
410
413
  for (i=0; i<ca->rank; i++) {
@@ -422,10 +425,10 @@ ca_repeat_attach (CARepeat *ca)
422
425
 
423
426
  static void
424
427
  ca_repeat_sync_loop (CARepeat *ca, int8_t level, int8_t level0,
425
- int32_t *idx, int32_t *idx0)
428
+ ca_size_t *idx, ca_size_t *idx0)
426
429
  {
427
- int32_t *count = ca->count;
428
- int32_t i;
430
+ ca_size_t *count = ca->count;
431
+ ca_size_t i;
429
432
 
430
433
  if ( level == ca->contig_level ) {
431
434
  if ( ca->contig_num == 1 ) {
@@ -453,9 +456,9 @@ ca_repeat_sync_loop (CARepeat *ca, int8_t level, int8_t level0,
453
456
  static void
454
457
  ca_repeat_sync (CARepeat *ca)
455
458
  {
456
- int32_t idx[CA_RANK_MAX];
457
- int32_t idx0[CA_RANK_MAX];
458
- int32_t i;
459
+ ca_size_t idx[CA_RANK_MAX];
460
+ ca_size_t idx0[CA_RANK_MAX];
461
+ int8_t i;
459
462
  for (i=0; i<ca->rank; i++) {
460
463
  idx[i] = 0;
461
464
  idx0[i] = 0;
@@ -472,7 +475,7 @@ ca_repeat_fill (CARepeat *ca, char *ptr)
472
475
  /* ------------------------------------------------------------------- */
473
476
 
474
477
  VALUE
475
- rb_ca_repeat_new (VALUE cary, int8_t rank, int32_t *count)
478
+ rb_ca_repeat_new (VALUE cary, int8_t rank, ca_size_t *count)
476
479
  {
477
480
  volatile VALUE obj;
478
481
  CArray *parent;
@@ -491,9 +494,9 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
491
494
  {
492
495
  volatile VALUE obj;
493
496
  CArray *ca;
494
- int32_t count[CA_RANK_MAX];
495
- int32_t repeat;
496
- int32_t i;
497
+ ca_size_t count[CA_RANK_MAX];
498
+ ca_size_t repeat;
499
+ ca_size_t i;
497
500
 
498
501
  Data_Get_Struct(self, CArray, ca);
499
502
 
@@ -504,7 +507,7 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
504
507
  ) ) {
505
508
  volatile VALUE args;
506
509
  CArray *ct;
507
- int32_t rank, dim[CA_RANK_MAX];
510
+ ca_size_t rank, dim[CA_RANK_MAX];
508
511
  int k;
509
512
  if ( argv[0] == ID2SYM(rb_intern("%") ) ) {
510
513
  Data_Get_Struct(argv[1], CArray, ct);
@@ -521,7 +524,7 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
521
524
  k = 0;
522
525
  for (i=0; i<ct->rank; i++) {
523
526
  if ( ca->dim[k] == 1 ) {
524
- rb_ary_push(args, INT2NUM(ct->dim[i]));
527
+ rb_ary_push(args, SIZE2NUM(ct->dim[i]));
525
528
  k++;
526
529
  }
527
530
  else if ( ct->dim[i] == ca->dim[k] ) {
@@ -530,7 +533,7 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
530
533
  k++; rank++;
531
534
  }
532
535
  else {
533
- rb_ary_push(args, INT2NUM(ct->dim[i]));
536
+ rb_ary_push(args, SIZE2NUM(ct->dim[i]));
534
537
  }
535
538
  }
536
539
  if ( rank != ca->rank ) {
@@ -541,7 +544,7 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
541
544
  k = ca->rank - 1;
542
545
  for (i=ct->rank-1; i>=0; i--) {
543
546
  if ( ca->dim[k] == 1 ) {
544
- rb_ary_unshift(args, INT2NUM(ct->dim[i]));
547
+ rb_ary_unshift(args, SIZE2NUM(ct->dim[i]));
545
548
  k--;
546
549
  }
547
550
  else if ( ct->dim[i] == ca->dim[k] ) {
@@ -549,7 +552,7 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
549
552
  k--;
550
553
  }
551
554
  else {
552
- rb_ary_unshift(args, INT2NUM(ct->dim[i]));
555
+ rb_ary_unshift(args, SIZE2NUM(ct->dim[i]));
553
556
  }
554
557
  }
555
558
  if ( k != 0 ) {
@@ -563,7 +566,7 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
563
566
  self = rb_ca_refer_new(self, ca->data_type, rank, dim, ca->bytes, 0);
564
567
  }
565
568
  }
566
- return rb_ca_repeat(RARRAY_LEN(args), RARRAY_PTR(args), self);
569
+ return rb_ca_repeat((int)RARRAY_LEN(args), RARRAY_PTR(args), self);
567
570
  }
568
571
 
569
572
  repeat = 1;
@@ -577,7 +580,7 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
577
580
  }
578
581
  }
579
582
  else {
580
- count[i] = NUM2INT(argv[i]);
583
+ count[i] = NUM2SIZE(argv[i]);
581
584
  if ( count[i] == 0 ) {
582
585
  rb_raise(rb_eArgError,
583
586
  "zero repeat count specified in creating CARepeat object");
@@ -587,8 +590,8 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
587
590
  }
588
591
 
589
592
  if ( repeat == 1 ) {
590
- int32_t dim[CA_RANK_MAX];
591
- int j = 0;
593
+ ca_size_t dim[CA_RANK_MAX];
594
+ int8_t j = 0;
592
595
  for (i=0; i<argc; i++) {
593
596
  if ( count[i] == 0 ) {
594
597
  dim[i] = ca->dim[j];