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
@@ -21,10 +21,10 @@ VALUE rb_cCAUnboundRepeat;
21
21
 
22
22
  int
23
23
  ca_ubrep_setup (CAUnboundRepeat *ca, CArray *parent,
24
- int32_t rep_rank, int32_t *rep_dim)
24
+ int32_t rep_rank, ca_size_t *rep_dim)
25
25
  {
26
26
  int8_t data_type, rank;
27
- int32_t bytes, elements;
27
+ ca_size_t bytes, elements;
28
28
 
29
29
  /* check arguments */
30
30
 
@@ -43,17 +43,17 @@ ca_ubrep_setup (CAUnboundRepeat *ca, CArray *parent,
43
43
  ca->elements = elements;
44
44
  ca->ptr = NULL;
45
45
  ca->mask = NULL;
46
- ca->dim = ALLOC_N(int32_t, rank);
46
+ ca->dim = ALLOC_N(ca_size_t, rank);
47
47
 
48
48
  ca->parent = parent;
49
49
  ca->attach = 0;
50
50
  ca->nosync = 0;
51
51
 
52
52
  ca->rep_rank = rep_rank;
53
- ca->rep_dim = ALLOC_N(int32_t, rep_rank);
53
+ ca->rep_dim = ALLOC_N(ca_size_t, rep_rank);
54
54
 
55
- memcpy(ca->dim, parent->dim, rank * sizeof(int32_t));
56
- memcpy(ca->rep_dim, rep_dim, rep_rank * sizeof(int32_t));
55
+ memcpy(ca->dim, parent->dim, rank * sizeof(ca_size_t));
56
+ memcpy(ca->rep_dim, rep_dim, rep_rank * sizeof(ca_size_t));
57
57
 
58
58
  if ( ca_has_mask(parent) ) {
59
59
  ca_create_mask(ca);
@@ -63,7 +63,7 @@ ca_ubrep_setup (CAUnboundRepeat *ca, CArray *parent,
63
63
  }
64
64
 
65
65
  CAUnboundRepeat *
66
- ca_ubrep_new (CArray *parent, int32_t rep_rank, int32_t *rep_dim)
66
+ ca_ubrep_new (CArray *parent, int32_t rep_rank, ca_size_t *rep_dim)
67
67
  {
68
68
  CAUnboundRepeat *ca = ALLOC(CAUnboundRepeat);
69
69
  ca_ubrep_setup(ca, parent, rep_rank, rep_dim);
@@ -92,42 +92,42 @@ ca_ubrep_func_clone (void *ap)
92
92
  }
93
93
 
94
94
  static char *
95
- ca_ubrep_func_ptr_at_addr (void *ap, int32_t addr)
95
+ ca_ubrep_func_ptr_at_addr (void *ap, ca_size_t addr)
96
96
  {
97
97
  CAUnboundRepeat *ca = (CAUnboundRepeat *) ap;
98
98
  return ca_ptr_at_addr(ca->parent, addr);
99
99
  }
100
100
 
101
101
  static char *
102
- ca_ubrep_func_ptr_at_index (void *ap, int32_t *idx)
102
+ ca_ubrep_func_ptr_at_index (void *ap, ca_size_t *idx)
103
103
  {
104
104
  CAUnboundRepeat *ca = (CAUnboundRepeat *) ap;
105
105
  return ca_ptr_at_index(ca->parent, idx);
106
106
  }
107
107
 
108
108
  static void
109
- ca_ubrep_func_fetch_addr (void *ap, int32_t addr, void *ptr)
109
+ ca_ubrep_func_fetch_addr (void *ap, ca_size_t addr, void *ptr)
110
110
  {
111
111
  CAUnboundRepeat *ca = (CAUnboundRepeat *) ap;
112
112
  ca_fetch_addr(ca->parent, addr, ptr);
113
113
  }
114
114
 
115
115
  static void
116
- ca_ubrep_func_fetch_index (void *ap, int32_t *idx, void *ptr)
116
+ ca_ubrep_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
117
117
  {
118
118
  CAUnboundRepeat *ca = (CAUnboundRepeat *) ap;
119
119
  ca_fetch_index(ca->parent, idx, ptr);
120
120
  }
121
121
 
122
122
  static void
123
- ca_ubrep_func_store_addr (void *ap, int32_t addr, void *ptr)
123
+ ca_ubrep_func_store_addr (void *ap, ca_size_t addr, void *ptr)
124
124
  {
125
125
  CAUnboundRepeat *ca = (CAUnboundRepeat *) ap;
126
126
  ca_store_addr(ca->parent, addr, ptr);
127
127
  }
128
128
 
129
129
  static void
130
- ca_ubrep_func_store_index (void *ap, int32_t *idx, void *ptr)
130
+ ca_ubrep_func_store_index (void *ap, ca_size_t *idx, void *ptr)
131
131
  {
132
132
  CAUnboundRepeat *ca = (CAUnboundRepeat *) ap;
133
133
  ca_store_index(ca->parent, idx, ptr);
@@ -239,7 +239,7 @@ ca_operation_function_t ca_ubrep_func = {
239
239
  /* ------------------------------------------------------------------- */
240
240
 
241
241
  VALUE
242
- rb_ca_ubrep_new (VALUE cary, int32_t rep_rank, int32_t *rep_dim)
242
+ rb_ca_ubrep_new (VALUE cary, int32_t rep_rank, ca_size_t *rep_dim)
243
243
  {
244
244
  volatile VALUE obj;
245
245
  CArray *parent;
@@ -257,9 +257,10 @@ VALUE
257
257
  rb_ca_unbound_repeat (int argc, VALUE *argv, VALUE self)
258
258
  {
259
259
  CArray *ca;
260
- int32_t rank, dim[CA_RANK_MAX];
261
- int32_t rep_rank, rep_dim[CA_RANK_MAX];
262
- int32_t count, i;
260
+ ca_size_t rank, dim[CA_RANK_MAX];
261
+ int32_t rep_rank;
262
+ ca_size_t rep_dim[CA_RANK_MAX];
263
+ ca_size_t count, i;
263
264
 
264
265
  Data_Get_Struct(self, CArray, ca);
265
266
 
@@ -298,7 +299,7 @@ rb_ca_unbound_repeat (int argc, VALUE *argv, VALUE self)
298
299
  return self;
299
300
  }
300
301
  else {
301
- return rb_ca_unbound_repeat(RARRAY_LEN(args), RARRAY_PTR(args), self);
302
+ return rb_ca_unbound_repeat((int)RARRAY_LEN(args), RARRAY_PTR(args), self);
302
303
  }
303
304
  }
304
305
  else if ( argc == 2 &&
@@ -384,9 +385,9 @@ rb_ca_ubrep_initialize_copy (VALUE self, VALUE other)
384
385
 
385
386
  /*
386
387
  static CARepeat *
387
- ca_ubrep_bind (CAUnboundRepeat *ca, int32_t new_rank, int32_t *new_dim)
388
+ ca_ubrep_bind (CAUnboundRepeat *ca, int32_t new_rank, ca_size_t *new_dim)
388
389
  {
389
- int32_t rep_spec[CA_RANK_MAX];
390
+ ca_size_t rep_spec[CA_RANK_MAX];
390
391
  int i;
391
392
  if ( ca->rep_rank != new_rank ) {
392
393
  rb_raise(rb_eArgError, "invalid new_rank");
@@ -404,12 +405,12 @@ ca_ubrep_bind (CAUnboundRepeat *ca, int32_t new_rank, int32_t *new_dim)
404
405
  */
405
406
 
406
407
  VALUE
407
- ca_ubrep_bind2 (VALUE self, int32_t new_rank, int32_t *new_dim)
408
+ ca_ubrep_bind2 (VALUE self, int32_t new_rank, ca_size_t *new_dim)
408
409
  {
409
410
  CAUnboundRepeat *ca;
410
- int32_t rep_spec[CA_RANK_MAX];
411
- int32_t upr_spec[CA_RANK_MAX];
412
- int32_t srp_spec[CA_RANK_MAX];
411
+ ca_size_t rep_spec[CA_RANK_MAX];
412
+ ca_size_t upr_spec[CA_RANK_MAX];
413
+ ca_size_t srp_spec[CA_RANK_MAX];
413
414
  int uprep = 0, srp_rank;
414
415
  int i;
415
416
 
@@ -494,7 +495,7 @@ static VALUE
494
495
  rb_ca_ubrep_bind (int argc, VALUE *argv, VALUE self)
495
496
  {
496
497
  CAUnboundRepeat *ca;
497
- int32_t rep_spec[CA_RANK_MAX];
498
+ ca_size_t rep_spec[CA_RANK_MAX];
498
499
  int i;
499
500
 
500
501
  Data_Get_Struct(self, CAUnboundRepeat, ca);
@@ -504,7 +505,7 @@ rb_ca_ubrep_bind (int argc, VALUE *argv, VALUE self)
504
505
  }
505
506
  for (i=0; i<argc; i++) {
506
507
  if ( ca->rep_dim[i] == 0 ) {
507
- rep_spec[i] = NUM2INT(argv[i]);
508
+ rep_spec[i] = NUM2SIZE(argv[i]);
508
509
  }
509
510
  else {
510
511
  rep_spec[i] = 0;
@@ -526,7 +527,7 @@ rb_ca_ubrep_spec (VALUE self)
526
527
  spec = rb_ary_new2(ca->rep_rank);
527
528
  for (i=0; i<ca->rep_rank; i++) {
528
529
  if ( ca->rep_dim[i] ) {
529
- rb_ary_store(spec, i, INT2NUM(ca->rep_dim[i]));
530
+ rb_ary_store(spec, i, SIZE2NUM(ca->rep_dim[i]));
530
531
  }
531
532
  else {
532
533
  rb_ary_store(spec, i, ID2SYM(rb_intern("*")));
data/ca_obj_window.c CHANGED
@@ -27,11 +27,11 @@ int8_t CA_OBJ_WINDOW;
27
27
 
28
28
  int
29
29
  ca_window_setup (CAWindow *ca, CArray *parent,
30
- int32_t *start, int32_t *count, int8_t bounds, char *fill)
30
+ ca_size_t *start, ca_size_t *count, int8_t bounds, char *fill)
31
31
  {
32
32
  int8_t data_type, rank;
33
- int32_t *dim;
34
- int32_t bytes, elements;
33
+ ca_size_t *dim;
34
+ ca_size_t bytes, elements;
35
35
  int i;
36
36
 
37
37
  data_type = parent->data_type;
@@ -62,23 +62,23 @@ ca_window_setup (CAWindow *ca, CArray *parent,
62
62
  ca->attach = 0;
63
63
  ca->nosync = 0;
64
64
  ca->bounds = bounds;
65
- ca->start = ALLOC_N(int32_t, rank);
66
- ca->count = ALLOC_N(int32_t, rank);
67
- ca->size0 = ALLOC_N(int32_t, rank);
65
+ ca->start = ALLOC_N(ca_size_t, rank);
66
+ ca->count = ALLOC_N(ca_size_t, rank);
67
+ ca->size0 = ALLOC_N(ca_size_t, rank);
68
68
  ca->fill = ALLOC_N(char, ca->bytes);
69
69
 
70
70
  ca->dim = ca->count;
71
71
 
72
- memcpy(ca->start, start, rank * sizeof(int32_t));
73
- memcpy(ca->count, count, rank * sizeof(int32_t));
74
- memcpy(ca->size0, dim, rank * sizeof(int32_t));
72
+ memcpy(ca->start, start, rank * sizeof(ca_size_t));
73
+ memcpy(ca->count, count, rank * sizeof(ca_size_t));
74
+ memcpy(ca->size0, dim, rank * sizeof(ca_size_t));
75
75
 
76
76
  if ( fill ) {
77
77
  memcpy(ca->fill, fill, ca->bytes);
78
78
  }
79
79
  else {
80
80
  if ( ca_is_object_type(ca) ) {
81
- *(VALUE *)ca->fill = INT2FIX(0);
81
+ *(VALUE *)ca->fill = INT2NUM(0);
82
82
  }
83
83
  else {
84
84
  memset(ca->fill, 0, ca->bytes);
@@ -94,7 +94,7 @@ ca_window_setup (CAWindow *ca, CArray *parent,
94
94
 
95
95
  CAWindow *
96
96
  ca_window_new (CArray *parent,
97
- int32_t *start, int32_t *count, int8_t bounds, char *fill)
97
+ ca_size_t *start, ca_size_t *count, int8_t bounds, char *fill)
98
98
  {
99
99
  CAWindow *ca = ALLOC(CAWindow);
100
100
  ca_window_setup(ca, parent, start, count, bounds, fill);
@@ -130,31 +130,32 @@ ca_window_func_clone (void *ap)
130
130
  }
131
131
 
132
132
  static char *
133
- ca_window_func_ptr_at_index (void *ap, int32_t *idx) ;
133
+ ca_window_func_ptr_at_index (void *ap, ca_size_t *idx) ;
134
134
 
135
135
  static char *
136
- ca_window_func_ptr_at_addr (void *ap, int32_t addr)
136
+ ca_window_func_ptr_at_addr (void *ap, ca_size_t addr)
137
137
  {
138
138
  CAWindow *ca = (CAWindow *) ap;
139
139
  if ( ca->ptr ) {
140
140
  return ca->ptr + ca->bytes * addr;
141
141
  }
142
142
  else {
143
- int32_t idx[CA_RANK_MAX];
143
+ ca_size_t idx[CA_RANK_MAX];
144
144
  ca_addr2index((CArray *)ca, addr, idx);
145
145
  return ca_window_func_ptr_at_index(ca, idx);
146
146
  }
147
147
  }
148
148
 
149
149
  static char *
150
- ca_window_func_ptr_at_index (void *ap, int32_t *idx)
150
+ ca_window_func_ptr_at_index (void *ap, ca_size_t *idx)
151
151
  {
152
- int32_t k;
152
+ ca_size_t k;
153
153
  CAWindow *ca = (CAWindow *) ap;
154
154
  if ( ! ca->ptr ) {
155
- int32_t *start = ca->start;
156
- int32_t *size0 = ca->size0;
157
- int32_t n, i;
155
+ ca_size_t *start = ca->start;
156
+ ca_size_t *size0 = ca->size0;
157
+ int8_t i;
158
+ ca_size_t n;
158
159
  n = 0;
159
160
  for (i=0; i<ca->rank; i++) {
160
161
  k = start[i] + idx[i];
@@ -178,13 +179,14 @@ ca_window_func_ptr_at_index (void *ap, int32_t *idx)
178
179
  }
179
180
 
180
181
  static void
181
- ca_window_func_fetch_index (void *ap, int32_t *idx, void *ptr)
182
+ ca_window_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
182
183
  {
183
184
  CAWindow *ca = (CAWindow *) ap;
184
- int32_t *start = ca->start;
185
- int32_t *size0 = ca->size0;
186
- int32_t idx0[CA_RANK_MAX];
187
- int32_t i, k;
185
+ ca_size_t *start = ca->start;
186
+ ca_size_t *size0 = ca->size0;
187
+ ca_size_t idx0[CA_RANK_MAX];
188
+ int8_t i;
189
+ ca_size_t k;
188
190
  for (i=0; i<ca->rank; i++) {
189
191
  k = start[i] + idx[i];
190
192
  k = ca_bounds_normalize_index(ca->bounds, size0[i], k);
@@ -198,13 +200,14 @@ ca_window_func_fetch_index (void *ap, int32_t *idx, void *ptr)
198
200
  }
199
201
 
200
202
  static void
201
- ca_window_func_store_index (void *ap, int32_t *idx, void *ptr)
203
+ ca_window_func_store_index (void *ap, ca_size_t *idx, void *ptr)
202
204
  {
203
205
  CAWindow *ca = (CAWindow *) ap;
204
- int32_t *start = ca->start;
205
- int32_t *size0 = ca->size0;
206
- int32_t idx0[CA_RANK_MAX];
207
- int32_t i, k;
206
+ ca_size_t *start = ca->start;
207
+ ca_size_t *size0 = ca->size0;
208
+ ca_size_t idx0[CA_RANK_MAX];
209
+ int8_t i;
210
+ ca_size_t k;
208
211
  for (i=0; i<ca->rank; i++) {
209
212
  k = start[i] + idx[i];
210
213
  k = ca_bounds_normalize_index(ca->bounds, size0[i], k);
@@ -294,7 +297,7 @@ ca_window_func_create_mask (void *ap)
294
297
  {
295
298
  CAWindow *ca = (CAWindow *) ap;
296
299
  boolean8_t fill;
297
- int32_t bounds = ca->bounds;
300
+ ca_size_t bounds = ca->bounds;
298
301
 
299
302
  ca_update_mask(ca->parent);
300
303
  if ( ! ca->parent->mask ) {
@@ -348,8 +351,8 @@ ca_operation_function_t ca_window_func = {
348
351
  } \
349
352
  else { \
350
353
  CArray *parent = cb->parent; \
351
- int32_t start = cb->start[level]; \
352
- int32_t size0 = cb->size0[level]; \
354
+ ca_size_t start = cb->start[level]; \
355
+ ca_size_t size0 = cb->size0[level]; \
353
356
  type *p, *q, *v; \
354
357
  idx[level] = 0; \
355
358
  p = (type*)ca_ptr_at_index((CArray*)cb, idx); \
@@ -389,10 +392,10 @@ ca_operation_function_t ca_window_func = {
389
392
 
390
393
  static void
391
394
  ca_window_attach_loop (CAWindow *cb, int8_t level,
392
- int32_t *idx, int32_t *idx0, int fill)
395
+ ca_size_t *idx, ca_size_t *idx0, int fill)
393
396
  {
394
- int32_t count = cb->count[level];
395
- int32_t i, k;
397
+ ca_size_t count = cb->count[level];
398
+ ca_size_t i, k;
396
399
 
397
400
  if ( level == cb->rank - 1 ) {
398
401
  switch ( cb->data_type ) {
@@ -421,8 +424,8 @@ ca_window_attach_loop (CAWindow *cb, int8_t level,
421
424
  }
422
425
  }
423
426
  else {
424
- int32_t start = cb->start[level];
425
- int32_t size0 = cb->size0[level];
427
+ ca_size_t start = cb->start[level];
428
+ ca_size_t size0 = cb->size0[level];
426
429
  for (i=0; i<count; i++) {
427
430
  idx[level] = i;
428
431
  k = start + i;
@@ -447,8 +450,8 @@ ca_window_attach_loop (CAWindow *cb, int8_t level,
447
450
  }
448
451
  }
449
452
  else {
450
- int32_t start = cb->start[level];
451
- int32_t size0 = cb->size0[level];
453
+ ca_size_t start = cb->start[level];
454
+ ca_size_t size0 = cb->size0[level];
452
455
  for (i=0; i<count; i++) {
453
456
  idx[level] = i;
454
457
  k = start + i;
@@ -469,8 +472,8 @@ ca_window_attach_loop (CAWindow *cb, int8_t level,
469
472
  void
470
473
  ca_window_attach (CAWindow *cb)
471
474
  {
472
- int32_t idx[CA_RANK_MAX];
473
- int32_t idx0[CA_RANK_MAX];
475
+ ca_size_t idx[CA_RANK_MAX];
476
+ ca_size_t idx0[CA_RANK_MAX];
474
477
  ca_window_attach_loop(cb, (int8_t) 0, idx, idx0, 0);
475
478
  }
476
479
 
@@ -515,12 +518,12 @@ ca_window_attach (CAWindow *cb)
515
518
 
516
519
  static void
517
520
  ca_window_sync_loop (CAWindow *cb, int8_t level,
518
- int32_t *idx, int32_t *idx0)
521
+ ca_size_t *idx, ca_size_t *idx0)
519
522
  {
520
- int32_t count = cb->count[level];
521
- int32_t start = cb->start[level];
522
- int32_t size0 = cb->size0[level];
523
- int32_t i, k;
523
+ ca_size_t count = cb->count[level];
524
+ ca_size_t start = cb->start[level];
525
+ ca_size_t size0 = cb->size0[level];
526
+ ca_size_t i, k;
524
527
 
525
528
  if ( level == cb->rank - 1 ) {
526
529
  switch ( cb->data_type ) {
@@ -575,8 +578,8 @@ ca_window_sync_loop (CAWindow *cb, int8_t level,
575
578
  void
576
579
  ca_window_sync (CAWindow *cb)
577
580
  {
578
- int32_t idx[CA_RANK_MAX];
579
- int32_t idx0[CA_RANK_MAX];
581
+ ca_size_t idx[CA_RANK_MAX];
582
+ ca_size_t idx0[CA_RANK_MAX];
580
583
  ca_window_sync_loop(cb, (int8_t) 0, idx, idx0);
581
584
  }
582
585
 
@@ -619,12 +622,12 @@ ca_window_sync (CAWindow *cb)
619
622
 
620
623
  static void
621
624
  ca_window_fill_loop (CAWindow *cb, char *ptr,
622
- int8_t level, int32_t *idx0)
625
+ int8_t level, ca_size_t *idx0)
623
626
  {
624
- int32_t count = cb->count[level];
625
- int32_t start = cb->start[level];
626
- int32_t size0 = cb->size0[level];
627
- int32_t i, k;
627
+ ca_size_t count = cb->count[level];
628
+ ca_size_t start = cb->start[level];
629
+ ca_size_t size0 = cb->size0[level];
630
+ ca_size_t i, k;
628
631
 
629
632
  if ( level == cb->rank - 1 ) {
630
633
  switch ( cb->data_type ) {
@@ -678,7 +681,7 @@ ca_window_fill_loop (CAWindow *cb, char *ptr,
678
681
  void
679
682
  ca_window_fill (CAWindow *cb, char *ptr)
680
683
  {
681
- int32_t idx0[CA_RANK_MAX];
684
+ ca_size_t idx0[CA_RANK_MAX];
682
685
  ca_window_fill_loop(cb, ptr, (int8_t) 0, idx0);
683
686
  }
684
687
 
@@ -686,7 +689,7 @@ ca_window_fill (CAWindow *cb, char *ptr)
686
689
 
687
690
  VALUE
688
691
  rb_ca_window_new (VALUE cary,
689
- int32_t *start, int32_t *count, int8_t bounds, char *fill)
692
+ ca_size_t *start, ca_size_t *count, int8_t bounds, char *fill)
690
693
  {
691
694
  volatile VALUE obj;
692
695
  CArray *parent;
@@ -713,12 +716,12 @@ rb_ca_window (int argc, VALUE *argv, VALUE self)
713
716
  volatile VALUE obj, ropt, rfval = CA_NIL, rbounds = Qnil, rcs;
714
717
  CArray *ca;
715
718
  CScalar *cs;
716
- int32_t start[CA_RANK_MAX];
717
- int32_t count[CA_RANK_MAX];
719
+ ca_size_t start[CA_RANK_MAX];
720
+ ca_size_t count[CA_RANK_MAX];
718
721
  int32_t bounds = CA_BOUNDS_FILL;
719
722
  char *fill = NULL;
720
723
  char *cbounds;
721
- int32_t i;
724
+ ca_size_t i;
722
725
 
723
726
  Data_Get_Struct(self, CArray, ca);
724
727
 
@@ -730,7 +733,7 @@ rb_ca_window (int argc, VALUE *argv, VALUE self)
730
733
  }
731
734
 
732
735
  for (i=0; i<argc; i++) {
733
- int offset, len, step;
736
+ ca_size_t offset, len, step;
734
737
  volatile VALUE arg = argv[i];
735
738
  ca_parse_range_without_check(arg, ca->dim[i], &offset, &len, &step);
736
739
  if ( step != 1 || len < 0 ) {
@@ -845,8 +848,9 @@ static VALUE
845
848
  rb_ca_window_idx2addr0 (int argc, VALUE *argv, VALUE self)
846
849
  {
847
850
  CAWindow *cw;
848
- int32_t addr;
849
- int32_t i, idxi;
851
+ ca_size_t addr;
852
+ int8_t i;
853
+ ca_size_t idxi;
850
854
 
851
855
  Data_Get_Struct(self, CAWindow, cw);
852
856
 
@@ -857,7 +861,7 @@ rb_ca_window_idx2addr0 (int argc, VALUE *argv, VALUE self)
857
861
 
858
862
  addr = 0;
859
863
  for (i=0; i<cw->rank; i++) {
860
- idxi = NUM2INT(argv[i]);
864
+ idxi = NUM2SIZE(argv[i]);
861
865
  CA_CHECK_INDEX(idxi, cw->dim[i]);
862
866
  addr = cw->size0[i] * addr + cw->start[i] + idxi;
863
867
  }
@@ -866,7 +870,7 @@ rb_ca_window_idx2addr0 (int argc, VALUE *argv, VALUE self)
866
870
  return Qnil;
867
871
  }
868
872
  else {
869
- return INT2NUM(addr);
873
+ return SIZE2NUM(addr);
870
874
  }
871
875
  }
872
876
 
@@ -881,9 +885,9 @@ static VALUE
881
885
  rb_ca_window_addr2addr0 (VALUE self, VALUE raddr)
882
886
  {
883
887
  CAWindow *cw;
884
- int32_t addr = NUM2INT(raddr);
885
- int32_t idx[CA_RANK_MAX];
886
- int32_t i;
888
+ ca_size_t addr = NUM2SIZE(raddr);
889
+ ca_size_t idx[CA_RANK_MAX];
890
+ int8_t i;
887
891
 
888
892
  Data_Get_Struct(self, CAWindow, cw);
889
893
 
@@ -895,7 +899,7 @@ rb_ca_window_addr2addr0 (VALUE self, VALUE raddr)
895
899
  addr += cw->start[i] + idx[i];
896
900
  }
897
901
 
898
- return INT2NUM(addr);
902
+ return SIZE2NUM(addr);
899
903
  }
900
904
 
901
905
 
@@ -903,7 +907,8 @@ static VALUE
903
907
  rb_ca_window_move (int argc, VALUE *argv, VALUE self)
904
908
  {
905
909
  CAWindow *cw;
906
- int32_t start, i;
910
+ ca_size_t start;
911
+ int8_t i;
907
912
 
908
913
  Data_Get_Struct(self, CAWindow, cw);
909
914
 
@@ -913,7 +918,7 @@ rb_ca_window_move (int argc, VALUE *argv, VALUE self)
913
918
 
914
919
  ca_update_mask(cw);
915
920
  for (i=0; i<cw->rank; i++) {
916
- start = NUM2LONG(argv[i]);
921
+ start = NUM2SIZE(argv[i]);
917
922
  cw->start[i] = start;
918
923
  if ( cw->mask ) {
919
924
  ((CAWindow*)(cw->mask))->start[i] = start;
@@ -954,7 +959,7 @@ rb_ca_window_get_bounds (VALUE self)
954
959
  {
955
960
  CAWindow *cw;
956
961
  Data_Get_Struct(self, CAWindow, cw);
957
- return INT2NUM(cw->bounds);
962
+ return SIZE2NUM(cw->bounds);
958
963
  }
959
964
 
960
965
  #define rb_cw_get_attr_ary(name) \
@@ -962,11 +967,11 @@ rb_ca_window_get_bounds (VALUE self)
962
967
  { \
963
968
  volatile VALUE ary; \
964
969
  CAWindow *cw; \
965
- int32_t i; \
970
+ int8_t i; \
966
971
  Data_Get_Struct(self, CAWindow, cw); \
967
972
  ary = rb_ary_new2(cw->rank); \
968
973
  for (i=0; i<cw->rank; i++) { \
969
- rb_ary_store(ary, i, LONG2NUM(cw->name[i])); \
974
+ rb_ary_store(ary, i, SIZE2NUM(cw->name[i])); \
970
975
  } \
971
976
  return ary; \
972
977
  }