carray 1.5.1 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +32 -0
  3. data/{LICENSES → LICENSE} +0 -0
  4. data/NEWS.md +83 -0
  5. data/README.md +34 -18
  6. data/Rakefile +1 -1
  7. data/TODO.md +17 -0
  8. data/carray.gemspec +10 -7
  9. data/ext/ca_iter_block.c +3 -5
  10. data/ext/ca_iter_dimension.c +4 -5
  11. data/ext/ca_iter_window.c +2 -4
  12. data/ext/ca_obj_array.c +394 -124
  13. data/ext/ca_obj_bitarray.c +6 -11
  14. data/ext/ca_obj_bitfield.c +5 -9
  15. data/ext/ca_obj_block.c +5 -12
  16. data/ext/ca_obj_fake.c +3 -5
  17. data/ext/ca_obj_farray.c +3 -5
  18. data/ext/ca_obj_field.c +15 -17
  19. data/ext/ca_obj_grid.c +5 -6
  20. data/ext/ca_obj_mapping.c +2 -4
  21. data/ext/ca_obj_object.c +3 -5
  22. data/ext/ca_obj_reduce.c +2 -4
  23. data/ext/ca_obj_refer.c +11 -15
  24. data/ext/ca_obj_repeat.c +2 -4
  25. data/ext/ca_obj_select.c +2 -4
  26. data/ext/ca_obj_shift.c +3 -5
  27. data/ext/ca_obj_transpose.c +3 -5
  28. data/ext/ca_obj_unbound_repeat.c +68 -122
  29. data/ext/ca_obj_window.c +7 -9
  30. data/ext/carray.h +17 -8
  31. data/ext/carray_access.c +183 -58
  32. data/ext/carray_attribute.c +151 -197
  33. data/ext/carray_call_cfunc.c +1 -3
  34. data/ext/carray_cast.c +345 -144
  35. data/ext/carray_cast_func.rb +1 -2
  36. data/ext/carray_class.c +28 -36
  37. data/ext/carray_conversion.c +56 -59
  38. data/ext/carray_copy.c +16 -32
  39. data/ext/carray_core.c +73 -60
  40. data/ext/carray_element.c +25 -44
  41. data/ext/carray_generate.c +74 -53
  42. data/ext/carray_iterator.c +13 -15
  43. data/ext/carray_loop.c +53 -82
  44. data/ext/carray_mask.c +99 -119
  45. data/ext/carray_math.rb +28 -12
  46. data/ext/carray_mathfunc.c +1 -3
  47. data/ext/carray_numeric.c +42 -45
  48. data/ext/carray_operator.c +45 -32
  49. data/ext/carray_order.c +231 -65
  50. data/ext/carray_sort_addr.c +14 -21
  51. data/ext/carray_stat.c +1 -3
  52. data/ext/carray_stat_proc.rb +2 -4
  53. data/ext/carray_test.c +41 -30
  54. data/ext/carray_undef.c +1 -11
  55. data/ext/carray_utils.c +138 -51
  56. data/ext/extconf.rb +14 -2
  57. data/ext/mkmath.rb +2 -2
  58. data/ext/ruby_carray.c +15 -7
  59. data/ext/ruby_ccomplex.c +2 -4
  60. data/ext/ruby_float_func.c +1 -3
  61. data/ext/version.h +5 -7
  62. data/lib/carray.rb +9 -9
  63. data/lib/carray/autoload.rb +0 -2
  64. data/lib/carray/autoload/autoload_gem_numo_narray.rb +6 -6
  65. data/lib/carray/basic.rb +1 -3
  66. data/lib/carray/broadcast.rb +101 -0
  67. data/lib/carray/compose.rb +34 -10
  68. data/lib/carray/construct.rb +57 -18
  69. data/lib/carray/info.rb +1 -3
  70. data/lib/carray/inspect.rb +3 -5
  71. data/lib/carray/io/imagemagick.rb +1 -3
  72. data/lib/carray/iterator.rb +3 -3
  73. data/lib/carray/mask.rb +18 -7
  74. data/lib/carray/math.rb +4 -6
  75. data/lib/carray/math/histogram.rb +1 -3
  76. data/lib/carray/math/recurrence.rb +1 -3
  77. data/lib/carray/mkmf.rb +1 -3
  78. data/lib/carray/object/ca_obj_iterator.rb +1 -3
  79. data/lib/carray/object/ca_obj_link.rb +1 -3
  80. data/lib/carray/object/ca_obj_pack.rb +1 -3
  81. data/lib/carray/obsolete.rb +1 -17
  82. data/lib/carray/ordering.rb +29 -5
  83. data/lib/carray/serialize.rb +34 -25
  84. data/lib/carray/string.rb +1 -3
  85. data/lib/carray/struct.rb +3 -5
  86. data/lib/carray/testing.rb +5 -10
  87. data/lib/carray/time.rb +1 -3
  88. data/lib/carray/transform.rb +12 -3
  89. data/misc/NOTE +16 -38
  90. data/spec/Classes/CABitfield_spec.rb +58 -0
  91. data/spec/Classes/CABlockIterator_spec.rb +114 -0
  92. data/spec/Classes/CABlock_spec.rb +205 -0
  93. data/spec/Classes/CAField_spec.rb +39 -0
  94. data/spec/Classes/CAGrid_spec.rb +75 -0
  95. data/spec/Classes/CAMap_spec.rb +0 -0
  96. data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
  97. data/spec/Classes/CAObject_attribute_spec.rb +33 -0
  98. data/spec/Classes/CAObject_spec.rb +33 -0
  99. data/spec/Classes/CARefer_spec.rb +93 -0
  100. data/spec/Classes/CARepeat_spec.rb +65 -0
  101. data/spec/Classes/CASelect_spec.rb +22 -0
  102. data/spec/Classes/CAShift_spec.rb +16 -0
  103. data/spec/Classes/CAStruct_spec.rb +71 -0
  104. data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
  105. data/spec/Classes/CAUnboudRepeat_spec.rb +102 -0
  106. data/spec/Classes/CAWindow_spec.rb +54 -0
  107. data/spec/Classes/CAWrap_spec.rb +8 -0
  108. data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
  109. data/spec/Classes/CScalar_spec.rb +55 -0
  110. data/spec/Features/feature_130_spec.rb +19 -0
  111. data/spec/Features/feature_attributes_spec.rb +280 -0
  112. data/spec/Features/feature_boolean_spec.rb +98 -0
  113. data/spec/Features/feature_broadcast.rb +116 -0
  114. data/spec/Features/feature_cast_function.rb +19 -0
  115. data/spec/Features/feature_cast_spec.rb +33 -0
  116. data/spec/Features/feature_class_spec.rb +84 -0
  117. data/spec/Features/feature_complex_spec.rb +42 -0
  118. data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
  119. data/spec/Features/feature_convert_spec.rb +46 -0
  120. data/spec/Features/feature_copy_spec.rb +123 -0
  121. data/spec/Features/feature_creation_spec.rb +84 -0
  122. data/spec/Features/feature_element_spec.rb +144 -0
  123. data/spec/Features/feature_extream_spec.rb +54 -0
  124. data/spec/Features/feature_generate_spec.rb +74 -0
  125. data/spec/Features/feature_index_spec.rb +69 -0
  126. data/spec/Features/feature_mask_spec.rb +580 -0
  127. data/spec/Features/feature_math_spec.rb +97 -0
  128. data/spec/Features/feature_order_spec.rb +146 -0
  129. data/spec/Features/feature_ref_store_spec.rb +209 -0
  130. data/spec/Features/feature_serialization_spec.rb +125 -0
  131. data/spec/Features/feature_stat_spec.rb +397 -0
  132. data/spec/Features/feature_virtual_spec.rb +48 -0
  133. data/spec/Features/method_eq_spec.rb +81 -0
  134. data/spec/Features/method_is_nan_spec.rb +12 -0
  135. data/spec/Features/method_map_spec.rb +54 -0
  136. data/spec/Features/method_max_with.rb +20 -0
  137. data/spec/Features/method_min_with.rb +19 -0
  138. data/spec/Features/method_ne_spec.rb +18 -0
  139. data/spec/Features/method_project_spec.rb +188 -0
  140. data/spec/Features/method_ref_spec.rb +27 -0
  141. data/spec/Features/method_round_spec.rb +11 -0
  142. data/spec/Features/method_s_linspace_spec.rb +48 -0
  143. data/spec/Features/method_s_span_spec.rb +14 -0
  144. data/spec/Features/method_seq_spec.rb +47 -0
  145. data/spec/Features/method_sort_with.rb +43 -0
  146. data/spec/Features/method_sorted_with.rb +29 -0
  147. data/spec/Features/method_span_spec.rb +42 -0
  148. data/spec/Features/method_wrap_readonly_spec.rb +43 -0
  149. data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
  150. data/spec/spec_all.rb +0 -1
  151. data/utils/convert_test.rb +73 -0
  152. data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
  153. metadata +74 -58
  154. data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
  155. data/spec/CArray/bug/store_spec.rb +0 -27
  156. data/spec/CArray/index/repeat_spec.rb +0 -10
  157. data/spec/CArray/method/eq_spec.rb +0 -80
  158. data/spec/CArray/method/is_nan_spec.rb +0 -12
  159. data/spec/CArray/method/ne_spec.rb +0 -18
  160. data/spec/CArray/method/round_spec.rb +0 -11
  161. data/spec/CArray/object/_attribute_spec.rb +0 -32
  162. data/spec/CArray/object/s_new_spec.rb +0 -31
  163. data/spec/CArray/serialize/Serialization_spec.rb +0 -89
  164. data/test/test_130.rb +0 -23
  165. data/test/test_ALL.rb +0 -49
  166. data/test/test_CABitfield.rb +0 -59
  167. data/test/test_CABlock.rb +0 -208
  168. data/test/test_CAField.rb +0 -40
  169. data/test/test_CAGrid.rb +0 -76
  170. data/test/test_CAMmap.rb +0 -11
  171. data/test/test_CARefer.rb +0 -94
  172. data/test/test_CARepeat.rb +0 -66
  173. data/test/test_CASelect.rb +0 -23
  174. data/test/test_CAShift.rb +0 -17
  175. data/test/test_CAWindow.rb +0 -55
  176. data/test/test_CAWrap.rb +0 -9
  177. data/test/test_CComplex.rb +0 -83
  178. data/test/test_CScalar.rb +0 -91
  179. data/test/test_attribute.rb +0 -281
  180. data/test/test_block_iterator.rb +0 -17
  181. data/test/test_boolean.rb +0 -99
  182. data/test/test_cast.rb +0 -33
  183. data/test/test_class.rb +0 -85
  184. data/test/test_complex.rb +0 -43
  185. data/test/test_convert.rb +0 -79
  186. data/test/test_copy.rb +0 -141
  187. data/test/test_creation.rb +0 -85
  188. data/test/test_element.rb +0 -146
  189. data/test/test_extream.rb +0 -55
  190. data/test/test_generate.rb +0 -75
  191. data/test/test_index.rb +0 -71
  192. data/test/test_mask.rb +0 -578
  193. data/test/test_math.rb +0 -98
  194. data/test/test_order.rb +0 -147
  195. data/test/test_ref_store.rb +0 -211
  196. data/test/test_stat.rb +0 -406
  197. data/test/test_struct.rb +0 -72
  198. 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
 
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
 
@@ -68,7 +66,7 @@ OBJ2DBL (VALUE val)
68
66
  else if ( ! strncasecmp("-infinity", str, 9) ) {
69
67
  return -1.0/0.0;
70
68
  }
71
- return NUM2DBL(rb_Float(val));
69
+ return rb_cstr_to_dbl(str, 0);
72
70
  }
73
71
  default:
74
72
  return NUM2DBL(rb_Float(val));
@@ -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)"
425
+ */
426
+ VALUE rb_ca_to_uint32 (VALUE self)
427
+ {
428
+ rb_ca_to_type_method_body(CA_UINT32);
429
+ }
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)"
415
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
+ }
416
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)`
527
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
528
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)`
643
+ */
644
+ VALUE rb_ca_as_int64 (VALUE self)
645
+ {
646
+ rb_ca_as_type_method_body(CA_INT64);
647
+ }
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);