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_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
 
@@ -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
- /* CArray#to_type */
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 rb_ca_to_type_method(type, code) \
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
- CArray#fixlen([:bytes=>bytes]])
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
- VALUE rb_ca_to_type_method(boolean, CA_BOOLEAN);
367
- VALUE rb_ca_to_type_method(int8, CA_INT8);
368
- VALUE rb_ca_to_type_method(uint8, CA_UINT8);
369
- VALUE rb_ca_to_type_method(int16, CA_INT16);
370
- VALUE rb_ca_to_type_method(uint16, CA_UINT16);
371
- VALUE rb_ca_to_type_method(int32, CA_INT32);
372
- VALUE rb_ca_to_type_method(uint32, CA_UINT32);
373
- VALUE rb_ca_to_type_method(int64, CA_INT64);
374
- VALUE rb_ca_to_type_method(uint64, CA_UINT64);
375
- VALUE rb_ca_to_type_method(float32, CA_FLOAT32);
376
- VALUE rb_ca_to_type_method(float64, CA_FLOAT64);
377
- VALUE rb_ca_to_type_method(float128, CA_FLOAT128);
378
- VALUE rb_ca_to_type_method(cmplx64, CA_CMPLX64);
379
- VALUE rb_ca_to_type_method(cmplx128, CA_CMPLX128);
380
- VALUE rb_ca_to_type_method(cmplx256, CA_CMPLX256);
381
- VALUE rb_ca_to_type_method(VALUE, CA_OBJECT);
382
-
383
- /* rdoc:
384
- class CArray
385
- # call-seq:
386
- # ca.boolean
387
- # ca.int8
388
- # ca.uint8
389
- # ca.int16
390
- # ca.uint16
391
- # ca.int32
392
- # ca.uint32
393
- # ca.int64
394
- # ca.uint64
395
- # ca.float32
396
- # ca.float64
397
- # ca.float128
398
- # ca.cmplx64
399
- # ca.cmplx128
400
- # ca.cmplx256
401
- # ca.object
402
- # ca.fixlen
403
- # ca.byte
404
- # ca.short
405
- # ca.int
406
- # ca.float
407
- # ca.double
408
- # ca.complex
409
- # ca.dcomplex
410
- #
411
- # Convert to given data_type with copying values
412
- def to_type
413
- end
414
- end
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 rb_ca_as_type_method(type, code) \
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
- VALUE rb_ca_as_type_method(boolean, CA_BOOLEAN);
480
- VALUE rb_ca_as_type_method(int8, CA_INT8);
481
- VALUE rb_ca_as_type_method(uint8, CA_UINT8);
482
- VALUE rb_ca_as_type_method(int16, CA_INT16);
483
- VALUE rb_ca_as_type_method(uint16, CA_UINT16);
484
- VALUE rb_ca_as_type_method(int32, CA_INT32);
485
- VALUE rb_ca_as_type_method(uint32, CA_UINT32);
486
- VALUE rb_ca_as_type_method(int64, CA_INT64);
487
- VALUE rb_ca_as_type_method(uint64, CA_UINT64);
488
- VALUE rb_ca_as_type_method(float32, CA_FLOAT32);
489
- VALUE rb_ca_as_type_method(float64, CA_FLOAT64);
490
- VALUE rb_ca_as_type_method(float128, CA_FLOAT128);
491
- VALUE rb_ca_as_type_method(cmplx64, CA_CMPLX64);
492
- VALUE rb_ca_as_type_method(cmplx128, CA_CMPLX128);
493
- VALUE rb_ca_as_type_method(cmplx256, CA_CMPLX256);
494
- VALUE rb_ca_as_type_method(VALUE, CA_OBJECT);
495
-
496
-
497
- /* rdoc:
498
- class CArray
499
- # call-seq:
500
- # ca.as_int8
501
- # ca.as_uint8
502
- # ca.as_int16
503
- # ca.as_uint16
504
- # ca.as_int32
505
- # ca.as_uint32
506
- # ca.as_int64
507
- # ca.as_uint64
508
- # ca.as_float32
509
- # ca.as_float64
510
- # ca.as_float128
511
- # ca.as_cmplx64
512
- # ca.as_cmplx128
513
- # ca.as_cmplx256
514
- # ca.as_object
515
- # ca.as_byte
516
- # ca.as_short
517
- # ca.as_int
518
- # ca.as_float
519
- # ca.as_double
520
- # ca.as_complex
521
- # ca.as_dcomplex
522
- #
523
- # Fakes data_type
524
- def as_type
525
- end
526
- end
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
- /* rdoc:
647
- def CArray.wrap_writable
648
- end
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
- rb_raise(rb_eCADataTypeError,
712
- "can't convert string to %s array",
713
- ca_type_name[data_type]);
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
- /* rdoc:
765
- def CArray.wrap_readonly
766
- end
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
- #ifdef HAVE_COMPLEX_H
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
- #endif
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
- /* rdoc
971
- def CArray.cast_self_or_other
972
- end
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
- #ifdef HAVE_COMPLEX_H
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
- #endif
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
- /* rdoc
1063
- def CArray.cast_other
1064
- end
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
- rb_define_method(rb_cCArray, "byte", rb_ca_to_uint8, 0);
1105
- rb_define_method(rb_cCArray, "short", rb_ca_to_int16, 0);
1106
- rb_define_method(rb_cCArray, "int", rb_ca_to_int32, 0);
1107
- rb_define_method(rb_cCArray, "float", rb_ca_to_float32, 0);
1108
- rb_define_method(rb_cCArray, "double", rb_ca_to_float64, 0);
1109
- rb_define_method(rb_cCArray, "complex", rb_ca_to_cmplx64, 0);
1110
- rb_define_method(rb_cCArray, "dcomplex", rb_ca_to_cmplx128, 0);
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
- rb_define_method(rb_cCArray, "as_byte", rb_ca_as_uint8, 0);
1133
- rb_define_method(rb_cCArray, "as_short", rb_ca_as_int16, 0);
1134
- rb_define_method(rb_cCArray, "as_int", rb_ca_as_int32, 0);
1135
- rb_define_method(rb_cCArray, "as_float", rb_ca_as_float32, 0);
1136
- rb_define_method(rb_cCArray, "as_double", rb_ca_as_float64, 0);
1137
- rb_define_method(rb_cCArray, "as_complex", rb_ca_as_cmplx64, 0);
1138
- rb_define_method(rb_cCArray, "as_dcomplex", rb_ca_as_cmplx128, 0);
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);