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_attribute.c
4
4
 
5
5
  This file is part of Ruby/CArray extension library.
6
- You can redistribute it and/or modify it under the terms of
7
- the Ruby Licence.
8
6
 
9
- Copyright (C) 2005 Hiroki Motoyoshi
7
+ Copyright (C) 2005-2020 Hiroki Motoyoshi
10
8
 
11
9
  ---------------------------------------------------------------------------- */
12
10
 
@@ -14,14 +12,12 @@
14
12
 
15
13
  /* ------------------------------------------------------------------- */
16
14
 
17
- /* rdoc
18
- class CArray
19
- # returns the object type (e.g. CA_OBJ_ARRAY, CA_OBJ_BLOCK, ...).
20
- # Since the object type can be known from the class of the object,
21
- # this attribute method is rarely used.
22
- def obj_type
23
- end
24
- end
15
+ /* @overload obj_type
16
+
17
+ (Attribute)
18
+ Returns the object type (e.g. CA_OBJ_ARRAY, CA_OBJ_BLOCK, ...).
19
+ Since the object type can be known from the class of the object,
20
+ this attribute methods is rarely used.
25
21
  */
26
22
 
27
23
  VALUE
@@ -32,12 +28,10 @@ rb_ca_obj_type (VALUE self)
32
28
  return INT2NUM(ca->obj_type);
33
29
  }
34
30
 
35
- /* rdoc
36
- class CArray
37
- # returns the data type of each element (e.g. CA_INT32, CA_FLOAT64, ...).
38
- def data_type
39
- end
40
- end
31
+ /* @overload data_type
32
+
33
+ (Attribute)
34
+ Returns the data type of each element (e.g. CA_INT32, CA_FLOAT64, ...).
41
35
  */
42
36
 
43
37
  VALUE
@@ -48,15 +42,10 @@ rb_ca_data_type (VALUE self)
48
42
  return INT2NUM(ca->data_type);
49
43
  }
50
44
 
51
- /* rdoc
52
- class CArray
53
- # use CArray#ndims instead of this methods after carray-1.3.0
54
- def ndim
55
- end
56
- # returns the ndim (e.g. 1 for 1D array, 3 for 3D array, ...).
57
- def ndims
58
- end
59
- end
45
+ /* @overload ndim
46
+
47
+ (Attribute)
48
+ Returns the rank (e.g. 1 for 1D array, 3 for 3D array, ...).
60
49
  */
61
50
 
62
51
  VALUE
@@ -67,16 +56,14 @@ rb_ca_ndim (VALUE self)
67
56
  return INT2NUM(ca->ndim);
68
57
  }
69
58
 
70
- /* rdoc
71
- class CArray
72
- # returns the byte size of each element (e.g. 4 for CA_INT32, 8 for CA_FLOAT64).
73
- # The byte size can be known using CArray.sizeof(data_type)
74
- # for the numerical data types, but
75
- # the byte size of fixed-length data type can be known
76
- # only by this method.
77
- def bytes
78
- end
79
- end
59
+ /* @overload bytes
60
+
61
+ (Attribute)
62
+ Returns the byte size of each element (e.g. 4 for CA_INT32, 8 for CA_FLOAT64).
63
+ The byte size can be known using CArray.sizeof(data_type)
64
+ for the numerical data types, but
65
+ the byte size of fixed-length data type can be known
66
+ only by this method.
80
67
  */
81
68
 
82
69
  VALUE
@@ -87,18 +74,10 @@ rb_ca_bytes (VALUE self)
87
74
  return SIZE2NUM(ca->bytes);
88
75
  }
89
76
 
90
- /* rdoc:
91
- class CArray
92
- # returns the number of elements
93
- def elements
94
- end
77
+ /* @overload elements
95
78
 
96
- # alias of `CArray#elements`
97
- alias length elements
98
-
99
- # alias of `CArray#elements`
100
- alias size elements
101
- end
79
+ (Attribute)
80
+ Returns the number of elements
102
81
  */
103
82
 
104
83
  VALUE
@@ -109,35 +88,11 @@ rb_ca_elements (VALUE self)
109
88
  return SIZE2NUM(ca->elements);
110
89
  }
111
90
 
112
- /* rdoc:
113
- class CArray
114
- # use CArray#shape instead of this method after carray-1.3.0
115
- # returns the Array object contains the dimensional shape of array
116
- # (e.g. [2,3] for 2D 2x3 array, ...).
117
- def dim
118
- end
119
-
120
- # returns the Array object contains the dimensional shape of array
121
- # (e.g. [2,3] for 2D 2x3 array, ...).
122
- def shape
123
- end
124
-
125
- # short-hand for dim[0]
126
- def dim0
127
- end
128
-
129
- # short-hand for dim[1]
130
- def dim1
131
- end
132
-
133
- # short-hand for dim[2]
134
- def dim2
135
- end
136
-
137
- # short-hand for dim[3]
138
- def dim3
139
- end
140
- end
91
+ /* @overload dim
92
+
93
+ (Attribute)
94
+ Returns the Array object contains the dimensional shape of array
95
+ (e.g. [2,3] for 2D 2x3 array, ...).
141
96
  */
