carray 1.5.1 → 1.5.2

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 (174) hide show
  1. checksums.yaml +4 -4
  2. data/{LICENSES → LICENSE} +0 -0
  3. data/NEWS.md +42 -0
  4. data/README.md +5 -5
  5. data/TODO.md +16 -0
  6. data/carray.gemspec +9 -5
  7. data/ext/ca_iter_block.c +3 -5
  8. data/ext/ca_iter_dimension.c +4 -5
  9. data/ext/ca_iter_window.c +2 -4
  10. data/ext/ca_obj_array.c +394 -124
  11. data/ext/ca_obj_bitarray.c +3 -5
  12. data/ext/ca_obj_bitfield.c +3 -5
  13. data/ext/ca_obj_block.c +6 -8
  14. data/ext/ca_obj_fake.c +3 -5
  15. data/ext/ca_obj_farray.c +3 -5
  16. data/ext/ca_obj_field.c +15 -17
  17. data/ext/ca_obj_grid.c +5 -6
  18. data/ext/ca_obj_mapping.c +2 -4
  19. data/ext/ca_obj_object.c +3 -5
  20. data/ext/ca_obj_reduce.c +2 -4
  21. data/ext/ca_obj_refer.c +5 -7
  22. data/ext/ca_obj_repeat.c +2 -4
  23. data/ext/ca_obj_select.c +2 -4
  24. data/ext/ca_obj_shift.c +3 -5
  25. data/ext/ca_obj_transpose.c +3 -5
  26. data/ext/ca_obj_unbound_repeat.c +58 -81
  27. data/ext/ca_obj_window.c +7 -9
  28. data/ext/carray.h +13 -8
  29. data/ext/carray_access.c +111 -18
  30. data/ext/carray_attribute.c +136 -197
  31. data/ext/carray_call_cfunc.c +1 -3
  32. data/ext/carray_cast.c +344 -143
  33. data/ext/carray_cast_func.rb +1 -2
  34. data/ext/carray_class.c +28 -36
  35. data/ext/carray_conversion.c +49 -59
  36. data/ext/carray_copy.c +16 -32
  37. data/ext/carray_core.c +51 -44
  38. data/ext/carray_element.c +25 -44
  39. data/ext/carray_generate.c +71 -50
  40. data/ext/carray_iterator.c +13 -15
  41. data/ext/carray_loop.c +53 -82
  42. data/ext/carray_mask.c +87 -117
  43. data/ext/carray_math.rb +8 -10
  44. data/ext/carray_mathfunc.c +1 -3
  45. data/ext/carray_numeric.c +19 -3
  46. data/ext/carray_operator.c +45 -32
  47. data/ext/carray_order.c +72 -65
  48. data/ext/carray_sort_addr.c +14 -21
  49. data/ext/carray_stat.c +1 -3
  50. data/ext/carray_stat_proc.rb +2 -4
  51. data/ext/carray_test.c +28 -30
  52. data/ext/carray_undef.c +1 -3
  53. data/ext/carray_utils.c +12 -4
  54. data/ext/extconf.rb +1 -1
  55. data/ext/mkmath.rb +1 -1
  56. data/ext/ruby_carray.c +11 -6
  57. data/ext/ruby_ccomplex.c +1 -3
  58. data/ext/ruby_float_func.c +1 -3
  59. data/ext/version.h +5 -7
  60. data/lib/carray.rb +2 -0
  61. data/lib/carray/autoload/autoload_gem_numo_narray.rb +6 -6
  62. data/lib/carray/broadcast.rb +45 -0
  63. data/lib/carray/construct.rb +21 -4
  64. data/lib/carray/iterator.rb +1 -0
  65. data/lib/carray/ordering.rb +28 -2
  66. data/spec/Classes/CABitfield_spec.rb +58 -0
  67. data/spec/Classes/CABlockIterator_spec.rb +114 -0
  68. data/spec/Classes/CABlock_spec.rb +205 -0
  69. data/spec/Classes/CAField_spec.rb +39 -0
  70. data/spec/Classes/CAGrid_spec.rb +75 -0
  71. data/spec/Classes/CAMap_spec.rb +0 -0
  72. data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
  73. data/spec/Classes/CAObject_attribute_spec.rb +33 -0
  74. data/spec/Classes/CAObject_spec.rb +33 -0
  75. data/spec/Classes/CARefer_spec.rb +93 -0
  76. data/spec/Classes/CARepeat_spec.rb +65 -0
  77. data/spec/Classes/CASelect_spec.rb +22 -0
  78. data/spec/Classes/CAShift_spec.rb +16 -0
  79. data/spec/Classes/CAStruct_spec.rb +71 -0
  80. data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
  81. data/spec/Classes/CAUnboudRepeat_spec.rb +78 -0
  82. data/spec/Classes/CAWindow_spec.rb +54 -0
  83. data/spec/Classes/CAWrap_spec.rb +8 -0
  84. data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
  85. data/spec/Classes/CScalar_spec.rb +55 -0
  86. data/spec/Features/feature_130_spec.rb +19 -0
  87. data/spec/Features/feature_attributes_spec.rb +280 -0
  88. data/spec/Features/feature_boolean_spec.rb +97 -0
  89. data/spec/Features/feature_broadcast.rb +100 -0
  90. data/spec/Features/feature_cast_function.rb +19 -0
  91. data/spec/Features/feature_cast_spec.rb +33 -0
  92. data/spec/Features/feature_class_spec.rb +84 -0
  93. data/spec/Features/feature_complex_spec.rb +42 -0
  94. data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
  95. data/spec/Features/feature_convert_spec.rb +46 -0
  96. data/spec/Features/feature_copy_spec.rb +123 -0
  97. data/spec/Features/feature_creation_spec.rb +84 -0
  98. data/spec/Features/feature_element_spec.rb +144 -0
  99. data/spec/Features/feature_extream_spec.rb +54 -0
  100. data/spec/Features/feature_generate_spec.rb +74 -0
  101. data/spec/Features/feature_index_spec.rb +69 -0
  102. data/spec/Features/feature_mask_spec.rb +574 -0
  103. data/spec/Features/feature_math_spec.rb +97 -0
  104. data/spec/Features/feature_order_spec.rb +146 -0
  105. data/spec/Features/feature_ref_store_spec.rb +209 -0
  106. data/spec/Features/feature_serialization_spec.rb +125 -0
  107. data/spec/Features/feature_stat_spec.rb +397 -0
  108. data/spec/Features/feature_virtual_spec.rb +48 -0
  109. data/spec/Features/method_eq_spec.rb +81 -0
  110. data/spec/Features/method_is_nan_spec.rb +12 -0
  111. data/spec/Features/method_map_spec.rb +54 -0
  112. data/spec/Features/method_max_with.rb +20 -0
  113. data/spec/Features/method_min_with.rb +19 -0
  114. data/spec/Features/method_ne_spec.rb +18 -0
  115. data/spec/Features/method_project_spec.rb +188 -0
  116. data/spec/Features/method_ref_spec.rb +27 -0
  117. data/spec/Features/method_round_spec.rb +11 -0
  118. data/spec/Features/method_s_linspace_spec.rb +48 -0
  119. data/spec/Features/method_s_span_spec.rb +14 -0
  120. data/spec/Features/method_seq_spec.rb +47 -0
  121. data/spec/Features/method_sort_with.rb +43 -0
  122. data/spec/Features/method_sorted_with.rb +29 -0
  123. data/spec/Features/method_span_spec.rb +42 -0
  124. data/spec/Features/method_wrap_readonly_spec.rb +43 -0
  125. data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
  126. data/spec/spec_all.rb +0 -1
  127. data/utils/convert_test.rb +73 -0
  128. data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
  129. metadata +77 -60
  130. data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
  131. data/spec/CArray/bug/store_spec.rb +0 -27
  132. data/spec/CArray/index/repeat_spec.rb +0 -10
  133. data/spec/CArray/method/eq_spec.rb +0 -80
  134. data/spec/CArray/method/is_nan_spec.rb +0 -12
  135. data/spec/CArray/method/ne_spec.rb +0 -18
  136. data/spec/CArray/method/round_spec.rb +0 -11
  137. data/spec/CArray/object/_attribute_spec.rb +0 -32
  138. data/spec/CArray/object/s_new_spec.rb +0 -31
  139. data/spec/CArray/serialize/Serialization_spec.rb +0 -89
  140. data/test/test_130.rb +0 -23
  141. data/test/test_ALL.rb +0 -49
  142. data/test/test_CABitfield.rb +0 -59
  143. data/test/test_CABlock.rb +0 -208
  144. data/test/test_CAField.rb +0 -40
  145. data/test/test_CAGrid.rb +0 -76
  146. data/test/test_CAMmap.rb +0 -11
  147. data/test/test_CARefer.rb +0 -94
  148. data/test/test_CARepeat.rb +0 -66
  149. data/test/test_CASelect.rb +0 -23
  150. data/test/test_CAShift.rb +0 -17
  151. data/test/test_CAWindow.rb +0 -55
  152. data/test/test_CAWrap.rb +0 -9
  153. data/test/test_CComplex.rb +0 -83
  154. data/test/test_CScalar.rb +0 -91
  155. data/test/test_attribute.rb +0 -281
  156. data/test/test_block_iterator.rb +0 -17
  157. data/test/test_boolean.rb +0 -99
  158. data/test/test_cast.rb +0 -33
  159. data/test/test_class.rb +0 -85
  160. data/test/test_complex.rb +0 -43
  161. data/test/test_convert.rb +0 -79
  162. data/test/test_copy.rb +0 -141
  163. data/test/test_creation.rb +0 -85
  164. data/test/test_element.rb +0 -146
  165. data/test/test_extream.rb +0 -55
  166. data/test/test_generate.rb +0 -75
  167. data/test/test_index.rb +0 -71
  168. data/test/test_mask.rb +0 -578
  169. data/test/test_math.rb +0 -98
  170. data/test/test_order.rb +0 -147
  171. data/test/test_ref_store.rb +0 -211
  172. data/test/test_stat.rb +0 -406
  173. data/test/test_struct.rb +0 -72
  174. data/test/test_virtual.rb +0 -49
