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_call_cfunc.c
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
carray_math_call.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
|
|
data/ext/carray_cast.c
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
carray_cast.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
|
|
@@ -281,7 +279,11 @@ rb_ca_object_to_data_class (VALUE self, VALUE rtype, ca_size_t bytes)
|
|
281
279
|
return obj;
|
282
280
|
}
|
283
281
|
|
284
|
-
/*
|
282
|
+
/* @overload to_type (data_type, bytes: nil)
|
283
|
+
|
284
|
+
(Conversion) Returns an array of elements that are converted
|
285
|
+
to the given data type from the object.
|
286
|
+
*/
|
285
287
|
|
286
288
|
static VALUE
|
287
289
|
rb_ca_to_type_internal (int argc, VALUE *argv, VALUE self)
|
@@ -341,15 +343,15 @@ rb_ca_to_type (VALUE self, VALUE rtype, VALUE rbytes)
|
|
341
343
|
return rb_ca_to_type_internal(2, args, self);
|
342
344
|
}
|
343
345
|
|
344
|
-
#define
|
345
|
-
rb_ca_to_## type (VALUE self) \
|
346
|
+
#define rb_ca_to_type_method_body(code) \
|
346
347
|
{ \
|
347
348
|
VALUE rcode = INT2NUM(code); \
|
348
349
|
return rb_ca_to_type_internal(1, &rcode, self); \
|
349
350
|
}
|
350
351
|
|
351
|
-
/*
|
352
|
-
|
352
|
+
/* @overload fixlen (bytes:)
|
353
|
+
|
354
|
+
(Conversion) Short-Hand of "CArray#to_type(:fixlen, bytes:)"
|
353
355
|
*/
|
354
356
|
|
355
357
|
VALUE
|
@@ -363,57 +365,149 @@ rb_ca_to_fixlen (int argc, VALUE *argv, VALUE self)
|
|
363
365
|
return rb_ca_to_type_internal(2, list, self);
|
364
366
|
}
|
365
367
|
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
VALUE
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
VALUE
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
368
|
+
/* @overload fixlen (bytes:)
|
369
|
+
|
370
|
+
(Conversion) Short-Hand of "CArray#to_type(:boolean)"
|
371
|
+
*/
|
372
|
+
VALUE rb_ca_to_boolean (VALUE self)
|
373
|
+
{
|
374
|
+
rb_ca_to_type_method_body(CA_BOOLEAN);
|
375
|
+
}
|
376
|
+
|
377
|
+
/* @overload int8
|
378
|
+
|
379
|
+
(Conversion) Short-Hand of "CArray#to_type(:int8)"
|
380
|
+
*/
|
381
|
+
VALUE rb_ca_to_int8 (VALUE self)
|
382
|
+
{
|
383
|
+
rb_ca_to_type_method_body(CA_INT8);
|
384
|
+
}
|
385
|
+
|
386
|
+
/* @overload uint8
|
387
|
+
|
388
|
+
(Conversion) Short-Hand of "CArray#to_type(:uint8)"
|
389
|
+
*/
|
390
|
+
VALUE rb_ca_to_uint8 (VALUE self)
|
391
|
+
{
|
392
|
+
rb_ca_to_type_method_body(CA_UINT8);
|
393
|
+
}
|
394
|
+
|
395
|
+
/* @overload int16
|
396
|
+
|
397
|
+
(Conversion) Short-Hand of "CArray#to_type(:int16)"
|
398
|
+
*/
|
399
|
+
VALUE rb_ca_to_int16 (VALUE self)
|
400
|
+
{
|
401
|
+
rb_ca_to_type_method_body(CA_INT16);
|
402
|
+
}
|
403
|
+
|
404
|
+
/* @overload uint16
|
405
|
+
|
406
|
+
(Conversion) Short-Hand of "CArray#to_type(:uint16)"
|
407
|
+
*/
|
408
|
+
VALUE rb_ca_to_uint16 (VALUE self)
|
409
|
+
{
|
410
|
+
rb_ca_to_type_method_body(CA_UINT16);
|
411
|
+
}
|
412
|
+
|
413
|
+
/* @overload int32
|
414
|
+
|
415
|
+
(Conversion) Short-Hand of "CArray#to_type(:int32)"
|
416
|
+
*/
|
417
|
+
VALUE rb_ca_to_int32 (VALUE self)
|
418
|
+
{
|
419
|
+
rb_ca_to_type_method_body(CA_INT32);
|
420
|
+
}
|
421
|
+
|
422
|
+
/* @overload uint32
|
423
|
+
|
424
|
+
(Conversion) Short-Hand of "CArray#to_type(:uint32)"
|
415
425
|
*/
|
426
|
+
VALUE rb_ca_to_uint32 (VALUE self)
|
427
|
+
{
|
428
|
+
rb_ca_to_type_method_body(CA_UINT32);
|
429
|
+
}
|
416
430
|
|
431
|
+
/* @overload int64
|
432
|
+
|
433
|
+
(Conversion) Short-Hand of "CArray#to_type(:int64)"
|
434
|
+
*/
|
435
|
+
VALUE rb_ca_to_int64 (VALUE self)
|
436
|
+
{
|
437
|
+
rb_ca_to_type_method_body(CA_INT64);
|
438
|
+
}
|
439
|
+
|
440
|
+
/* @overload uint64
|
441
|
+
|
442
|
+
(Conversion) Short-Hand of "CArray#to_type(:uint64)"
|
443
|
+
*/
|
444
|
+
VALUE rb_ca_to_uint64 (VALUE self)
|
445
|
+
{
|
446
|
+
rb_ca_to_type_method_body(CA_UINT64);
|
447
|
+
}
|
448
|
+
|
449
|
+
/* @overload float32
|
450
|
+
|
451
|
+
(Conversion) Short-Hand of "CArray#to_type(:float32)"
|
452
|
+
*/
|
453
|
+
VALUE rb_ca_to_float32 (VALUE self)
|
454
|
+
{
|
455
|
+
rb_ca_to_type_method_body(CA_FLOAT32);
|
456
|
+
}
|
457
|
+
|
458
|
+
/* @overload float64
|
459
|
+
|
460
|
+
(Conversion) Short-Hand of "CArray#to_type(:float64)"
|
461
|
+
*/
|
462
|
+
VALUE rb_ca_to_float64 (VALUE self)
|
463
|
+
{
|
464
|
+
rb_ca_to_type_method_body(CA_FLOAT64);
|
465
|
+
}
|
466
|
+
|
467
|
+
/* @overload float128
|
468
|
+
|
469
|
+
(Conversion) Short-Hand of "CArray#to_type(:float128)"
|
470
|
+
*/
|
471
|
+
VALUE rb_ca_to_float128 (VALUE self)
|
472
|
+
{
|
473
|
+
rb_ca_to_type_method_body(CA_FLOAT128);
|
474
|
+
}
|
475
|
+
|
476
|
+
/* @overload cmplx64
|
477
|
+
|
478
|
+
(Conversion) Short-Hand of "CArray#to_type(:cmplx64)"
|
479
|
+
*/
|
480
|
+
VALUE rb_ca_to_cmplx64 (VALUE self)
|
481
|
+
{
|
482
|
+
rb_ca_to_type_method_body(CA_CMPLX64);
|
483
|
+
}
|
484
|
+
|
485
|
+
/* @overload cmplx128
|
486
|
+
|
487
|
+
(Conversion) Short-Hand of "CArray#to_type(:cmplx128)"
|
488
|
+
*/
|
489
|
+
VALUE rb_ca_to_cmplx128 (VALUE self)
|
490
|
+
{
|
491
|
+
rb_ca_to_type_method_body(CA_CMPLX128);
|
492
|
+
}
|
493
|
+
|
494
|
+
/* @overload cmplx256
|
495
|
+
|
496
|
+
(Conversion) Short-Hand of "CArray#to_type(:cmplx256)"
|
497
|
+
*/
|
498
|
+
VALUE rb_ca_to_cmplx256 (VALUE self)
|
499
|
+
{
|
500
|
+
rb_ca_to_type_method_body(CA_CMPLX256);
|
501
|
+
}
|
502
|
+
|
503
|
+
/* @overload object
|
504
|
+
|
505
|
+
(Conversion) Short-Hand of "CArray#to_type(:object)"
|
506
|
+
*/
|
507
|
+
VALUE rb_ca_to_VALUE (VALUE self)
|
508
|
+
{
|
509
|
+
rb_ca_to_type_method_body(CA_OBJECT);
|
510
|
+
}
|
417
511
|
|
418
512
|
/* ------------------------------------------------------------------------*/
|
419
513
|
|
@@ -445,6 +539,11 @@ rb_ca_as_type_internal (int argc, VALUE *argv, VALUE self)
|
|
445
539
|
return obj;
|
446
540
|
}
|
447
541
|
|
542
|
+
/* @overload as_type (data_type, bytes: nil)
|
543
|
+
|
544
|
+
(Reference) Creates CAFake object of the given data type refers to the object.
|
545
|
+
*/
|
546
|
+
|
448
547
|
VALUE
|
449
548
|
rb_ca_as_type (VALUE self, VALUE rtype, VALUE rbytes)
|
450
549
|
{
|
@@ -454,17 +553,16 @@ rb_ca_as_type (VALUE self, VALUE rtype, VALUE rbytes)
|
|
454
553
|
return rb_ca_as_type_internal(2, args, self);
|
455
554
|
}
|
456
555
|
|
457
|
-
#define
|
458
|
-
rb_ca_as_## type (VALUE self) \
|
556
|
+
#define rb_ca_as_type_method_body(code) \
|
459
557
|
{ \
|
460
558
|
VALUE rcode = INT2NUM(code); \
|
461
559
|
return rb_ca_as_type_internal(1, &rcode, self); \
|
462
560
|
}
|
463
561
|
|
464
|
-
/*
|
465
|
-
CArray#as_fixlen([:bytes=>bytes]])
|
466
|
-
*/
|
562
|
+
/* @overload as_fixlen (bytes: nil)
|
467
563
|
|
564
|
+
(Reference) Short-Hand of `CArray#as_type(:fixlen, bytes: nil)`
|
565
|
+
*/
|
468
566
|
VALUE
|
469
567
|
rb_ca_as_fixlen (int argc, VALUE *argv, VALUE self)
|
470
568
|
{
|
@@ -476,56 +574,149 @@ rb_ca_as_fixlen (int argc, VALUE *argv, VALUE self)
|
|
476
574
|
return rb_ca_as_type_internal(2, list, self);
|
477
575
|
}
|
478
576
|
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
VALUE
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
VALUE
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
/*
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
577
|
+
/* @overload as_boolean
|
578
|
+
|
579
|
+
(Reference) Short-Hand of `CArray#as_type(:boolean)`
|
580
|
+
*/
|
581
|
+
VALUE rb_ca_as_boolean (VALUE self)
|
582
|
+
{
|
583
|
+
rb_ca_as_type_method_body(CA_BOOLEAN);
|
584
|
+
}
|
585
|
+
|
586
|
+
/* @overload as_int8
|
587
|
+
|
588
|
+
(Reference) Short-Hand of `CArray#as_type(:int8)`
|
589
|
+
*/
|
590
|
+
VALUE rb_ca_as_int8 (VALUE self)
|
591
|
+
{
|
592
|
+
rb_ca_as_type_method_body(CA_INT8);
|
593
|
+
}
|
594
|
+
|
595
|
+
/* @overload as_uint8
|
596
|
+
|
597
|
+
(Reference) Short-Hand of `CArray#as_type(:uint8)`
|
598
|
+
*/
|
599
|
+
VALUE rb_ca_as_uint8 (VALUE self)
|
600
|
+
{
|
601
|
+
rb_ca_as_type_method_body(CA_UINT8);
|
602
|
+
}
|
603
|
+
|
604
|
+
/* @overload as_int16
|
605
|
+
|
606
|
+
(Reference) Short-Hand of `CArray#as_type(:int16)`
|
607
|
+
*/
|
608
|
+
VALUE rb_ca_as_int16 (VALUE self)
|
609
|
+
{
|
610
|
+
rb_ca_as_type_method_body(CA_INT16);
|
611
|
+
}
|
612
|
+
|
613
|
+
/* @overload as_uint16
|
614
|
+
|
615
|
+
(Reference) Short-Hand of `CArray#as_type(:uint16)`
|
616
|
+
*/
|
617
|
+
VALUE rb_ca_as_uint16 (VALUE self)
|
618
|
+
{
|
619
|
+
rb_ca_as_type_method_body(CA_UINT16);
|
620
|
+
}
|
621
|
+
|
622
|
+
/* @overload as_int32
|
623
|
+
|
624
|
+
(Reference) Short-Hand of `CArray#as_type(:int32)`
|
625
|
+
*/
|
626
|
+
VALUE rb_ca_as_int32 (VALUE self)
|
627
|
+
{
|
628
|
+
rb_ca_as_type_method_body(CA_INT32);
|
629
|
+
}
|
630
|
+
|
631
|
+
/* @overload as_uint32
|
632
|
+
|
633
|
+
(Reference) Short-Hand of `CArray#as_type(:uint32)`
|
634
|
+
*/
|
635
|
+
VALUE rb_ca_as_uint32 (VALUE self)
|
636
|
+
{
|
637
|
+
rb_ca_as_type_method_body(CA_UINT32);
|
638
|
+
}
|
639
|
+
|
640
|
+
/* @overload as_int64
|
641
|
+
|
642
|
+
(Reference) Short-Hand of `CArray#as_type(:int64)`
|
527
643
|
*/
|
644
|
+
VALUE rb_ca_as_int64 (VALUE self)
|
645
|
+
{
|
646
|
+
rb_ca_as_type_method_body(CA_INT64);
|
647
|
+
}
|
528
648
|
|
649
|
+
/* @overload as_uint64
|
650
|
+
|
651
|
+
(Reference) Short-Hand of `CArray#as_type(:uint64)`
|
652
|
+
*/
|
653
|
+
VALUE rb_ca_as_uint64 (VALUE self)
|
654
|
+
{
|
655
|
+
rb_ca_as_type_method_body(CA_UINT64);
|
656
|
+
}
|
657
|
+
|
658
|
+
/* @overload as_float32
|
659
|
+
|
660
|
+
(Reference) Short-Hand of `CArray#as_type(:float32)`
|
661
|
+
*/
|
662
|
+
VALUE rb_ca_as_float32 (VALUE self)
|
663
|
+
{
|
664
|
+
rb_ca_as_type_method_body(CA_FLOAT32);
|
665
|
+
}
|
666
|
+
|
667
|
+
/* @overload as_float64
|
668
|
+
|
669
|
+
(Reference) Short-Hand of `CArray#as_type(:float64)`
|
670
|
+
*/
|
671
|
+
VALUE rb_ca_as_float64 (VALUE self)
|
672
|
+
{
|
673
|
+
rb_ca_as_type_method_body(CA_FLOAT64);
|
674
|
+
}
|
675
|
+
|
676
|
+
/* @overload as_float128
|
677
|
+
|
678
|
+
(Reference) Short-Hand of `CArray#as_type(:float128)`
|
679
|
+
*/
|
680
|
+
VALUE rb_ca_as_float128 (VALUE self)
|
681
|
+
{
|
682
|
+
rb_ca_as_type_method_body(CA_FLOAT128);
|
683
|
+
}
|
684
|
+
|
685
|
+
/* @overload as_cmplx64
|
686
|
+
|
687
|
+
(Reference) Short-Hand of `CArray#as_type(:cmplx64)`
|
688
|
+
*/
|
689
|
+
VALUE rb_ca_as_cmplx64 (VALUE self)
|
690
|
+
{
|
691
|
+
rb_ca_as_type_method_body(CA_CMPLX64);
|
692
|
+
}
|
693
|
+
|
694
|
+
/* @overload as_cmplx128
|
695
|
+
|
696
|
+
(Reference) Short-Hand of `CArray#as_type(:cmplx128)`
|
697
|
+
*/
|
698
|
+
VALUE rb_ca_as_cmplx128 (VALUE self)
|
699
|
+
{
|
700
|
+
rb_ca_as_type_method_body(CA_CMPLX128);
|
701
|
+
}
|
702
|
+
|
703
|
+
/* @overload as_cmplx256
|
704
|
+
|
705
|
+
(Reference) Short-Hand of `CArray#as_type(:cmplx256)`
|
706
|
+
*/
|
707
|
+
VALUE rb_ca_as_cmplx256 (VALUE self)
|
708
|
+
{
|
709
|
+
rb_ca_as_type_method_body(CA_CMPLX256);
|
710
|
+
}
|
711
|
+
|
712
|
+
/* @overload as_object
|
713
|
+
|
714
|
+
(Reference) Short-Hand of `CArray#as_type(:object)`
|
715
|
+
*/
|
716
|
+
VALUE rb_ca_as_VALUE (VALUE self)
|
717
|
+
{
|
718
|
+
rb_ca_as_type_method_body(CA_OBJECT);
|
719
|
+
}
|
529
720
|
|
530
721
|
/* ------------------------------------------------------------------------*/
|
531
722
|
|
@@ -643,9 +834,9 @@ rb_ca_wrap_writable (VALUE arg, VALUE rtype)
|
|
643
834
|
return obj;
|
644
835
|
}
|
645
836
|
|
646
|
-
/*
|
647
|
-
|
648
|
-
|
837
|
+
/* @overload wrap_writable (other, date_type = nil)
|
838
|
+
|
839
|
+
[TBD]
|
649
840
|
*/
|
650
841
|
|
651
842
|
static VALUE
|
@@ -708,9 +899,14 @@ rb_ca_wrap_readonly (VALUE arg, VALUE rtype)
|
|
708
899
|
obj = rb_cscalar_new_with_value(data_type, 0, obj);
|
709
900
|
}
|
710
901
|
else {
|
711
|
-
|
712
|
-
|
713
|
-
|
902
|
+
volatile VALUE ref = obj;
|
903
|
+
if ( ! RB_OBJ_FROZEN(ref) ) {
|
904
|
+
ref = rb_obj_dup(ref);
|
905
|
+
rb_obj_freeze(ref);
|
906
|
+
}
|
907
|
+
ca_size_t dim = RSTRING_LEN(ref)/ca_sizeof[data_type];
|
908
|
+
obj = rb_ca_wrap_new(data_type, 1, &dim, ca_sizeof[data_type], NULL, RSTRING_PTR(ref));
|
909
|
+
rb_ivar_set(obj, rb_intern("referred_object"), ref);
|
714
910
|
}
|
715
911
|
}
|
716
912
|
else if ( NIL_P(obj) ) { /* nil */
|
@@ -761,9 +957,9 @@ rb_ca_wrap_readonly (VALUE arg, VALUE rtype)
|
|
761
957
|
return obj;
|
762
958
|
}
|
763
959
|
|
764
|
-
/*
|
765
|
-
|
766
|
-
|
960
|
+
/* @overload wrap_readonly (other, date_type = nil)
|
961
|
+
|
962
|
+
[TBD]
|
767
963
|
*/
|
768
964
|
|
769
965
|
static VALUE
|
@@ -812,6 +1008,11 @@ rb_ca_cast (volatile VALUE self)
|
|
812
1008
|
return obj;
|
813
1009
|
}
|
814
1010
|
|
1011
|
+
/* @overload cast (value)
|
1012
|
+
|
1013
|
+
[TBD]
|
1014
|
+
*/
|
1015
|
+
|
815
1016
|
static VALUE
|
816
1017
|
rb_ca_s_cast (VALUE klass, VALUE val)
|
817
1018
|
{
|
@@ -852,12 +1053,12 @@ rb_ca_cast_self_or_other (volatile VALUE *self, volatile VALUE *other)
|
|
852
1053
|
*self = rb_cscalar_new_with_value(CA_BOOLEAN, 0, *self);
|
853
1054
|
break;
|
854
1055
|
default:
|
855
|
-
|
1056
|
+
#ifdef HAVE_COMPLEX_H
|
856
1057
|
if ( rb_obj_is_kind_of(*self, rb_cCComplex) ) {
|
857
1058
|
*self = rb_cscalar_new_with_value(CA_CMPLX128, 0, *self);
|
858
1059
|
break;
|
859
1060
|
}
|
860
|
-
|
1061
|
+
#endif
|
861
1062
|
*self = rb_cscalar_new_with_value(CA_OBJECT, 0, *self);
|
862
1063
|
break;
|
863
1064
|
}
|
@@ -967,9 +1168,9 @@ rb_ca_cast_self_or_other (volatile VALUE *self, volatile VALUE *other)
|
|
967
1168
|
ca_type_name[cb->data_type]);
|
968
1169
|
}
|
969
1170
|
|
970
|
-
/*
|
971
|
-
|
972
|
-
|
1171
|
+
/* @overload cast_self_or_other (other)
|
1172
|
+
|
1173
|
+
[TBD]
|
973
1174
|
*/
|
974
1175
|
|
975
1176
|
VALUE
|
@@ -1015,12 +1216,12 @@ rb_ca_cast_other (VALUE *self, volatile VALUE *other)
|
|
1015
1216
|
*other = rb_cscalar_new_with_value(CA_BOOLEAN, 0, *other);
|
1016
1217
|
break;
|
1017
1218
|
default:
|
1018
|
-
|
1219
|
+
#ifdef HAVE_COMPLEX_H
|
1019
1220
|
if ( rb_obj_is_kind_of(*other, rb_cCComplex) ) {
|
1020
1221
|
*other = rb_cscalar_new_with_value(CA_CMPLX128, 0, *other);
|
1021
1222
|
break;
|
1022
1223
|
}
|
1023
|
-
|
1224
|
+
#endif
|
1024
1225
|
*other = rb_cscalar_new_with_value(CA_OBJECT, 0, *other);
|
1025
1226
|
break;
|
1026
1227
|
}
|
@@ -1059,9 +1260,9 @@ rb_ca_cast_other (VALUE *self, volatile VALUE *other)
|
|
1059
1260
|
ca_type_name[cb->data_type]);
|
1060
1261
|
}
|
1061
1262
|
|
1062
|
-
/*
|
1063
|
-
|
1064
|
-
|
1263
|
+
/* @overload cast_with (other)
|
1264
|
+
|
1265
|
+
[TBD]
|
1065
1266
|
*/
|
1066
1267
|
|
1067
1268
|
VALUE
|
@@ -1101,13 +1302,13 @@ Init_carray_cast ()
|
|
1101
1302
|
rb_define_method(rb_cCArray, "cmplx256", rb_ca_to_cmplx256, 0);
|
1102
1303
|
rb_define_method(rb_cCArray, "object", rb_ca_to_VALUE, 0);
|
1103
1304
|
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1305
|
+
rb_define_alias(rb_cCArray, "byte", "uint8");
|
1306
|
+
rb_define_alias(rb_cCArray, "short", "int16");
|
1307
|
+
rb_define_alias(rb_cCArray, "int", "int32");
|
1308
|
+
rb_define_alias(rb_cCArray, "float", "float32");
|
1309
|
+
rb_define_alias(rb_cCArray, "double", "float64");
|
1310
|
+
rb_define_alias(rb_cCArray, "complex", "cmplx64");
|
1311
|
+
rb_define_alias(rb_cCArray, "dcomplex", "cmplx128");
|
1111
1312
|
|
1112
1313
|
rb_define_method(rb_cCArray, "as_type", rb_ca_as_type_internal, -1);
|
1113
1314
|
|
@@ -1129,13 +1330,13 @@ Init_carray_cast ()
|
|
1129
1330
|
rb_define_method(rb_cCArray, "as_cmplx256", rb_ca_as_cmplx256, 0);
|
1130
1331
|
rb_define_method(rb_cCArray, "as_object", rb_ca_as_VALUE, 0);
|
1131
1332
|
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1333
|
+
rb_define_alias(rb_cCArray, "as_byte", "as_uint8");
|
1334
|
+
rb_define_alias(rb_cCArray, "as_short", "as_int16");
|
1335
|
+
rb_define_alias(rb_cCArray, "as_int", "as_int32");
|
1336
|
+
rb_define_alias(rb_cCArray, "as_float", "as_float32");
|
1337
|
+
rb_define_alias(rb_cCArray, "as_double", "as_float64");
|
1338
|
+
rb_define_alias(rb_cCArray, "as_complex", "as_cmplx64");
|
1339
|
+
rb_define_alias(rb_cCArray, "as_dcomplex", "as_cmplx128");
|
1139
1340
|
|
1140
1341
|
rb_define_singleton_method(rb_cCArray,
|
1141
1342
|
"wrap_writable", rb_ca_s_wrap_writable, -1);
|