142
97
 
143
98
  VALUE
@@ -154,6 +109,13 @@ rb_ca_dim (VALUE self)
154
109
  return dim;
155
110
  }
156
111
 
112
+ /*
113
+ @overload dim0
114
+
115
+ (Attribute)
116
+ Short-hand for "dim[0]"
117
+ */
118
+
157
119
  VALUE
158
120
  rb_ca_dim0 (VALUE self)
159
121
  {
@@ -162,6 +124,13 @@ rb_ca_dim0 (VALUE self)
162
124
  return SIZE2NUM(ca->dim[0]);
163
125
  }
164
126
 
127
+ /*
128
+ @overload dim1
129
+
130
+ (Attribute)
131
+ Short-hand for "dim[1]"
132
+ */
133
+
165
134
  VALUE
166
135
  rb_ca_dim1 (VALUE self)
167
136
  {
@@ -170,6 +139,13 @@ rb_ca_dim1 (VALUE self)
170
139
  return ( ca->ndim >= 2 ) ? SIZE2NUM(ca->dim[1]) : Qnil;
171
140
  }
172
141
 
142
+ /*
143
+ @overload dim2
144
+
145
+ (Attribute)
146
+ Short-hand for 'dim[2]'
147
+ */
148
+
173
149
  VALUE
174
150
  rb_ca_dim2 (VALUE self)
175
151
  {
@@ -178,6 +154,13 @@ rb_ca_dim2 (VALUE self)
178
154
  return ( ca->ndim >= 3 ) ? SIZE2NUM(ca->dim[2]) : Qnil;
179
155
  }
180
156
 
157
+ /*
158
+ @overload dim3
159
+
160
+ (Attribute)
161
+ Short-hand for "dim[3]"
162
+ */
163
+
181
164
  VALUE
182
165
  rb_ca_dim3 (VALUE self)
183
166
  {
@@ -186,12 +169,10 @@ rb_ca_dim3 (VALUE self)
186
169
  return ( ca->ndim >= 4 ) ? SIZE2NUM(ca->dim[3]) : Qnil;
187
170
  }
188
171
 
189
- /* rdoc:
190
- class CArray
191
- # returns the string representaion of the data_type (e.g. "int32", "fixlen")
192
- def data_type_name
193
- end
194
- end
172
+ /* @overload data_type_name
173
+
174
+ (Attribute)
175
+ Returns the string representaion of the data_type (e.g. "int32", "fixlen")
195
176
  */
196
177
 
197
178
  VALUE
@@ -211,12 +192,9 @@ ca_is_scalar (void *ap)
211
192
  return ca_test_flag(ca, CA_FLAG_SCALAR);
212
193
  }
213
194
 
214
- /* rdoc:
215
- class CArray
216
- # returns true if `self` is a CScalar object
217
- def scalar?
218
- end
219
- end
195
+ /* @overload scalar?
196
+
197
+ (Inquiry) Returns true if the object is a CScalar
220
198
  */
221
199
 
222
200
  VALUE
@@ -249,16 +227,9 @@ ca_is_virtual (void *ap)
249
227
  return ( ca_func[ca->obj_type].entity_type == CA_VIRTUAL_ARRAY ) ? 1 : 0;
250
228
  }
251
229
 
252
- /* rdoc:
253
- class CArray
254
- # returns true if `self` is an entity array (not a virtual array).
255
- def entity?
256
- end
230
+ /* @overload entity?
257
231
 
258
- # returns true if `self` is a virtural array (not an entity array).
259
- def virtual?
260
- end
261
- end
232
+ (Inquiry) Returns true if `self` is an entity array (not a virtual array).
262
233
  */
263
234
 
264
235
  VALUE
@@ -269,6 +240,12 @@ rb_ca_is_entity (VALUE self)
269
240
  return ( ca_is_virtual(ca) ) ? Qfalse : Qtrue;
270
241
  }
271
242
 
243
+ /*
244
+ @overload virtual?
245
+
246
+ (Inquiry) Returns true if `self` is a virtural array (not an entity array).
247
+ */
248
+
272
249
  VALUE
273
250
  rb_ca_is_virtual (VALUE self)