@@ -3,10 +3,8 @@
3
3
  carray_access.c
4
4
 
5
5
  This file is part of Ruby/CArray extension library.
6
- You can redistribute it and/or modify it under the terms of
7
- the Ruby Licence.
8
6
 
9
- Copyright (C) 2005 Hiroki Motoyoshi
7
+ Copyright (C) 2005-2020 Hiroki Motoyoshi
10
8
 
11
9
  ---------------------------------------------------------------------------- */
12
10
 
@@ -208,7 +206,7 @@ rb_ca_fetch_addr (VALUE self, ca_size_t addr)
208
206
  return out;
209
207
  }
210
208
 
211
- /* rdoc:
209
+ /* yard:
212
210
  class CArray
213
211
  def fill
214
212
  end
@@ -293,7 +291,7 @@ ary_guess_shape (VALUE ary, int level, int *max_level, ca_size_t *dim)
293
291
  }
294
292
  }
295
293
 
296
- /* rdoc:
294
+ /* yard:
297
295
  def CArray.guess_array_shape (arg)
298
296
  end
299
297
  */
@@ -533,7 +531,9 @@ rb_ca_scan_index (int ca_ndim, ca_size_t *ca_dim, ca_size_t ca_elements,
533
531
  info->type = CA_REG_ADDRESS;
534
532
  info->ndim = 1;
535
533
  addr = NUM2SIZE(arg);
536
- CA_CHECK_INDEX(addr, ca_elements);
534
+ if ( info->range_check ) {
535
+ CA_CHECK_INDEX(addr, ca_elements);
536
+ }
537
537
  info->index[0].scalar = addr;
538
538
  return;
539
539
  }
