carray 1.5.1 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
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)