274
251
  {
@@ -279,12 +256,9 @@ rb_ca_is_virtual (VALUE self)
279
256
 
280
257
  /* ------------------------------------------------------------------- */
281
258
 
282
- /* rdoc
283
- class CArray
284
- # returns true if `self` is attached.
285
- def attached?
286
- end
287
- end
259
+ /* @overload attached?
260
+
261
+ (Inquiry) Returns true if the object is attached.
288
262
  */
289
263
 
290
264
  VALUE
@@ -297,12 +271,9 @@ rb_ca_is_attached (VALUE self)
297
271
 
298
272
  /* ------------------------------------------------------------------- */
299
273
 
300
- /* rdoc
301
- class CArray
302
- # returns true if `self` is empty.
303
- def empty?
304
- end
305
- end
274
+ /* @overload empty?
275
+
276
+ (Inquiry) Returns true if the object is empty.
306
277
  */
307
278
 
308
279
  VALUE
@@ -333,12 +304,9 @@ ca_is_readonly (void *ap)
333
304
  }
334
305
  }
335
306
 
336
- /* rdoc
337
- class CArray
338
- # returns true if `self` is read-only carray
339
- def read_only?
340
- end
341
- end
307
+ /* @overload read_only?
308
+
309
+ (Inquiry) Returns true if the object is read-only
342
310
  */
343
311
 
344
312
  VALUE
@@ -369,12 +337,9 @@ ca_is_mask_array (void *ap)
369
337
  }
370
338
  }
371
339
 
372
- /* rdoc
373
- class CArray
374
- # returns true if `self` is mask array (don't confuse with "masked array")
375
- def mask_array?
376
- end
377
- end
340
+ /* @overload mask_array?
341
+
342
+ (Inquiry) Returns true if `self` is mask array (don't confuse with "masked array")
378
343
  */
379
344
 
380
345
  VALUE
@@ -405,12 +370,9 @@ ca_is_value_array (void *ap)
405
370
  }
406
371
  }
407
372
 
408
- /* rdoc
409
- class CArray
410
- # returns true if `self` is a value array
411
- def value_array?
412
- end
413
- end
373
+ /* @overload value_array?
374
+
375
+ (Inquiry) Returns true if `self` is a value array
414
376
  */
415
377
 
416
378
  VALUE
@@ -430,12 +392,9 @@ ca_is_fixlen_type (void *ap)
430
392
  return ( ca->data_type == CA_FIXLEN );
431
393
  }
432
394
 
433
- /* rdoc
434
- class CArray
435
- # return true if `self` is fixed-length type array
436
- def filxen?
437
- end
438
- end
395
+ /* @overload fixlen?
396
+
397
+ (Inquiry) Returns true if `self` is fixed-length type array
439
398
  */
440
399
 
441
400
  VALUE
@@ -455,12 +414,9 @@ ca_is_boolean_type (void *ap)
455
414
  return ( ca->data_type == CA_BOOLEAN );
456
415
  }
457
416
 
458
- /* rdoc
459
- class CArray
460
- # return true if `self` is boolean type array
461
- def boolean?
462
- end
463
- end
417
+ /* @overload boolean?
418
+
419
+ (Inquiry) Return true if `self` is boolean type array
464
420
  */
465
421
 
466
422
  VALUE
@@ -481,12 +437,9 @@ ca_is_numeric_type (void *ap)
481
437
  ( ca->data_type <= CA_CMPLX256 ) );
482
438
  }
483
439
 
484
- /* rdoc
485
- class CArray
486
- # return true if `self` is numeric type array
487
- def numeric?
488
- end
489
- end
440
+ /* @overload numeric?
441
+
442
+ (Inquiry) Returns true if `self` is numeric type array
490
443
  */
491
444
 
492
445
  VALUE
@@ -507,12 +460,9 @@ ca_is_integer_type (void *ap)
507
460
  ( ca->data_type <= CA_UINT64 ) );
508
461
  }
509
462
 
510
- /* rdoc
511
- class CArray
512
- # return true if `self` is integer type array
513
- def integer?
514
- end
515
- end
463
+ /* @overload integer?
464
+
465
+ (Inquiry) Returns true if `self` is integer type array
516
466
  */
517
467
 
518
468
  VALUE
@@ -540,12 +490,9 @@ ca_is_unsigned_type (void *ap)
540
490
  }
541
491
  }
542
492
 
543
- /* rdoc
544
- class CArray
545
- # return true if `self` is unsigned integer type array
546
- def unsigned?
547
- end
548
- end
493
+ /* @overload unsigned?
494
+
495
+ (Inquiry) Return true if `self` is unsigned integer type array
549
496
  */
550
497
 
551
498
  VALUE
@@ -566,12 +513,9 @@ ca_is_float_type (void *ap)
566
513
  ( ca->data_type <= CA_FLOAT128 ) );
567
514
  }
568
515
 
569
- /* rdoc
570
- class CArray
571
- # return true if `self` is float type array
572
- def float?
573
- end
574
- end
516
+ /* @overload float?
517
+
518
+ (Inquiry) Returns true if `self` is float type array
575
519
  */