@@ -594,7 +594,9 @@ rb_ca_scan_index (int ca_ndim, ca_size_t *ca_dim, ca_size_t ca_elements,
594
594
  ca_size_t scalar;
595
595
  index_type[i] = CA_IDX_SCALAR;
596
596
  scalar = NUM2SIZE(arg);
597
- CA_CHECK_INDEX_AT(scalar, ca_dim[i], i);
597
+ if ( info->range_check ) {
598
+ CA_CHECK_INDEX_AT(scalar, ca_dim[i], i);
599
+ }
598
600
  index[i].scalar = scalar;
599
601
  }
600
602
  else if ( NIL_P(arg) ) { /* ca[--,nil,--] */
@@ -631,7 +633,10 @@ rb_ca_scan_index (int ca_ndim, ca_size_t *ca_dim, ca_size_t ca_elements,
631
633
  last = NUM2SIZE(iv_end);
632
634
  }
633
635
  excl = RTEST(iv_excl);
634
- CA_CHECK_INDEX_AT(first, ca_dim[i], i);
636
+
637
+ if ( info->range_check ) {
638
+ CA_CHECK_INDEX_AT(first, ca_dim[i], i);
639
+ }
635
640
 
636
641
  if ( last < 0 ) { /* don't use CA_CHECK_INDEX for excl */
637
642
  last += ca_dim[i];
@@ -645,10 +650,12 @@ rb_ca_scan_index (int ca_ndim, ca_size_t *ca_dim, ca_size_t ca_elements,
645
650
  if ( excl ) {
646
651
  last += ( (last>=first) ? -1 : 1 );
647
652
  }
648
- if ( last < 0 || last >= ca_dim[i] ) {
649
- rb_raise(rb_eIndexError,
650
- "index %lld is out of range (0..%lld) at %i-dim",
651
- (ca_size_t) last, (ca_size_t) (ca_dim[i]-1), i);
653
+ if ( info->range_check ) {
654
+ if ( last < 0 || last >= ca_dim[i] ) {
655
+ rb_raise(rb_eIndexError,
656
+ "index %lld is out of range (0..%lld) at %i-dim",
657
+ (ca_size_t) last, (ca_size_t) (ca_dim[i]-1), i);
658
+ }
652
659
  }
653
660
  index[i].block.start = first;
654
661
  index[i].block.count = count = llabs(last - first) + 1;
@@ -1254,7 +1261,7 @@ rb_ca_refer_new_flatten (VALUE self)
1254
1261
  return rb_ca_refer_new(self, ca->data_type, 1, &dim0, ca->bytes, 0);
1255
1262
  }
1256
1263
 
1257
- /* rdoc:
1264
+ /* yard:
1258
1265
  class CArray
1259
1266
  def [] (*spec)
1260
1267
  end
@@ -1271,6 +1278,8 @@ rb_ca_fetch_method (int argc, VALUE *argv, VALUE self)
1271
1278
  retry:
1272
1279
 
1273
1280
  Data_Get_Struct(self, CArray, ca);
1281
+
1282
+ info.range_check = 1;
1274
1283
  rb_ca_scan_index(ca->ndim, ca->dim, ca->elements, argc, argv, &info);
1275
1284
 
1276
1285
  switch ( info.type ) {
@@ -1340,7 +1349,86 @@ rb_ca_fetch_method (int argc, VALUE *argv, VALUE self)
1340
1349
  return obj;
1341
1350
  }
1342
1351
 
1343
- /* rdoc:
1352
+ static VALUE
1353
+ rb_cs_fetch_method (int argc, VALUE *argv, VALUE self)
1354
+ {
1355
+ volatile VALUE obj = Qnil;
1356
+ CArray *ca;
1357
+ CAIndexInfo info;
1358
+
1359
+ Data_Get_Struct(self, CArray, ca);
1360
+
1361
+ info.range_check = 0;
1362
+ rb_ca_scan_index(ca->ndim, ca->dim, ca->elements, argc, argv, &info);
1363
+
1364
+ switch ( info.type ) {
1365
+ case CA_REG_ADDRESS_COMPLEX:
1366
+ obj = rb_ca_fetch_addr(self, 0);
1367
+ break;
1368
+ case CA_REG_ADDRESS:
1369
+ obj = rb_ca_fetch_addr(self, 0);
1370
+ break;
1371
+ case CA_REG_FLATTEN:
1372
+ obj = self; /* rb_funcall(self, rb_intern("refer"), 0); */
1373
+ break;
1374
+ case CA_REG_POINT:
1375
+ obj = rb_ca_fetch_addr(self, 0);
1376
+ break;
1377
+ case CA_REG_ALL:
1378
+ obj = self; /* rb_funcall(self, rb_intern("refer"), 0); */
1379
+ break;
1380
+ case CA_REG_BLOCK:
1381
+ obj = self; /* rb_funcall(self, rb_intern("refer"), 0); */
1382
+ break;
1383
+ case CA_REG_SELECT:
1384
+ obj = rb_ca_select_new(self, argv[0]);
1385
+ break;
1386
+ case CA_REG_ITERATOR:
1387
+ obj = rb_dim_iter_new(self, &info);
1388
+ break;
1389
+ case CA_REG_REPEAT:
1390
+ obj = rb_ca_repeat(argc, argv, self);
1391
+ break;
1392
+ case CA_REG_UNBOUND_REPEAT:
1393
+ obj = rb_funcall2(self, rb_intern("unbound_repeat"), (int) argc, argv);
1394
+ break;
1395
+ case CA_REG_MAPPING:
1396
+ obj = rb_ca_mapping(argc, argv, self);
1397
+ break;
1398
+ case CA_REG_GRID:
1399
+ obj = rb_ca_grid(argc, argv, self);
1400
+ break;
1401
+ case CA_REG_METHOD_CALL: {
1402
+ volatile VALUE idx;
1403
+ idx = rb_funcall2(self, SYM2ID(info.symbol), argc-1, argv+1);
1404
+ obj = rb_ca_fetch(self, idx);
1405
+ break;
1406
+ }
1407
+ case CA_REG_MEMBER: {
1408
+ volatile VALUE data_class = rb_ca_data_class(self);
1409
+ if ( ! NIL_P(data_class) ) {
1410
+ obj = rb_ca_field_as_member(self, info.symbol);
1411
+ break;
1412
+ }
1413
+ else {
1414
+ rb_raise(rb_eIndexError,
1415
+ "can't refer member of carray doesn't have data_class");
1416
+ }
1417
+ break;
1418
+ }
1419
+ case CA_REG_ATTRIBUTE: {
1420
+ obj = rb_funcall(self, rb_intern("attribute"), 0);
1421
+ obj = rb_hash_aref(obj, info.symbol);
1422
+ break;
1423
+ }
1424
+ default:
1425
+ rb_raise(rb_eIndexError, "invalid index specified");
1426
+ }
1427
+
1428
+ return obj;
1429
+ }
1430
+
1431
+ /* yard:
1344
1432
  class CArray
1345
1433
  def []= (*spec)
1346
1434
  end
@@ -1363,6 +1451,7 @@ rb_ca_store_method (int argc, VALUE *argv, VALUE self)
1363
1451
 
1364
1452
  Data_Get_Struct(self, CArray, ca);
1365
1453
 
1454
+ info.range_check = 1;
1366
1455
  rb_ca_scan_index(ca->ndim, ca->dim, ca->elements, argc, argv, &info);
1367
1456
 
1368
1457
  switch ( info.type ) {
@@ -1487,7 +1576,7 @@ rb_ca_store2 (VALUE self, int n, VALUE *rindex, VALUE rval)
1487
1576
  return rb_ca_store_method((int)RARRAY_LEN(index), RARRAY_PTR(index), self);
1488
1577
  }
1489
1578
 
1490
- /* rdoc:
1579
+ /* yard:
1491
1580
  def CArray.scan_index(dim, idx)
1492
1581
  end
1493
1582
  */
@@ -1515,6 +1604,7 @@ rb_ca_s_scan_index (VALUE self, VALUE rdim, VALUE ridx)
1515
1604
  CA_CHECK_RANK(ndim);
1516
1605
  CA_CHECK_DIM(ndim, dim);
1517
1606
 
1607
+ info.range_check = 1;
1518
1608
  rb_ca_scan_index(ndim, dim, elements,
1519
1609
  RARRAY_LEN(ridx), RARRAY_PTR(ridx), &info);
1520
1610
 
@@ -1596,7 +1686,7 @@ rb_ca_s_scan_index (VALUE self, VALUE rdim, VALUE ridx)
1596
1686
  return rb_struct_new(S_CAInfo, rtype, rindex);
1597
1687
  }
