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_mapping.c CHANGED
@@ -23,9 +23,9 @@ typedef struct {
23
23
  int8_t data_type;
24
24
  int8_t rank;
25
25
  int32_t flags;
26
- int32_t bytes;
27
- int32_t elements;
28
- int32_t *dim;
26
+ ca_size_t bytes;
27
+ ca_size_t elements;
28
+ ca_size_t *dim;
29
29
  char *ptr;
30
30
  CArray *mask;
31
31
  CArray *parent;
@@ -50,11 +50,11 @@ int
50
50
  ca_mapping_setup (CAMapping *ca, CArray *parent, CArray *mapper, int share)
51
51
  {
52
52
  int8_t rank, data_type;
53
- int32_t elements, bytes;
54
- int32_t *p;
55
- int32_t i;
53
+ ca_size_t elements, bytes;
54
+ ca_size_t *p;
55
+ ca_size_t i;
56
56
 
57
- ca_check_type(mapper, CA_INT32);
57
+ ca_check_type(mapper, CA_SIZE);
58
58
 
59
59
  data_type = parent->data_type;
60
60
  bytes = parent->bytes;
@@ -72,13 +72,13 @@ ca_mapping_setup (CAMapping *ca, CArray *parent, CArray *mapper, int share)
72
72
  ca->rank = rank;
73
73
  ca->elements = elements;
74
74
  ca->mask = NULL;
75
- ca->dim = ALLOC_N(int32_t, rank);
75
+ ca->dim = ALLOC_N(ca_size_t, rank);
76
76
 
77
77
  ca->parent = parent;
78
78
  ca->attach = 0;
79
79
  ca->nosync = 0;
80
80
 
81
- memcpy(ca->dim, mapper->dim, rank * sizeof(int32_t));
81
+ memcpy(ca->dim, mapper->dim, rank * sizeof(ca_size_t));
82
82
 
83
83
  if ( share ) {
84
84
  ca_set_flag(ca, CA_FLAG_SHARE_INDEX);
@@ -97,7 +97,7 @@ ca_mapping_setup (CAMapping *ca, CArray *parent, CArray *mapper, int share)
97
97
  ca_create_mask(ca);
98
98
  }
99
99
 
100
- p = (int32_t*)ca->mapper->ptr;
100
+ p = (ca_size_t*)ca->mapper->ptr;
101
101
  for (i=0; i<ca->elements; i++) {
102
102
  CA_CHECK_INDEX(*p, parent->elements);
103
103
  p++;
@@ -154,11 +154,11 @@ ca_mapping_func_clone (void *ap)
154
154
  }
155
155
 
156
156
  static char *
157
- ca_mapping_func_ptr_at_addr (void *ap, int32_t addr)
157
+ ca_mapping_func_ptr_at_addr (void *ap, ca_size_t addr)
158
158
  {
159
159
  CAMapping *ca = (CAMapping *) ap;
160
160
  if ( ! ca->ptr ) {
161
- int32_t idx[CA_RANK_MAX];
161
+ ca_size_t idx[CA_RANK_MAX];
162
162
  ca_addr2index((CArray *)ca, addr, idx);
163
163
  return ca_ptr_at_index(ca, idx);
164
164
  }
@@ -168,17 +168,18 @@ ca_mapping_func_ptr_at_addr (void *ap, int32_t addr)
168
168
  }
169
169
 
170
170
  static char *
171
- ca_mapping_func_ptr_at_index (void *ap, int32_t *idx)
171
+ ca_mapping_func_ptr_at_index (void *ap, ca_size_t *idx)
172
172
  {
173
173
  CAMapping *ca = (CAMapping *) ap;
174
174
  if ( ! ca->ptr ) {
175
- int32_t *dim = ca->dim;
176
- int32_t n, i;
175
+ ca_size_t *dim = ca->dim;
176
+ int8_t i;
177
+ ca_size_t n;
177
178
  n = idx[0];
178
179
  for (i=1; i<ca->rank; i++) {
179
180
  n = dim[i]*n+idx[i];
180
181
  }
181
- n = *(int32_t*) ca_ptr_at_addr(ca->mapper, n);
182
+ n = *(ca_size_t*) ca_ptr_at_addr(ca->mapper, n);
182
183
  if ( ca->parent->ptr == NULL ) {
183
184
  return ca_ptr_at_addr(ca->parent, n);
184
185
  }
@@ -192,30 +193,32 @@ ca_mapping_func_ptr_at_index (void *ap, int32_t *idx)
192
193
  }
193
194
 
194
195
  static void
195
- ca_mapping_func_fetch_index (void *ap, int32_t *idx, void *ptr)
196
+ ca_mapping_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
196
197
  {
197
198
  CAMapping *ca = (CAMapping *) ap;
198
- int32_t *dim = ca->dim;
199
- int32_t n, i;
199
+ ca_size_t *dim = ca->dim;
200
+ int8_t i;
201
+ ca_size_t n;
200
202
  n = idx[0];
201
203
  for (i=1; i<ca->rank; i++) {
202
204
  n = dim[i]*n+idx[i];
203
205
  }
204
- n = *(int32_t*) ca_ptr_at_addr(ca->mapper, n);
206
+ n = *(ca_size_t*) ca_ptr_at_addr(ca->mapper, n);
205
207
  ca_fetch_addr(ca->parent, n, ptr);
206
208
  }
207
209
 
208
210
  static void
209
- ca_mapping_func_store_index (void *ap, int32_t *idx, void *ptr)
211
+ ca_mapping_func_store_index (void *ap, ca_size_t *idx, void *ptr)
210
212
  {
211
213
  CAMapping *ca = (CAMapping *) ap;
212
- int32_t *dim = ca->dim;
213
- int32_t n, i;
214
+ ca_size_t *dim = ca->dim;
215
+ int8_t i;
216
+ ca_size_t n;
214
217
  n = idx[0];
215
218
  for (i=1; i<ca->rank; i++) {
216
219
  n = dim[i]*n+idx[i];
217
220
  }
218
- n = *(int32_t*) ca_ptr_at_addr(ca->mapper, n);
221
+ n = *(ca_size_t*) ca_ptr_at_addr(ca->mapper, n);
219
222
  ca_store_addr(ca->parent, n, ptr);
220
223
  }
221
224
 
@@ -331,8 +334,8 @@ ca_operation_function_t ca_mapping_func = {
331
334
  static void
332
335
  ca_mapping_attach (CAMapping *ca)
333
336
  {
334
- int32_t *ip = (int32_t*) ca_ptr_at_addr(ca->mapper, 0);
335
- int32_t i;
337
+ ca_size_t *ip = (ca_size_t*) ca_ptr_at_addr(ca->mapper, 0);
338
+ ca_size_t i;
336
339
 
337
340
  #define proc_mapping_attach(type) \
338
341
  { \
@@ -409,8 +412,8 @@ ca_mapping_attach (CAMapping *ca)
409
412
  static void
410
413
  ca_mapping_sync (CAMapping *ca)
411
414
  {
412
- int32_t *ip = (int32_t*) ca_ptr_at_addr(ca->mapper, 0);
413
- int32_t i;
415
+ ca_size_t *ip = (ca_size_t*) ca_ptr_at_addr(ca->mapper, 0);
416
+ ca_size_t i;
414
417
 
415
418
  switch ( ca->bytes ) {
416
419
  case 1:
@@ -478,8 +481,8 @@ ca_mapping_sync (CAMapping *ca)
478
481
  static void
479
482
  ca_mapping_fill (CAMapping *ca, char *ptr)
480
483
  {
481
- int32_t *ip = (int32_t*) ca_ptr_at_addr(ca->mapper, 0);
482
- int32_t i;
484
+ ca_size_t *ip = (ca_size_t*) ca_ptr_at_addr(ca->mapper, 0);
485
+ ca_size_t i;
483
486
 
484
487
  switch ( ca->bytes ) {
485
488
  case 1:
@@ -569,10 +572,10 @@ rb_ca_mapping (int argc, VALUE *argv, VALUE self)
569
572
  CArray *mapper;
570
573
  Data_Get_Struct(self, CArray, ca);
571
574
 
572
- rb_scan_args(argc, argv, "1", &rmapper);
575
+ rb_scan_args(argc, argv, "1", (VALUE *) &rmapper);
573
576
  rb_check_carray_object(rmapper);
574
577
 
575
- mapper = ca_wrap_readonly(rmapper, CA_INT32);
578
+ mapper = ca_wrap_readonly(rmapper, CA_SIZE);
576
579
 
577
580
  obj = rb_ca_mapping_new(self, mapper);
578
581
 
data/ca_obj_object.c CHANGED
@@ -59,7 +59,7 @@ static VALUE rb_cCAObjectMask;
59
59
 
60
60
 
61
61
  static CAObjectMask *
62
- ca_objmask_new (VALUE array, int8_t rank, int32_t *dim)
62
+ ca_objmask_new (VALUE array, int8_t rank, ca_size_t *dim)
63
63
  {
64
64
  CAObjectMask *ca = ALLOC(CAObjectMask);
65
65
  ca_wrap_setup_null((CArray *)ca, CA_BOOLEAN, rank, dim, 0, NULL);
@@ -85,24 +85,24 @@ ca_objmask_func_clone (void *ap)
85
85
  }
86
86
 
87
87
  void
88
- ca_objmask_func_fetch_addr (void *ap, int32_t addr, void *ptr)
88
+ ca_objmask_func_fetch_addr (void *ap, ca_size_t addr, void *ptr)
89
89
  {
90
90
  CAObjectMask *ca = (CAObjectMask *) ap;
91
91
  volatile VALUE ridx, raddr, rval;
92
92
  int i;
93
93
 
94
94
  if ( rb_obj_respond_to(ca->array, rb_intern("mask_fetch_addr"), Qtrue) ) {
95
- raddr = LONG2NUM(addr);
95
+ raddr = SIZE2NUM(addr);
96
96
  rval = rb_funcall(ca->array, rb_intern("mask_fetch_addr"), 1, raddr);
97
97
  *(uint8_t*) ptr = NUM2INT(rval) == 0 ? 0 : 1;
98
98
  ca_array_func_store_addr(ca, addr, ptr);
99
99
  }
100
100
  else if ( rb_obj_respond_to(ca->array, rb_intern("mask_fetch_index"), Qtrue) ) {
101
- int32_t idx[CA_RANK_MAX];
101
+ ca_size_t idx[CA_RANK_MAX];
102
102
  ca_addr2index(ca, addr, idx);
103
103
  ridx = rb_ary_new2(ca->rank);
104
104
  for (i=0; i<ca->rank; i++) {
105
- rb_ary_store(ridx, i, INT2NUM(idx[i]));
105
+ rb_ary_store(ridx, i, SIZE2NUM(idx[i]));
106
106
  }
107
107
  rval = rb_funcall(ca->array, rb_intern("mask_fetch_index"), 1, ridx);
108
108
  *(uint8_t*) ptr = NUM2INT(rval) == 0 ? 0 : 1;
@@ -114,7 +114,7 @@ ca_objmask_func_fetch_addr (void *ap, int32_t addr, void *ptr)
114
114
  }
115
115
 
116
116
  void
117
- ca_objmask_func_fetch_index (void *ap, int32_t *idx, void *ptr)
117
+ ca_objmask_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
118
118
  {
119
119
  CAObjectMask *ca = (CAObjectMask *) ap;
120
120
  volatile VALUE ridx, raddr, rval;
@@ -123,15 +123,15 @@ ca_objmask_func_fetch_index (void *ap, int32_t *idx, void *ptr)
123
123
  if ( rb_obj_respond_to(ca->array, rb_intern("mask_fetch_index"), Qtrue) ) {
124
124
  ridx = rb_ary_new2(ca->rank);
125
125
  for (i=0; i<ca->rank; i++) {
126
- rb_ary_store(ridx, i, INT2NUM(idx[i]));
126
+ rb_ary_store(ridx, i, SIZE2NUM(idx[i]));
127
127
  }
128
128
  rval = rb_funcall(ca->array, rb_intern("mask_fetch_index"), 1, ridx);
129
129
  *(uint8_t*) ptr = NUM2INT(rval) == 0 ? 0 : 1;
130
130
  ca_array_func_store_index(ca, idx, ptr);
131
131
  }
132
132
  else if ( rb_obj_respond_to(ca->array, rb_intern("mask_fetch_addr"), Qtrue) ) {
133
- int32_t addr = ca_index2addr(ca, idx);
134
- raddr = LONG2NUM(addr);
133
+ ca_size_t addr = ca_index2addr(ca, idx);
134
+ raddr = SIZE2NUM(addr);
135
135
  rval = rb_funcall(ca->array, rb_intern("mask_fetch_addr"), 1, raddr);
136
136
  *(uint8_t*) ptr = NUM2INT(rval) == 0 ? 0 : 1;
137
137
  ca_array_func_store_addr(ca, addr, ptr);
@@ -143,49 +143,49 @@ ca_objmask_func_fetch_index (void *ap, int32_t *idx, void *ptr)
143
143
 
144
144
 
145
145
  void
146
- ca_objmask_func_store_addr (void *ap, int32_t addr, void *ptr)
146
+ ca_objmask_func_store_addr (void *ap, ca_size_t addr, void *ptr)
147
147
  {
148
148
  CAObjectMask *ca = (CAObjectMask *) ap;
149
149
  volatile VALUE ridx, raddr, rval;
150
150
  int i;
151
151
 
152
152
  ca_array_func_store_addr(ca, addr, ptr);
153
- rval = INT2FIX( *(uint8_t*)ptr );
153
+ rval = INT2NUM( *(uint8_t*)ptr );
154
154
  if ( rb_obj_respond_to(ca->array, rb_intern("mask_store_addr"), Qtrue) ) {
155
- raddr = LONG2NUM(addr);
155
+ raddr = SIZE2NUM(addr);
156
156
  rb_funcall(ca->array, rb_intern("mask_store_addr"), 2, raddr, rval);
157
157
  }
158
158
  else if ( rb_obj_respond_to(ca->array, rb_intern("mask_store_index"), Qtrue) ) {
159
- int32_t idx[CA_RANK_MAX];
159
+ ca_size_t idx[CA_RANK_MAX];
160
160
  ca_addr2index(ca, addr, idx);
161
161
  ridx = rb_ary_new2(ca->rank);
162
162
  for (i=0; i<ca->rank; i++) {
163
- rb_ary_store(ridx, i, INT2NUM(idx[i]));
163
+ rb_ary_store(ridx, i, SIZE2NUM(idx[i]));
164
164
  }
165
165
  rb_funcall(ca->array, rb_intern("mask_store_index"), 2, ridx, rval);
166
166
  }
167
167
  }
168
168
 
169
169
  void
170
- ca_objmask_func_store_index (void *ap, int32_t *idx, void *ptr)
170
+ ca_objmask_func_store_index (void *ap, ca_size_t *idx, void *ptr)
171
171
  {
172
172
  CAObjectMask *ca = (CAObjectMask *) ap;
173
173
  volatile VALUE ridx, raddr, rval;
174
174
  int i;
175
175
 
176
176
  ca_array_func_store_index(ca, idx, ptr);
177
- rval = INT2FIX( *(uint8_t*)ptr );
177
+ rval = INT2NUM( *(uint8_t*)ptr );
178
178
 
179
179
  if ( rb_obj_respond_to(ca->array, rb_intern("mask_store_index"), Qtrue) ) {
180
180
  ridx = rb_ary_new2(ca->rank);
181
181
  for (i=0; i<ca->rank; i++) {
182
- rb_ary_store(ridx, i, INT2NUM(idx[i]));
182
+ rb_ary_store(ridx, i, SIZE2NUM(idx[i]));
183
183
  }
184
184
  rb_funcall(ca->array, rb_intern("mask_store_index"), 2, ridx, rval);
185
185
  }
186
186
  else if ( rb_obj_respond_to(ca->array, rb_intern("mask_store_addr"), Qtrue) ) {
187
- int32_t addr = ca_index2addr(ca, idx);
188
- raddr = LONG2NUM(addr);
187
+ ca_size_t addr = ca_index2addr(ca, idx);
188
+ raddr = SIZE2NUM(addr);
189
189
  rb_funcall(ca->array, rb_intern("mask_store_addr"), 2, raddr, rval);
190
190
  }
191
191
 
@@ -250,7 +250,7 @@ ca_objmask_func_fill_data (void *ap, void *val)
250
250
  ca_array_func_fill_data(ca, val);
251
251
  if ( rb_obj_respond_to(ca->array, rb_intern("mask_fill_data"), Qtrue) ) {
252
252
  rb_funcall(ca->array, rb_intern("mask_fill_data"),
253
- 1, INT2FIX(*(uint8_t*)val));
253
+ 1, INT2NUM(*(uint8_t*)val));
254
254
  }
255
255
  }
256
256
 
@@ -301,11 +301,11 @@ rb_ca_objmask_initialize_copy (VALUE self, VALUE other)
301
301
 
302
302
  static int
303
303
  ca_object_setup (CAObject *ca,
304
- int8_t data_type, int8_t rank, int32_t *dim, int32_t bytes)
304
+ int8_t data_type, int8_t rank, ca_size_t *dim, ca_size_t bytes)
305
305
  {
306
- int32_t elements;
306
+ ca_size_t elements;
307
307
  double length;
308
- int32_t i;
308
+ int8_t i;
309
309
 
310
310
  /* check arguments */
311
311
 
@@ -339,17 +339,17 @@ ca_object_setup (CAObject *ca,
339
339
  ca->attach = 0;
340
340
  ca->nosync = 0;
341
341
 
342
- ca->dim = ALLOC_N(int32_t, rank);
342
+ ca->dim = ALLOC_N(ca_size_t, rank);
343
343
 
344
344
  ca->data = ca_wrap_new_null(data_type, rank, dim, bytes, NULL);
345
345
 
346
- memcpy(ca->dim, dim, rank * sizeof(int32_t));
346
+ memcpy(ca->dim, dim, rank * sizeof(ca_size_t));
347
347
 
348
348
  return 0;
349
349
  }
350
350
 
351
351
  static CAObject *
352
- ca_object_new (int8_t data_type, int8_t rank, int32_t *dim, int32_t bytes)
352
+ ca_object_new (int8_t data_type, int8_t rank, ca_size_t *dim, ca_size_t bytes)
353
353
  {
354
354
  CAObject *ca = ALLOC(CAObject);
355
355
  ca_object_setup(ca, data_type, rank, dim, bytes);
@@ -380,13 +380,13 @@ ca_object_func_clone (void *ap)
380
380
  #define ca_object_func_ptr_at_index ca_array_func_ptr_at_index
381
381
 
382
382
  static void
383
- ca_object_func_fetch_addr (void *ap, int32_t addr, void *ptr)
383
+ ca_object_func_fetch_addr (void *ap, ca_size_t addr, void *ptr)
384
384
  {
385
385
  CAObject *ca = (CAObject *) ap;
386
386
  volatile VALUE ridx, raddr, rval;
387
387
  int i;
388
388
  if ( rb_obj_respond_to(ca->self, rb_intern("fetch_addr"), Qtrue) ) {
389
- raddr = LONG2NUM(addr);
389
+ raddr = SIZE2NUM(addr);
390
390
  rval = rb_funcall(ca->self, rb_intern("fetch_addr"), 1, raddr);
391
391
  if ( rval == CA_UNDEF ) {
392
392
  ca_update_mask(ca);
@@ -395,7 +395,7 @@ ca_object_func_fetch_addr (void *ap, int32_t addr, void *ptr)
395
395
  }
396
396
  *(boolean8_t*)ca_ptr_at_addr(ca->mask, addr) = 1;
397
397
  if ( ca->data_type == CA_OBJECT ) {
398
- rb_ca_obj2ptr(ca->self, INT2FIX(0), ptr);
398
+ rb_ca_obj2ptr(ca->self, INT2NUM(0), ptr);
399
399
  }
400
400
  }
401
401
  else {
@@ -406,11 +406,11 @@ ca_object_func_fetch_addr (void *ap, int32_t addr, void *ptr)
406
406
  }
407
407
  }
408
408
  else {
409
- int32_t idx[CA_RANK_MAX];
409
+ ca_size_t idx[CA_RANK_MAX];
410
410
  ca_addr2index(ca, addr, idx);
411
411
  ridx = rb_ary_new2(ca->rank);
412
412
  for (i=0; i<ca->rank; i++) {
413
- rb_ary_store(ridx, i, INT2NUM(idx[i]));
413
+ rb_ary_store(ridx, i, SIZE2NUM(idx[i]));
414
414
  }
415
415
  rval = rb_funcall(ca->self, rb_intern("fetch_index"), 1, ridx);
416
416
  if ( rval == CA_UNDEF ) {
@@ -420,7 +420,7 @@ ca_object_func_fetch_addr (void *ap, int32_t addr, void *ptr)
420
420
  }
421
421
  *(boolean8_t*)ca_ptr_at_index(ca->mask, idx) = 1;
422
422
  if ( ca->data_type == CA_OBJECT ) {
423
- rb_ca_obj2ptr(ca->self, INT2FIX(0), ptr);
423
+ rb_ca_obj2ptr(ca->self, INT2NUM(0), ptr);
424
424
  }
425
425
  }
426
426
  else {
@@ -433,7 +433,7 @@ ca_object_func_fetch_addr (void *ap, int32_t addr, void *ptr)
433
433
  }
434
434
 
435
435
  static void
436
- ca_object_func_fetch_index (void *ap, int32_t *idx, void *ptr)
436
+ ca_object_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
437
437
  {
438
438
  CAObject *ca = (CAObject *) ap;
439
439
  volatile VALUE ridx, raddr, rval;
@@ -441,7 +441,7 @@ ca_object_func_fetch_index (void *ap, int32_t *idx, void *ptr)
441
441
  if ( rb_obj_respond_to(ca->self, rb_intern("fetch_index"), Qtrue) ) {
442
442
  ridx = rb_ary_new2(ca->rank);
443
443
  for (i=0; i<ca->rank; i++) {
444
- rb_ary_store(ridx, i, INT2NUM(idx[i]));
444
+ rb_ary_store(ridx, i, SIZE2NUM(idx[i]));
445
445
  }
446
446
  rval = rb_funcall(ca->self, rb_intern("fetch_index"), 1, ridx);
447
447
  if ( rval == CA_UNDEF ) {
@@ -451,7 +451,7 @@ ca_object_func_fetch_index (void *ap, int32_t *idx, void *ptr)
451
451
  }
452
452
  *(boolean8_t*)ca_ptr_at_index(ca->mask, idx) = 1;
453
453
  if ( ca->data_type == CA_OBJECT ) {
454
- rb_ca_obj2ptr(ca->self, INT2FIX(0), ptr);
454
+ rb_ca_obj2ptr(ca->self, INT2NUM(0), ptr);
455
455
  }
456
456
  }
457
457
  else {
@@ -462,8 +462,8 @@ ca_object_func_fetch_index (void *ap, int32_t *idx, void *ptr)
462
462
  }
463
463
  }
464
464
  else {
465
- int32_t addr = ca_index2addr(ca, idx);
466
- raddr = LONG2NUM(addr);
465
+ ca_size_t addr = ca_index2addr(ca, idx);
466
+ raddr = SIZE2NUM(addr);
467
467
  rval = rb_funcall(ca->self, rb_intern("fetch_addr"), 1, raddr);
468
468
  if ( rval == CA_UNDEF ) {
469
469
  ca_update_mask(ca);
@@ -472,7 +472,7 @@ ca_object_func_fetch_index (void *ap, int32_t *idx, void *ptr)
472
472
  }
473
473
  *(boolean8_t*)ca_ptr_at_addr(ca->mask, addr) = 1;
474
474
  if ( ca->data_type == CA_OBJECT ) {
475
- rb_ca_obj2ptr(ca->self, INT2FIX(0), ptr);
475
+ rb_ca_obj2ptr(ca->self, INT2NUM(0), ptr);
476
476
  }
477
477
  }
478
478
  else {
@@ -485,22 +485,22 @@ ca_object_func_fetch_index (void *ap, int32_t *idx, void *ptr)
485
485
  }
486
486
 
487
487
  static void
488
- ca_object_func_store_addr (void *ap, int32_t addr, void *ptr)
488
+ ca_object_func_store_addr (void *ap, ca_size_t addr, void *ptr)
489
489
  {
490
490
  CAObject *ca = (CAObject *) ap;
491
491
  volatile VALUE ridx, raddr, rval;
492
492
  int i;
493
493
  if ( rb_obj_respond_to(ca->self, rb_intern("store_addr"), Qtrue) ) {
494
- raddr = LONG2NUM(addr);
494
+ raddr = SIZE2NUM(addr);
495
495
  rval = rb_ca_ptr2obj(ca->self, ptr);
496
496
  rb_funcall(ca->self, rb_intern("store_addr"), 2, raddr, rval);
497
497
  }
498
498
  else {
499
- int32_t idx[CA_RANK_MAX];
499
+ ca_size_t idx[CA_RANK_MAX];
500
500
  ca_addr2index(ca, addr, idx);
501
501
  ridx = rb_ary_new2(ca->rank);
502
502
  for (i=0; i<ca->rank; i++) {
503
- rb_ary_store(ridx, i, INT2NUM(idx[i]));
503
+ rb_ary_store(ridx, i, SIZE2NUM(idx[i]));
504
504
  }
505
505
  rval = rb_ca_ptr2obj(ca->self, ptr);
506
506
  rb_funcall(ca->self, rb_intern("store_index"), 2, ridx, rval);
@@ -508,7 +508,7 @@ ca_object_func_store_addr (void *ap, int32_t addr, void *ptr)
508
508
  }
509
509
 
510
510
  static void
511
- ca_object_func_store_index (void *ap, int32_t *idx, void *ptr)
511
+ ca_object_func_store_index (void *ap, ca_size_t *idx, void *ptr)
512
512
  {
513
513
  CAObject *ca = (CAObject *) ap;
514
514
  volatile VALUE ridx, raddr, rval;
@@ -516,14 +516,14 @@ ca_object_func_store_index (void *ap, int32_t *idx, void *ptr)
516
516
  if ( rb_obj_respond_to(ca->self, rb_intern("store_index"), Qtrue) ) {
517
517
  ridx = rb_ary_new2(ca->rank);
518
518
  for (i=0; i<ca->rank; i++) {
519
- rb_ary_store(ridx, i, INT2NUM(idx[i]));
519
+ rb_ary_store(ridx, i, SIZE2NUM(idx[i]));
520
520
  }
521
521
  rval = rb_ca_ptr2obj(ca->self, ptr);
522
522
  rb_funcall(ca->self, rb_intern("store_index"), 2, ridx, rval);
523
523
  }
524
524
  else {
525
- int32_t addr = ca_index2addr(ca, idx);
526
- raddr = LONG2NUM(addr);
525
+ ca_size_t addr = ca_index2addr(ca, idx);
526
+ raddr = SIZE2NUM(addr);
527
527
  rval = rb_ca_ptr2obj(ca->self, ptr);
528
528
  rb_funcall(ca->self, rb_intern("store_addr"), 2, raddr, rval);
529
529
  }
@@ -537,8 +537,8 @@ ca_object_func_allocate (void *ap)
537
537
  ca->data->ptr = malloc_with_check(ca_length(ca));
538
538
  if ( ca_is_object_type(ca->data) ) { /* GC safe */
539
539
  VALUE *p = (VALUE *) ca->data->ptr;
540
- VALUE zero = INT2FIX(0);
541
- int32_t i;
540
+ VALUE zero = INT2NUM(0);
541
+ ca_size_t i;
542
542
  for (i=0; i<ca->elements; i++) {
543
543
  *p++ = zero;
544
544
  }
@@ -555,8 +555,8 @@ ca_object_func_attach (void *ap)
555
555
  ca->data->ptr = malloc_with_check(ca_length(ca));
556
556
  if ( ca_is_object_type(ca->data) ) { /* GC safe */
557
557
  VALUE *p = (VALUE *) ca->data->ptr;
558
- VALUE zero = INT2FIX(0);
559
- int32_t i;
558
+ VALUE zero = INT2NUM(0);
559
+ ca_size_t i;
560
560
  for (i=0; i<ca->elements; i++) {
561
561
  *p++ = zero;
562
562
  }
@@ -704,11 +704,11 @@ rb_ca_object_initialize (int argc, VALUE *argv, VALUE self)
704
704
  volatile VALUE rtype, rdim, ropt, rbytes = Qnil, rrdonly = Qnil, rparent = Qnil, rdata;
705
705
  CAObject *ca;
706
706
  int8_t data_type, rank;
707
- int32_t dim[CA_RANK_MAX];
708
- int32_t bytes;
707
+ ca_size_t dim[CA_RANK_MAX];
708
+ ca_size_t bytes;
709
709
  int i;
710
710
 
711
- rb_scan_args(argc, argv, "21", &rtype, &rdim, &ropt);
711
+ rb_scan_args(argc, argv, "21", (VALUE *) &rtype, (VALUE *) &rdim, (VALUE *) &ropt);
712
712
  rb_scan_options(ropt, "bytes,read_only,parent",
713
713
  &rbytes, &rrdonly, &rparent);
714
714
 
@@ -723,7 +723,7 @@ rb_ca_object_initialize (int argc, VALUE *argv, VALUE self)
723
723
 
724
724
  rank = RARRAY_LEN(rdim);
725
725
  for (i=0; i<rank; i++) {
726
- dim[i] = NUM2INT(rb_ary_entry(rdim, i));
726
+ dim[i] = NUM2SIZE(rb_ary_entry(rdim, i));
727
727
  }
728
728
 
729
729
  Data_Get_Struct(self, CAObject, ca);