576
520
 
577
521
  VALUE
@@ -592,12 +536,9 @@ ca_is_complex_type (void *ap)
592
536
  ( ca->data_type <= CA_CMPLX256 ) );
593
537
  }
594
538
 
595
- /* rdoc
596
- class CArray
597
- # return true if `self` is complex type array
598
- def complex?
599
- end
600
- end
539
+ /* @overload complex?
540
+
541
+ (Inquiry) Returns true if `self` is complex type array
601
542
  */
602
543
 
603
544
  VALUE
@@ -617,12 +558,9 @@ ca_is_object_type (void *ap)
617
558
  return ( ca->data_type == CA_OBJECT );
618
559
  }
619
560
 
620
- /* rdoc
621
- class CArray
622
- # return true if `self` is object type array
623
- def object?
624
- end
625
- end
561
+ /* @overload object?
562
+
563
+ (Inquiry) Returns true if `self` is object type array
626
564
  */
627
565
 
628
566
  VALUE
@@ -637,13 +575,11 @@ rb_ca_is_object_type (VALUE self)
637
575
 
638
576
  static ID id_parent;
639
577
 
640
- /* rdoc
641
- class CArray
642
- # returns the parent carray if `self` has parent,
643
- # or returns nil if `self` has no parent.
644
- def parent
645
- end
646
- end
578
+ /* @overload parent
579
+
580
+ (Attribute)
581
+ Returns the parent carray if `self` has parent,
582
+ or returns nil if `self` has no parent.
647
583
  */
648
584
 
649
585
  VALUE
@@ -667,13 +603,11 @@ rb_ca_set_parent (VALUE self, VALUE obj)
667
603
 
668
604
  static ID id_data_class;
669
605
 
670
- /* rdoc
671
- class CArray
672
- # returns data_class if `self` is fixed-length type and it
673
- # has the data class.
674
- def data_class
675
- end
676
- end
606
+ /* @overload data_class
607
+
608
+ (Attribute)
609
+ Returns data_class if `self` is fixed-length type and it
610
+ has the data class.
677
611
  */
678
612
 
679
613
  VALUE
@@ -727,12 +661,9 @@ rb_ca_data_class (VALUE self)
727
661
  }
728
662
  }
729
663
 
730
- /* rdoc
731
- class CArray
732
- # return true if `self` is fixed-length type and has the data class.
733
- def has_data_class?
734
- end
735
- end
664
+ /* @overload has_data_class?
665
+
666
+ (Inquiry) Returns true if `self` is fixed-length type and has the data class.
736
667
  */
737
668
 
738
669
  VALUE
@@ -780,6 +711,20 @@ rb_ca_data_type_import (VALUE self, VALUE data_type)
780
711
  return Qnil;
781
712
  }
782
713
 
714
+ static VALUE
715
+ rb_ca_set_data_class (VALUE self, VALUE klass)
716
+ {
717
+ if ( RTEST(rb_ca_is_fixlen_type(self)) &&
718
+ rb_obj_is_data_class(klass) ) {
719
+ rb_ivar_set(self, rb_intern("member"), rb_hash_new());
720
+ return rb_ivar_set(self, id_data_class, klass);
721
+ }
722
+ else {
723
+ rb_raise(rb_eTypeError, "invalid data_class or self is not fixlen array.");
724
+ }
725
+ return Qnil;
726
+ }
727
+
783
728
  /* ------------------------------------------------------------------- */
784
729
 
785
730
  CArray *
@@ -800,7 +745,11 @@ ca_root_array (void *ap)
800
745
  }
801
746
  }
802
747
 
803
- /* CArray#root_array */
748
+ /* @overload root_array
749
+
750
+ (Attribute)
751
+ Returns the object at the root of chain of reference.
752
+ */
804
753
 
805
754
  static VALUE
806
755
  rb_ca_root_array (VALUE self)
@@ -845,7 +794,11 @@ rb_ca_ancestors_loop (VALUE self, VALUE list)
845
794
  }
846
795
  }
847
796
 
848
- /* CArray#ancesters */
797
+ /* @overload ancestors
798
+
799
+ (Attribute)
800
+ Returns the list of objects in the chain of reference.
801
+ */
849
802
 
850
803
  static VALUE
851
804
  rb_ca_ancestors (VALUE self)
@@ -885,6 +838,7 @@ Init_carray_attribute ()
885
838
  rb_define_method(rb_cCArray, "parent", rb_ca_parent, 0);
886
839
 
887
840
  rb_define_method(rb_cCArray, "data_class", rb_ca_data_class, 0);
841
+ rb_define_method(rb_cCArray, "data_class=", rb_ca_set_data_class, 1);
888
842
 
889
843
  rb_define_method(rb_cCArray, "scalar?", rb_ca_is_scalar, 0);
890
844