1598
1688
 
1599
- /* rdoc:
1689
+ /* yard:
1600
1690
  class CArray
1601
1691
  def normalize_index (idx)
1602
1692
  end
@@ -1614,6 +1704,7 @@ rb_ca_normalize_index (VALUE self, VALUE ridx)
1614
1704
  Data_Get_Struct(self, CArray, ca);
1615
1705
  Check_Type(ridx, T_ARRAY);
1616
1706
 
1707
+ info.range_check = 1;
1617
1708
  rb_ca_scan_index(ca->ndim, ca->dim, ca->elements,
1618
1709
  RARRAY_LEN(ridx), RARRAY_PTR(ridx), &info);
1619
1710
 
@@ -1668,7 +1759,7 @@ rb_ca_normalize_index (VALUE self, VALUE ridx)
1668
1759
 
1669
1760
  /* ------------------------------------------------------------------- */
1670
1761
 
1671
- /* rdoc:
1762
+ /* yard:
1672
1763
  class CArray
1673
1764
  # converts addr to index
1674
1765
  def addr2index (addr)
@@ -1703,7 +1794,7 @@ rb_ca_addr2index (VALUE self, VALUE raddr)
1703
1794
  return out;
1704
1795
  }
1705
1796
 
1706
- /* rdoc:
1797
+ /* yard:
1707
1798
  class CArray
1708
1799
  def index2addr (*index)
1709
1800
  end
@@ -1838,6 +1929,8 @@ Init_carray_access ()
1838
1929
  rb_define_method(rb_cCArray, "[]", rb_ca_fetch_method, -1);
1839
1930
  rb_define_method(rb_cCArray, "[]=", rb_ca_store_method, -1);
1840
1931
 
1932
+ rb_define_method(rb_cCScalar, "[]", rb_cs_fetch_method, -1);
1933
+
1841
1934
  rb_define_method(rb_cCArray, "fill", rb_ca_fill, 1);
1842
1935
  rb_define_method(rb_cCArray, "fill_copy", rb_ca_fill_copy, 1);
1843
1936
 
@@ -3,10 +3,8 @@
3
3
  carray_attribute.c
4
4
 
5
5
  This file is part of Ruby/CArray extension library.
6
- You can redistribute it and/or modify it under the terms of
7
- the Ruby Licence.
8
6
 
9
- Copyright (C) 2005 Hiroki Motoyoshi
7
+ Copyright (C) 2005-2020 Hiroki Motoyoshi
10
8
 
11
9
  ---------------------------------------------------------------------------- */
