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.
- checksums.yaml +4 -4
- data/{LICENSES → LICENSE} +0 -0
- data/NEWS.md +42 -0
- data/README.md +5 -5
- data/TODO.md +16 -0
- data/carray.gemspec +9 -5
- data/ext/ca_iter_block.c +3 -5
- data/ext/ca_iter_dimension.c +4 -5
- data/ext/ca_iter_window.c +2 -4
- data/ext/ca_obj_array.c +394 -124
- data/ext/ca_obj_bitarray.c +3 -5
- data/ext/ca_obj_bitfield.c +3 -5
- data/ext/ca_obj_block.c +6 -8
- data/ext/ca_obj_fake.c +3 -5
- data/ext/ca_obj_farray.c +3 -5
- data/ext/ca_obj_field.c +15 -17
- data/ext/ca_obj_grid.c +5 -6
- data/ext/ca_obj_mapping.c +2 -4
- data/ext/ca_obj_object.c +3 -5
- data/ext/ca_obj_reduce.c +2 -4
- data/ext/ca_obj_refer.c +5 -7
- data/ext/ca_obj_repeat.c +2 -4
- data/ext/ca_obj_select.c +2 -4
- data/ext/ca_obj_shift.c +3 -5
- data/ext/ca_obj_transpose.c +3 -5
- data/ext/ca_obj_unbound_repeat.c +58 -81
- data/ext/ca_obj_window.c +7 -9
- data/ext/carray.h +13 -8
- data/ext/carray_access.c +111 -18
- data/ext/carray_attribute.c +136 -197
- data/ext/carray_call_cfunc.c +1 -3
- data/ext/carray_cast.c +344 -143
- data/ext/carray_cast_func.rb +1 -2
- data/ext/carray_class.c +28 -36
- data/ext/carray_conversion.c +49 -59
- data/ext/carray_copy.c +16 -32
- data/ext/carray_core.c +51 -44
- data/ext/carray_element.c +25 -44
- data/ext/carray_generate.c +71 -50
- data/ext/carray_iterator.c +13 -15
- data/ext/carray_loop.c +53 -82
- data/ext/carray_mask.c +87 -117
- data/ext/carray_math.rb +8 -10
- data/ext/carray_mathfunc.c +1 -3
- data/ext/carray_numeric.c +19 -3
- data/ext/carray_operator.c +45 -32
- data/ext/carray_order.c +72 -65
- data/ext/carray_sort_addr.c +14 -21
- data/ext/carray_stat.c +1 -3
- data/ext/carray_stat_proc.rb +2 -4
- data/ext/carray_test.c +28 -30
- data/ext/carray_undef.c +1 -3
- data/ext/carray_utils.c +12 -4
- data/ext/extconf.rb +1 -1
- data/ext/mkmath.rb +1 -1
- data/ext/ruby_carray.c +11 -6
- data/ext/ruby_ccomplex.c +1 -3
- data/ext/ruby_float_func.c +1 -3
- data/ext/version.h +5 -7
- data/lib/carray.rb +2 -0
- data/lib/carray/autoload/autoload_gem_numo_narray.rb +6 -6
- data/lib/carray/broadcast.rb +45 -0
- data/lib/carray/construct.rb +21 -4
- data/lib/carray/iterator.rb +1 -0
- data/lib/carray/ordering.rb +28 -2
- data/spec/Classes/CABitfield_spec.rb +58 -0
- data/spec/Classes/CABlockIterator_spec.rb +114 -0
- data/spec/Classes/CABlock_spec.rb +205 -0
- data/spec/Classes/CAField_spec.rb +39 -0
- data/spec/Classes/CAGrid_spec.rb +75 -0
- data/spec/Classes/CAMap_spec.rb +0 -0
- data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
- data/spec/Classes/CAObject_attribute_spec.rb +33 -0
- data/spec/Classes/CAObject_spec.rb +33 -0
- data/spec/Classes/CARefer_spec.rb +93 -0
- data/spec/Classes/CARepeat_spec.rb +65 -0
- data/spec/Classes/CASelect_spec.rb +22 -0
- data/spec/Classes/CAShift_spec.rb +16 -0
- data/spec/Classes/CAStruct_spec.rb +71 -0
- data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
- data/spec/Classes/CAUnboudRepeat_spec.rb +78 -0
- data/spec/Classes/CAWindow_spec.rb +54 -0
- data/spec/Classes/CAWrap_spec.rb +8 -0
- data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
- data/spec/Classes/CScalar_spec.rb +55 -0
- data/spec/Features/feature_130_spec.rb +19 -0
- data/spec/Features/feature_attributes_spec.rb +280 -0
- data/spec/Features/feature_boolean_spec.rb +97 -0
- data/spec/Features/feature_broadcast.rb +100 -0
- data/spec/Features/feature_cast_function.rb +19 -0
- data/spec/Features/feature_cast_spec.rb +33 -0
- data/spec/Features/feature_class_spec.rb +84 -0
- data/spec/Features/feature_complex_spec.rb +42 -0
- data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
- data/spec/Features/feature_convert_spec.rb +46 -0
- data/spec/Features/feature_copy_spec.rb +123 -0
- data/spec/Features/feature_creation_spec.rb +84 -0
- data/spec/Features/feature_element_spec.rb +144 -0
- data/spec/Features/feature_extream_spec.rb +54 -0
- data/spec/Features/feature_generate_spec.rb +74 -0
- data/spec/Features/feature_index_spec.rb +69 -0
- data/spec/Features/feature_mask_spec.rb +574 -0
- data/spec/Features/feature_math_spec.rb +97 -0
- data/spec/Features/feature_order_spec.rb +146 -0
- data/spec/Features/feature_ref_store_spec.rb +209 -0
- data/spec/Features/feature_serialization_spec.rb +125 -0
- data/spec/Features/feature_stat_spec.rb +397 -0
- data/spec/Features/feature_virtual_spec.rb +48 -0
- data/spec/Features/method_eq_spec.rb +81 -0
- data/spec/Features/method_is_nan_spec.rb +12 -0
- data/spec/Features/method_map_spec.rb +54 -0
- data/spec/Features/method_max_with.rb +20 -0
- data/spec/Features/method_min_with.rb +19 -0
- data/spec/Features/method_ne_spec.rb +18 -0
- data/spec/Features/method_project_spec.rb +188 -0
- data/spec/Features/method_ref_spec.rb +27 -0
- data/spec/Features/method_round_spec.rb +11 -0
- data/spec/Features/method_s_linspace_spec.rb +48 -0
- data/spec/Features/method_s_span_spec.rb +14 -0
- data/spec/Features/method_seq_spec.rb +47 -0
- data/spec/Features/method_sort_with.rb +43 -0
- data/spec/Features/method_sorted_with.rb +29 -0
- data/spec/Features/method_span_spec.rb +42 -0
- data/spec/Features/method_wrap_readonly_spec.rb +43 -0
- data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
- data/spec/spec_all.rb +0 -1
- data/utils/convert_test.rb +73 -0
- data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
- metadata +77 -60
- data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
- data/spec/CArray/bug/store_spec.rb +0 -27
- data/spec/CArray/index/repeat_spec.rb +0 -10
- data/spec/CArray/method/eq_spec.rb +0 -80
- data/spec/CArray/method/is_nan_spec.rb +0 -12
- data/spec/CArray/method/ne_spec.rb +0 -18
- data/spec/CArray/method/round_spec.rb +0 -11
- data/spec/CArray/object/_attribute_spec.rb +0 -32
- data/spec/CArray/object/s_new_spec.rb +0 -31
- data/spec/CArray/serialize/Serialization_spec.rb +0 -89
- data/test/test_130.rb +0 -23
- data/test/test_ALL.rb +0 -49
- data/test/test_CABitfield.rb +0 -59
- data/test/test_CABlock.rb +0 -208
- data/test/test_CAField.rb +0 -40
- data/test/test_CAGrid.rb +0 -76
- data/test/test_CAMmap.rb +0 -11
- data/test/test_CARefer.rb +0 -94
- data/test/test_CARepeat.rb +0 -66
- data/test/test_CASelect.rb +0 -23
- data/test/test_CAShift.rb +0 -17
- data/test/test_CAWindow.rb +0 -55
- data/test/test_CAWrap.rb +0 -9
- data/test/test_CComplex.rb +0 -83
- data/test/test_CScalar.rb +0 -91
- data/test/test_attribute.rb +0 -281
- data/test/test_block_iterator.rb +0 -17
- data/test/test_boolean.rb +0 -99
- data/test/test_cast.rb +0 -33
- data/test/test_class.rb +0 -85
- data/test/test_complex.rb +0 -43
- data/test/test_convert.rb +0 -79
- data/test/test_copy.rb +0 -141
- data/test/test_creation.rb +0 -85
- data/test/test_element.rb +0 -146
- data/test/test_extream.rb +0 -55
- data/test/test_generate.rb +0 -75
- data/test/test_index.rb +0 -71
- data/test/test_mask.rb +0 -578
- data/test/test_math.rb +0 -98
- data/test/test_order.rb +0 -147
- data/test/test_ref_store.rb +0 -211
- data/test/test_stat.rb +0 -406
- data/test/test_struct.rb +0 -72
- data/test/test_virtual.rb +0 -49
data/ext/carray_access.c
CHANGED
@@ -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
|
-
/*
|
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
|
-
/*
|
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
|
-
|
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
|
-
|
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
|
-
|
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 (
|
649
|
-
|
650
|
-
|
651
|
-
|
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
|
-
/*
|
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
|
-
|
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
|
-
/*
|
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
|
-
/*
|
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
|
-
/*
|
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
|
-
/*
|
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
|
|
data/ext/carray_attribute.c
CHANGED
@@ -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
|
-
/*
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
-
/*
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
/*
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
-
/*
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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
|
-
/*
|
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
|
-
|
100
|
-
|
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
|
-
/*
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
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
|
-
/*
|
190
|
-
|
191
|
-
|
192
|
-
|
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
|
-
/*
|
215
|
-
|
216
|
-
|
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
|
-
/*
|
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
|
-
|
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
|
-
/*
|
283
|
-
|
284
|
-
|
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
|
-
/*
|
301
|
-
|
302
|
-
|
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
|
-
/*
|
337
|
-
|
338
|
-
|
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
|
-
/*
|
373
|
-
|
374
|
-
|
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
|
-
/*
|
409
|
-
|
410
|
-
|
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
|
-
/*
|
434
|
-
|
435
|
-
|
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
|
-
/*
|
459
|
-
|
460
|
-
|
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
|
-
/*
|
485
|
-
|
486
|
-
|
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
|
-
/*
|
511
|
-
|
512
|
-
|
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
|
-
/*
|
544
|
-
|
545
|
-
|
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
|
-
/*
|
570
|
-
|
571
|
-
|
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
|
-
/*
|
596
|
-
|
597
|
-
|
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
|
-
/*
|
621
|
-
|
622
|
-
|
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
|
-
/*
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
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
|
-
/*
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
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
|
-
/*
|
731
|
-
|
732
|
-
|
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
|
-
/*
|
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
|
-
/*
|
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)
|