12
10
 
@@ -14,14 +12,12 @@
14
12
 
15
13
  /* ------------------------------------------------------------------- */
16
14
 
17
- /* rdoc
18
- class CArray
19
- # returns the object type (e.g. CA_OBJ_ARRAY, CA_OBJ_BLOCK, ...).
20
- # Since the object type can be known from the class of the object,
21
- # this attribute method is rarely used.
22
- def obj_type
23
- end
24
- end
15
+ /* @overload obj_type
16
+
17
+ (Attribute)
18
+ Returns the object type (e.g. CA_OBJ_ARRAY, CA_OBJ_BLOCK, ...).
19
+ Since the object type can be known from the class of the object,
20
+ this attribute method is rarely used.
25
21
  */
26
22
 
27
23
  VALUE
@@ -32,12 +28,10 @@ rb_ca_obj_type (VALUE self)
32
28
  return INT2NUM(ca->obj_type);
33
29
  }
34
30
 
35
- /* rdoc
36
- class CArray
37
- # returns the data type of each element (e.g. CA_INT32, CA_FLOAT64, ...).
38
- def data_type
39
- end
40
- end
31
+ /* @overload data_type
32
+
33
+ (Attribute)
34
+ Returns the data type of each element (e.g. CA_INT32, CA_FLOAT64, ...).
41
35
  */
42
36
 
43
37
  VALUE
@@ -48,15 +42,10 @@ rb_ca_data_type (VALUE self)
48
42
  return INT2NUM(ca->data_type);
49
43
  }
50
44
 
51
- /* rdoc
52
- class CArray
53
- # use CArray#ndims instead of this methods after carray-1.3.0
54
- def ndim
55
- end
56
- # returns the ndim (e.g. 1 for 1D array, 3 for 3D array, ...).
57
- def ndims
58
- end
59
- end
45
+ /* @overload ndim
46
+
47
+ (Attribute)
48
+ Returns the rank (e.g. 1 for 1D array, 3 for 3D array, ...).
60
49
  */
61
50
 
62
51
  VALUE
@@ -67,16 +56,14 @@ rb_ca_ndim (VALUE self)
67
56
  return INT2NUM(ca->ndim);
68
57
  }
69
58
 
70
- /* rdoc
71
- class CArray
72
- # returns the byte size of each element (e.g. 4 for CA_INT32, 8 for CA_FLOAT64).
73
- # The byte size can be known using CArray.sizeof(data_type)
74
- # for the numerical data types, but
75
- # the byte size of fixed-length data type can be known
76
- # only by this method.
77
- def bytes
78
- end
79
- end
59
+ /* @overload bytes
60
+
61
+ (Attribute)
62
+ Returns the byte size of each element (e.g. 4 for CA_INT32, 8 for CA_FLOAT64).
63
+ The byte size can be known using CArray.sizeof(data_type)
64
+ for the numerical data types, but
65
+ the byte size of fixed-length data type can be known
66
+ only by this method.
80
67
  */
81
68
 
82
69
  VALUE
@@ -87,18 +74,10 @@ rb_ca_bytes (VALUE self)
87
74
  return SIZE2NUM(ca->bytes);
88
75
  }
89
76
 
90
- /* rdoc:
91
- class CArray
92
- # returns the number of elements
93
- def elements
94
- end
95
-
96
- # alias of `CArray#elements`
97
- alias length elements
77
+ /* @overload elements
98
78
 
99
- # alias of `CArray#elements`
100
- alias size elements
101
- end
79
+ (Attribute)
80
+ Returns the number of elements
102
81
  */
103
82
 
104
83
  VALUE
@@ -109,35 +88,11 @@ rb_ca_elements (VALUE self)
109
88
  return SIZE2NUM(ca->elements);
110
89
  }
111
90
 
112
- /* rdoc:
113
- class CArray
114
- # use CArray#shape instead of this method after carray-1.3.0
115
- # returns the Array object contains the dimensional shape of array
116
- # (e.g. [2,3] for 2D 2x3 array, ...).
117
- def dim
118
- end
119
-
120
- # returns the Array object contains the dimensional shape of array
121
- # (e.g. [2,3] for 2D 2x3 array, ...).
122
- def shape
123
- end
124
-
125
- # short-hand for dim[0]
126
- def dim0
127
- end
128
-
129
- # short-hand for dim[1]
130
- def dim1
131
- end
132
-
133
- # short-hand for dim[2]
134
- def dim2
135
- end
136
-
137
- # short-hand for dim[3]
138
- def dim3
139
- end
140
- end
91
+ /* @overload dim
92
+
93
+ (Attribute)
94
+ Returns the Array object contains the dimensional shape of array
95
+ (e.g. [2,3] for 2D 2x3 array, ...).
141
96
  */
142
97
 
143
98
  VALUE
@@ -154,6 +109,13 @@ rb_ca_dim (VALUE self)
154
109
  return dim;
155
110
  }
156
111
 
112
+ /*
113
+ @overload dim0
114
+
115
+ (Attribute)
116
+ Short-hand for "dim[0]"
117
+ */
118
+
157
119
  VALUE
158
120
  rb_ca_dim0 (VALUE self)
159
121
  {
@@ -162,6 +124,13 @@ rb_ca_dim0 (VALUE self)
162
124
  return SIZE2NUM(ca->dim[0]);
163
125
  }
164
126
 
127
+ /*
128
+ @overload dim1
129
+
130
+ (Attribute)
131
+ Short-hand for "dim[1]"
132
+ */
133
+
165
134
  VALUE
166
135
  rb_ca_dim1 (VALUE self)
167
136
  {
@@ -170,6 +139,13 @@ rb_ca_dim1 (VALUE self)
170
139
  return ( ca->ndim >= 2 ) ? SIZE2NUM(ca->dim[1]) : Qnil;
171
140
  }
172
141
 
142
+ /*
143
+ @overload dim2
144
+
145
+ (Attribute)
146
+ Short-hand for 'dim[2]'
147
+ */
148
+
173
149
  VALUE
174
150
  rb_ca_dim2 (VALUE self)
175
151
  {
@@ -178,6 +154,13 @@ rb_ca_dim2 (VALUE self)
178
154
  return ( ca->ndim >= 3 ) ? SIZE2NUM(ca->dim[2]) : Qnil;
179
155
  }
180
156
 
157
+ /*
158
+ @overload dim3
159
+
160
+ (Attribute)
161
+ Short-hand for "dim[3]"
162
+ */
163
+
181
164
  VALUE
182
165
  rb_ca_dim3 (VALUE self)
183
166
  {
@@ -186,12 +169,10 @@ rb_ca_dim3 (VALUE self)
186
169
  return ( ca->ndim >= 4 ) ? SIZE2NUM(ca->dim[3]) : Qnil;
187
170
  }
188
171
 
189
- /* rdoc:
190
- class CArray
191
- # returns the string representaion of the data_type (e.g. "int32", "fixlen")
192
- def data_type_name
193
- end
194
- end
172
+ /* @overload data_type_name
173
+
174
+ (Attribute)
175
+ Returns the string representaion of the data_type (e.g. "int32", "fixlen")
195
176
  */
196
177
 
197
178
  VALUE
@@ -211,12 +192,9 @@ ca_is_scalar (void *ap)
211
192
  return ca_test_flag(ca, CA_FLAG_SCALAR);
212
193
  }
213
194
 
214
- /* rdoc:
215
- class CArray
216
- # returns true if `self` is a CScalar object
217
- def scalar?
218
- end
219
- end
195
+ /* @overload scalar?
196
+
197
+ (Inquiry) Returns true if the object is a CScalar
220
198
  */
221
199
 
222
200
  VALUE
@@ -249,16 +227,9 @@ ca_is_virtual (void *ap)
249
227
  return ( ca_func[ca->obj_type].entity_type == CA_VIRTUAL_ARRAY ) ? 1 : 0;
250
228
  }
251
229
 
252
- /* rdoc:
253
- class CArray
254
- # returns true if `self` is an entity array (not a virtual array).
255
- def entity?
256
- end
230
+ /* @overload entity?
257
231
 
258
- # returns true if `self` is a virtural array (not an entity array).
259
- def virtual?
260
- end
261
- end
232
+ (Inquiry) Returns true if `self` is an entity array (not a virtual array).
262
233
  */
263
234
 
264
235
  VALUE
@@ -269,6 +240,12 @@ rb_ca_is_entity (VALUE self)
269
240
  return ( ca_is_virtual(ca) ) ? Qfalse : Qtrue;
270
241
  }
271
242
 
243
+ /*
244
+ @overload virtual?
245
+
246
+ (Inquiry) Returns true if `self` is a virtural array (not an entity array).
247
+ */
248
+
272
249
  VALUE
273
250
  rb_ca_is_virtual (VALUE self)
274
251
  {
@@ -279,12 +256,9 @@ rb_ca_is_virtual (VALUE self)
279
256
 
280
257
  /* ------------------------------------------------------------------- */
281
258
 
282
- /* rdoc
283
- class CArray
284
- # returns true if `self` is attached.
285
- def attached?
286
- end
287
- end
259
+ /* @overload attached?
260
+
261
+ (Inquiry) Returns true if the object is attached.
288
262
  */
289
263
 
290
264
  VALUE
@@ -297,12 +271,9 @@ rb_ca_is_attached (VALUE self)
297
271
 
298
272
  /* ------------------------------------------------------------------- */
299
273
 
300
- /* rdoc
301
- class CArray
302
- # returns true if `self` is empty.
303
- def empty?
304
- end
305
- end
274
+ /* @overload empty?
275
+
276
+ (Inquiry) Returns true if the object is empty.
306
277
  */
307
278
 
308
279
  VALUE
@@ -333,12 +304,9 @@ ca_is_readonly (void *ap)
333
304
  }
334
305
  }
335
306
 
336
- /* rdoc
337
- class CArray
338
- # returns true if `self` is read-only carray
339
- def read_only?
340
- end
341
- end
307
+ /* @overload read_only?
308
+
309
+ (Inquiry) Returns true if the object is read-only
342
310
  */
343
311
 
344
312
  VALUE
@@ -369,12 +337,9 @@ ca_is_mask_array (void *ap)
369
337
  }
370
338
  }
371
339
 
372
- /* rdoc
373
- class CArray
374
- # returns true if `self` is mask array (don't confuse with "masked array")
375
- def mask_array?
376
- end
377
- end
340
+ /* @overload mask_array?
341
+
342
+ (Inquiry) Returns true if `self` is mask array (don't confuse with "masked array")
378
343
  */
379
344
 
380
345
  VALUE
@@ -405,12 +370,9 @@ ca_is_value_array (void *ap)
405
370
  }
406
371
  }
407
372
 
408
- /* rdoc
409
- class CArray
410
- # returns true if `self` is a value array
411
- def value_array?
412
- end
413
- end
373
+ /* @overload value_array?
374
+
375
+ (Inquiry) Returns true if `self` is a value array
414
376
  */
415
377
 
416
378
  VALUE
@@ -430,12 +392,9 @@ ca_is_fixlen_type (void *ap)
430
392
  return ( ca->data_type == CA_FIXLEN );
431
393
  }
432
394
 
433
- /* rdoc
434
- class CArray
435
- # return true if `self` is fixed-length type array
436
- def filxen?
437
- end
438
- end
395
+ /* @overload fixlen?
396
+
397
+ (Inquiry) Returns true if `self` is fixed-length type array
439
398
  */
440
399
 
441
400
  VALUE
@@ -455,12 +414,9 @@ ca_is_boolean_type (void *ap)
455
414
  return ( ca->data_type == CA_BOOLEAN );
456
415
  }
457
416
 
458
- /* rdoc
459
- class CArray
460
- # return true if `self` is boolean type array
461
- def boolean?
462
- end
463
- end
417
+ /* @overload boolean?
418
+
419
+ (Inquiry) Return true if `self` is boolean type array
464
420
  */
465
421
 
466
422
  VALUE
@@ -481,12 +437,9 @@ ca_is_numeric_type (void *ap)
481
437
  ( ca->data_type <= CA_CMPLX256 ) );
482
438
  }
483
439
 
484
- /* rdoc
485
- class CArray
486
- # return true if `self` is numeric type array
487
- def numeric?
488
- end
489
- end
440
+ /* @overload numeric?
441
+
442
+ (Inquiry) Returns true if `self` is numeric type array
490
443
  */
491
444
 
492
445
  VALUE
@@ -507,12 +460,9 @@ ca_is_integer_type (void *ap)
507
460
  ( ca->data_type <= CA_UINT64 ) );
508
461
  }
509
462
 
510
- /* rdoc
511
- class CArray
512
- # return true if `self` is integer type array
513
- def integer?
514
- end
515
- end
463
+ /* @overload integer?
464
+
465
+ (Inquiry) Returns true if `self` is integer type array
516
466
  */
517
467
 
518
468
  VALUE
@@ -540,12 +490,9 @@ ca_is_unsigned_type (void *ap)
540
490
  }
541
491
  }
542
492
 
543
- /* rdoc
544
- class CArray
545
- # return true if `self` is unsigned integer type array
546
- def unsigned?
547
- end
548
- end
493
+ /* @overload unsigned?
494
+
495
+ (Inquiry) Return true if `self` is unsigned integer type array
549
496
  */
550
497
 
551
498
  VALUE
@@ -566,12 +513,9 @@ ca_is_float_type (void *ap)
566
513
  ( ca->data_type <= CA_FLOAT128 ) );
567
514
  }
568
515
 
569
- /* rdoc
570
- class CArray
571
- # return true if `self` is float type array
572
- def float?
573
- end
574
- end
516
+ /* @overload float?
517
+
518
+ (Inquiry) Returns true if `self` is float type array
575
519
  */
576
520
 
577
521
  VALUE
@@ -592,12 +536,9 @@ ca_is_complex_type (void *ap)
592
536
  ( ca->data_type <= CA_CMPLX256 ) );
593
537
  }
594
538
 
595
- /* rdoc
596
- class CArray
597
- # return true if `self` is complex type array
598
- def complex?
599
- end
600
- end
539
+ /* @overload complex?
540
+
541
+ (Inquiry) Returns true if `self` is complex type array
601
542
  */
602
543
 
603
544
  VALUE
@@ -617,12 +558,9 @@ ca_is_object_type (void *ap)
617
558
  return ( ca->data_type == CA_OBJECT );
618
559
  }
619
560
 
620
- /* rdoc
621
- class CArray
622
- # return true if `self` is object type array
623
- def object?
624
- end
625
- end
561
+ /* @overload object?
562
+
563
+ (Inquiry) Returns true if `self` is object type array
626
564
  */
627
565
 
628
566
  VALUE
@@ -637,13 +575,11 @@ rb_ca_is_object_type (VALUE self)
637
575
 
638
576
  static ID id_parent;
639
577
 
640
- /* rdoc
641
- class CArray
642
- # returns the parent carray if `self` has parent,
643
- # or returns nil if `self` has no parent.
644
- def parent
645
- end
646
- end
578
+ /* @overload parent
579
+
580
+ (Attribute)
581
+ Returns the parent carray if `self` has parent,
582
+ or returns nil if `self` has no parent.
647
583
  */
648
584
 
649
585
  VALUE
@@ -667,13 +603,11 @@ rb_ca_set_parent (VALUE self, VALUE obj)
667
603
 
668
604
  static ID id_data_class;
669
605
 
670
- /* rdoc
671
- class CArray
672
- # returns data_class if `self` is fixed-length type and it
673
- # has the data class.
674
- def data_class
675
- end
676
- end
606
+ /* @overload data_class
607
+
608
+ (Attribute)
609
+ Returns data_class if `self` is fixed-length type and it
610
+ has the data class.
677
611
  */
678
612
 
679
613
  VALUE
@@ -727,12 +661,9 @@ rb_ca_data_class (VALUE self)
727
661
  }
728
662
  }
729
663
 
730
- /* rdoc
731
- class CArray
732
- # return true if `self` is fixed-length type and has the data class.
733
- def has_data_class?
734
- end
735
- end
664
+ /* @overload has_data_class?
665
+
666
+ (Inquiry) Returns true if `self` is fixed-length type and has the data class.
736
667
  */
737
668
 
738
669
  VALUE
@@ -800,7 +731,11 @@ ca_root_array (void *ap)
800
731
  }
801
732
  }
802
733
 
803
- /* CArray#root_array */
734
+ /* @overload root_array
735
+
736
+ (Attribute)
737
+ Returns the object at the root of chain of reference.
738
+ */
804
739
 
805
740
  static VALUE
806
741
  rb_ca_root_array (VALUE self)
@@ -845,7 +780,11 @@ rb_ca_ancestors_loop (VALUE self, VALUE list)
845
780
  }
846
781
  }
847
782
 
848
- /* CArray#ancesters */
783
+ /* @overload ancestors
784
+
785
+ (Attribute)
786
+ Returns the list of objects in the chain of reference.
787
+ */
849
788
 
850
789
  static VALUE
851
790
  rb_ca_ancestors (VALUE self)