carray 3.0.0 → 3.0.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.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -1
  3. data/CHANGELOG.md +845 -3
  4. data/{NEWS.md → CHANGELOG.v1.md} +1 -1
  5. data/README.md +33 -33
  6. data/carray.gemspec +12 -8
  7. data/ext/ca_axis_dispatch.c +33 -4
  8. data/ext/ca_axis_group.c +256 -114
  9. data/ext/ca_binop_dispatch.c +5 -6
  10. data/ext/ca_binop_dispatch.h +0 -7
  11. data/ext/ca_categorical_iterator.c +121 -67
  12. data/ext/ca_for_each_element.h +6 -8
  13. data/ext/ca_group_iter.c +1 -1
  14. data/ext/ca_kernel_iterator.c +386 -74
  15. data/ext/ca_kernel_iterator.h +145 -45
  16. data/ext/ca_obj_array.c +62 -20
  17. data/ext/ca_obj_bincmp.c +57 -27
  18. data/ext/ca_obj_binop.c +86 -30
  19. data/ext/ca_obj_block.c +4 -4
  20. data/ext/ca_obj_const_string.c +88 -27
  21. data/ext/ca_obj_face.c +104 -0
  22. data/ext/ca_obj_face.h +48 -1
  23. data/ext/ca_obj_fake.c +11 -0
  24. data/ext/ca_obj_fixlen_string.c +21 -6
  25. data/ext/ca_obj_grid.c +11 -3
  26. data/ext/ca_obj_meld.c +125 -22
  27. data/ext/ca_obj_moncmp.c +33 -14
  28. data/ext/ca_obj_monop.c +19 -7
  29. data/ext/ca_obj_object.c +107 -4
  30. data/ext/ca_obj_record.c +3 -1
  31. data/ext/ca_obj_refer.c +30 -6
  32. data/ext/ca_obj_roll.c +13 -5
  33. data/ext/ca_obj_select.c +49 -34
  34. data/ext/ca_obj_select_axis.c +16 -6
  35. data/ext/ca_obj_shift.c +3 -3
  36. data/ext/ca_obj_stack.c +3 -8
  37. data/ext/ca_obj_stride.c +178 -24
  38. data/ext/ca_obj_string.c +11 -5
  39. data/ext/ca_obj_tile.c +13 -5
  40. data/ext/ca_obj_time.c +3 -1
  41. data/ext/ca_obj_timedelta.c +3 -1
  42. data/ext/ca_obj_transpose.c +1 -1
  43. data/ext/ca_obj_triop.c +62 -23
  44. data/ext/ca_obj_window.c +94 -19
  45. data/ext/ca_op_cmplx64.h +123 -0
  46. data/ext/ca_op_ipower.c +1 -5
  47. data/ext/ca_rng_normal.h +42 -0
  48. data/ext/ca_rng_xoshiro256pp.h +105 -0
  49. data/ext/ca_sort_kernels.h +5 -5
  50. data/ext/ca_sweep_engine.c +362 -155
  51. data/ext/ca_sweep_engine.h +39 -9
  52. data/ext/ca_transform_common.c +7 -0
  53. data/ext/carray.h +148 -132
  54. data/ext/carray_access.c +83 -49
  55. data/ext/carray_address_basis.c +590 -0
  56. data/ext/carray_bincount.c +8 -8
  57. data/ext/carray_broadcast.c +102 -9
  58. data/ext/carray_build_flags.h +3 -0
  59. data/ext/carray_call_cfunc.c +2010 -335
  60. data/ext/carray_call_cfunc.h +153 -0
  61. data/ext/carray_cast.c +184 -72
  62. data/ext/carray_conversion.c +22 -22
  63. data/ext/carray_copy.c +67 -32
  64. data/ext/carray_core.c +140 -13
  65. data/ext/carray_count.c +10 -11
  66. data/ext/carray_element.c +7 -7
  67. data/ext/carray_factorize.c +72 -51
  68. data/ext/carray_hold.c +1 -1
  69. data/ext/carray_index_classifier.c +7 -21
  70. data/ext/carray_internal.h +36 -3
  71. data/ext/carray_kernels_bincmp.c +1 -0
  72. data/ext/carray_kernels_binop.c +320 -298
  73. data/ext/carray_kernels_init.c +1095 -0
  74. data/ext/carray_kernels_map.c +1 -0
  75. data/ext/carray_kernels_moncmp.c +1 -0
  76. data/ext/carray_kernels_monop.c +412 -411
  77. data/ext/carray_kernels_reduce_aggregate.c +256 -87
  78. data/ext/carray_kernels_reduce_boolean.c +1 -0
  79. data/ext/carray_kernels_reduce_cumulative.c +324 -54
  80. data/ext/carray_kernels_reduce_extreme.c +605 -58
  81. data/ext/carray_kernels_reduce_variance.c +1 -0
  82. data/ext/carray_kernels_scan.c +5 -4
  83. data/ext/carray_kernels_search.c +187 -106
  84. data/ext/carray_kernels_sort.c +1 -0
  85. data/ext/carray_kernels_triop.c +1 -0
  86. data/ext/carray_lazy.c +175 -5
  87. data/ext/carray_loop.c +7 -1
  88. data/ext/carray_mask.c +29 -13
  89. data/ext/carray_median_percentile.c +56 -1
  90. data/ext/carray_memory_view.c +46 -21
  91. data/ext/carray_operator.c +50 -53
  92. data/ext/carray_order.c +1 -1
  93. data/ext/carray_partition.c +4 -4
  94. data/ext/carray_random.c +391 -47
  95. data/ext/carray_scatter.c +1 -1
  96. data/ext/carray_slab.c +13 -0
  97. data/ext/carray_sort.c +22 -24
  98. data/ext/carray_sort_kernel.c +10 -10
  99. data/ext/carray_test.c +1 -1
  100. data/ext/extconf.rb +18 -0
  101. data/ext/mk_call_cfunc.rb +323 -145
  102. data/ext/mkkernel.rb +651 -129
  103. data/ext/ruby_carray.c +28 -17
  104. data/ext/version.h +4 -4
  105. data/lib/carray/autoload_carray.rb +24 -3
  106. data/lib/carray/autoload_method_extension.rb +14 -1
  107. data/lib/carray/axis_group.rb +84 -7
  108. data/lib/carray/basics.rb +63 -59
  109. data/lib/carray/bincount_nd.rb +12 -12
  110. data/lib/carray/block_iterator.rb +111 -25
  111. data/lib/carray/categorical.rb +154 -37
  112. data/lib/carray/categorical_iterator.rb +300 -151
  113. data/lib/carray/conditional.rb +14 -14
  114. data/lib/carray/const_string.rb +131 -27
  115. data/lib/carray/construct.rb +61 -0
  116. data/lib/carray/core_extensions.rb +62 -5
  117. data/lib/carray/data_type_extension.rb +21 -1
  118. data/lib/carray/data_type_limits.rb +91 -0
  119. data/lib/carray/fixlen_string.rb +1 -1
  120. data/lib/carray/frame/concat.rb +3 -3
  121. data/lib/carray/frame/convert.rb +1 -1
  122. data/lib/carray/frame/csv_parser.rb +11 -4
  123. data/lib/carray/frame/frame.rb +85 -21
  124. data/lib/carray/frame/group.rb +36 -3
  125. data/lib/carray/frame/io.rb +224 -15
  126. data/lib/carray/frame/records.rb +18 -4
  127. data/lib/carray/frame/sort.rb +1 -1
  128. data/lib/carray/frame/verbs.rb +32 -12
  129. data/lib/carray/fuse_source.rb +123 -0
  130. data/lib/carray/fusion.rb +218 -0
  131. data/lib/carray/histogram.rb +16 -16
  132. data/lib/carray/inspect.rb +43 -16
  133. data/lib/carray/iterator.rb +147 -3
  134. data/lib/carray/lazy.rb +88 -73
  135. data/lib/carray/mask_gap_fill.rb +3 -1
  136. data/lib/carray/meld_reduce.rb +2 -2
  137. data/lib/carray/methods/align_addr.rb +1 -1
  138. data/lib/carray/methods/composition.rb +1 -1
  139. data/lib/carray/methods/discovery_along.rb +74 -0
  140. data/lib/carray/methods/factorize.rb +50 -0
  141. data/lib/carray/methods/is_in.rb +25 -14
  142. data/lib/carray/methods/locate_addr.rb +81 -3
  143. data/lib/carray/methods/mask_duplicates.rb +36 -2
  144. data/lib/carray/methods/meshgrid.rb +4 -5
  145. data/lib/carray/methods/mode.rb +2 -2
  146. data/lib/carray/methods/nunique.rb +23 -2
  147. data/lib/carray/methods/repeat.rb +110 -0
  148. data/lib/carray/methods/snap.rb +7 -2
  149. data/lib/carray/methods/unique.rb +44 -4
  150. data/lib/carray/methods/value_counts.rb +2 -2
  151. data/lib/carray/rng.rb +86 -0
  152. data/lib/carray/runtime.rb +0 -19
  153. data/lib/carray/slab_iterator.rb +77 -19
  154. data/lib/carray/string_operation_extension.rb +10 -6
  155. data/lib/carray/time.rb +906 -491
  156. data/lib/carray/window_iterator.rb +421 -27
  157. data/lib/carray.rb +7 -5
  158. data/yard-stubs/ca_obj_array.rb +385 -0
  159. data/yard-stubs/ca_obj_bitarray.rb +38 -0
  160. data/yard-stubs/ca_obj_bitfield.rb +43 -0
  161. data/yard-stubs/ca_obj_block.rb +68 -0
  162. data/yard-stubs/ca_obj_byte_swap.rb +56 -0
  163. data/yard-stubs/ca_obj_fake.rb +31 -0
  164. data/yard-stubs/ca_obj_farray.rb +32 -0
  165. data/yard-stubs/ca_obj_field.rb +45 -0
  166. data/yard-stubs/ca_obj_grid.rb +35 -0
  167. data/yard-stubs/ca_obj_refer.rb +72 -0
  168. data/yard-stubs/ca_obj_roll.rb +45 -0
  169. data/yard-stubs/ca_obj_shift.rb +43 -0
  170. data/yard-stubs/ca_obj_stride.rb +181 -0
  171. data/yard-stubs/ca_obj_tile.rb +29 -0
  172. data/yard-stubs/ca_obj_transpose.rb +40 -0
  173. data/yard-stubs/ca_obj_window.rb +57 -0
  174. data/yard-stubs/carray_access.rb +131 -0
  175. data/yard-stubs/carray_attribute.rb +246 -0
  176. data/yard-stubs/carray_broadcast.rb +37 -0
  177. data/yard-stubs/carray_cast.rb +489 -0
  178. data/yard-stubs/carray_class.rb +65 -0
  179. data/yard-stubs/carray_conversion.rb +76 -0
  180. data/yard-stubs/carray_copy.rb +79 -0
  181. data/yard-stubs/carray_core.rb +34 -0
  182. data/yard-stubs/carray_count.rb +84 -0
  183. data/yard-stubs/carray_element.rb +108 -0
  184. data/yard-stubs/carray_generate.rb +66 -0
  185. data/yard-stubs/carray_lazy.rb +228 -0
  186. data/yard-stubs/carray_loop.rb +140 -0
  187. data/yard-stubs/carray_mask.rb +259 -0
  188. data/yard-stubs/carray_math.rb +1615 -0
  189. data/yard-stubs/carray_mathfunc.rb +45 -0
  190. data/yard-stubs/carray_median_percentile.rb +103 -0
  191. data/yard-stubs/carray_memory_view.rb +163 -0
  192. data/yard-stubs/carray_order.rb +252 -0
  193. data/yard-stubs/carray_random.rb +89 -0
  194. data/yard-stubs/carray_scatter.rb +106 -0
  195. data/yard-stubs/carray_slab.rb +59 -0
  196. data/yard-stubs/carray_sort.rb +165 -0
  197. data/yard-stubs/carray_test.rb +85 -0
  198. data/yard-stubs/carray_undef.rb +64 -0
  199. data/yard-stubs/carray_utils.rb +97 -0
  200. data/yard-stubs/ruby_carray.rb +193 -0
  201. metadata +67 -10
  202. data/ext/ca_obj_unbound_repeat.c +0 -496
data/ext/carray_access.c CHANGED
@@ -19,7 +19,7 @@ static ID id_begin, id_end, id_excl_end;
19
19
  #define RANGE_EXCL(r) (rb_funcall(r, id_excl_end, 0))
20
20
 
21
21
  static ID id_to_ca;
22
- static VALUE sym_star, sym_perc, sym_under, sym_gt, sym_tilde;
22
+ static VALUE sym_perc, sym_under, sym_gt, sym_tilde;
23
23
  static VALUE S_CAInfo;
24
24
 
25
25
  VALUE
@@ -492,6 +492,14 @@ rb_ca_ref_all (VALUE self, CAIndexInfo *info)
492
492
  return rb_funcall(self, rb_intern("refer"), 0);
493
493
  }
494
494
 
495
+ static ID
496
+ ca_id_expression_evaluator (void)
497
+ {
498
+ static ID id = 0;
499
+ if ( ! id ) id = rb_intern("@expression_evaluator");
500
+ return id;
501
+ }
502
+
495
503
  VALUE
496
504
  rb_ca_store_all (VALUE self, VALUE rval)
497
505
  {
@@ -515,16 +523,34 @@ rb_ca_store_all (VALUE self, VALUE rval)
515
523
  CArray *cv;
516
524
  TypedData_Get_Struct(rval, CArray, &carray_data_type, cv);
517
525
 
518
- if ( cv->obj_type == CA_OBJ_UNBOUND_REPEAT ) {
519
- rval = ca_ubrep_bind_with(rval, self);
520
- TypedData_Get_Struct(rval, CArray, &carray_data_type, cv);
526
+ /* Where something is registered to compute an expression, and this is
527
+ one, it is asked before the walk below -- it fills the destination
528
+ directly, which is the whole of the saving; making an array and
529
+ copying it over is most of the work once the expression itself is
530
+ fast. It may decline, and then the walk does it. Narrow on purpose:
531
+ the same shape and data type, so nothing here has to broadcast or
532
+ cast on the way. */
533
+ if ( ca_is_lazy_view(cv)
534
+ && ca->data_type == cv->data_type
535
+ && ca->ndim == cv->ndim
536
+ && ca->elements == cv->elements
537
+ && RTEST(rb_attr_get(rb_cCArray, ca_id_expression_evaluator())) ) {
538
+ int8_t k;
539
+ int same = 1;
540
+ for ( k = 0; k < ca->ndim; k++ ) {
541
+ if ( ca->dim[k] != cv->dim[k] ) { same = 0; break; }
542
+ }
543
+ if ( same ) {
544
+ VALUE fusion = rb_const_get(rb_cCArray, rb_intern("Fusion"));
545
+ if ( RTEST(rb_funcall(fusion, rb_intern("evaluate_into"), 2, rval, self)) ) {
546
+ return rval;
547
+ }
548
+ }
521
549
  }
522
550
 
523
- if ( ca->elements != cv->elements ) {
524
- rb_raise(rb_eRuntimeError,
525
- "mismatch in data size (%" PRId64 " <-> %" PRId64 ") for storing to carray",
526
- (ca_size_t) ca->elements, (ca_size_t) cv->elements);
527
- }
551
+ /* The destination owns the shape; see ca_broadcast_to_destination. */
552
+ ca_broadcast_to_destination(self, &rval);
553
+ TypedData_Get_Struct(rval, CArray, &carray_data_type, cv);
528
554
 
529
555
  /* Source delivery via ca_xfer_all into a local scratch instead of
530
556
  ca_attach(cv). This routes through ca_*_func_xfer_all's per-region
@@ -985,7 +1011,16 @@ rb_ca_fetch_method (int argc, VALUE *argv, VALUE self)
985
1011
 
986
1012
  switch ( info.type ) {
987
1013
  case CA_REG_ADDRESS_COMPLEX:
1014
+ /* Re-enter against a flattened view of self. rb_ca_refer_new_flatten
1015
+ is an internal builder and hands back a bare refer, so a marker
1016
+ receiver would be dropped here and the result would never be lifted
1017
+ at the tail. Put it back on before the re-entry. (A Face survives
1018
+ on its own -- the internal builder still lifts those.) */
988
1019
  self = rb_ca_refer_new_flatten(self);
1020
+ if ( ca_is_lazy_marker(ca) ) {
1021
+ extern VALUE rb_ca_lazy_marker_new (VALUE cary);
1022
+ self = rb_ca_lazy_marker_new(self);
1023
+ }
989
1024
  goto retry;
990
1025
  case CA_REG_ADDRESS:
991
1026
  obj = rb_ca_ref_address(self, &info);
@@ -1011,9 +1046,6 @@ rb_ca_fetch_method (int argc, VALUE *argv, VALUE self)
1011
1046
  case CA_REG_REPEAT:
1012
1047
  obj = rb_ca_repeat(argc, argv, self);
1013
1048
  break;
1014
- case CA_REG_UNBOUND_REPEAT:
1015
- obj = rb_funcall2(self, rb_intern("unbound_repeat"), (int) argc, argv);
1016
- break;
1017
1049
  case CA_REG_MAPPING:
1018
1050
  obj = rb_ca_fancy_index_chain(self, argv[0]);
1019
1051
  break;
@@ -1050,19 +1082,16 @@ rb_ca_fetch_method (int argc, VALUE *argv, VALUE self)
1050
1082
  rb_raise(rb_eIndexError, "invalid index specified");
1051
1083
  }
1052
1084
 
1053
- /* Face lift at the read touch point: if `self` is a Face, re-wrap the
1054
- view result as a Face (ca_face_lift). Guards: lift only when the result
1055
- is a CArray instance (excludes Hash / iterator / scalar), and only when
1056
- it is not ALREADY a Face -- some builders (select / repeat / ...) lift
1057
- their own result, so re-lifting here would double-wrap and leave `.parent`
1058
- pointing at a Face instead of the storage. */
1059
- if ( ca_is_face(ca) && rb_obj_is_kind_of(obj, rb_cCArray) ) {
1060
- CArray *obj_ca;
1061
- TypedData_Get_Struct(obj, CArray, &carray_data_type, obj_ca);
1062
- if ( ! ca_is_face(obj_ca) ) {
1063
- obj = ca_face_lift(obj, self);
1064
- }
1065
- }
1085
+ /* Wrapper lift at the read touch point: if `self` is a Face or a
1086
+ CALazyMarker, re-wrap the view result so the wrapper stays on top.
1087
+ Guarded to CArray results, which drops the scalar / CASlabIterator /
1088
+ CAGroupIterator / Hash cases the switch above can produce. The
1089
+ already-a-Face case (some builders lift their own result) is handled
1090
+ inside ca_wrapper_lift.
1091
+
1092
+ Every CA_REG_* branch converges here, so this one line covers every
1093
+ index form that returns a CArray. */
1094
+ CA_WRAPPER_LIFT(obj, self, ca);
1066
1095
 
1067
1096
  return obj;
1068
1097
  }
@@ -1075,6 +1104,8 @@ rb_ca_fetch_newaxis (int argc, VALUE *argv, VALUE self, CArray *ca)
1075
1104
  {
1076
1105
  int i;
1077
1106
  int nclean = 0;
1107
+ int nscalar = 0;
1108
+ int nunder = 0;
1078
1109
  VALUE clean[CA_RANK_MAX];
1079
1110
  volatile VALUE base;
1080
1111
  ca_size_t final_dims[CA_RANK_MAX];
@@ -1086,11 +1117,17 @@ rb_ca_fetch_newaxis (int argc, VALUE *argv, VALUE self, CArray *ca)
1086
1117
  /* Build clean argv (strip :_); reject disjoint sigils + rubber dim. */
1087
1118
  for (i = 0; i < argc; i++) {
1088
1119
  VALUE a = argv[i];
1089
- if ( a == sym_under ) continue;
1090
- if ( a == sym_gt || a == sym_star || a == sym_perc
1120
+ if ( a == sym_under ) {
1121
+ nunder++;
1122
+ continue;
1123
+ }
1124
+ if ( FIXNUM_P(a) || RB_TYPE_P(a, T_BIGNUM) ) {
1125
+ nscalar++;
1126
+ }
1127
+ if ( a == sym_gt || a == sym_perc
1091
1128
  || a == Qfalse || a == sym_tilde ) {
1092
1129
  rb_raise(rb_eIndexError,
1093
- "newaxis (:_) cannot be combined with :>, :*, :%%, "
1130
+ "newaxis (:_) cannot be combined with :>, :%%, "
1094
1131
  "or rubber dim (false / :~)");
1095
1132
  }
1096
1133
  if ( nclean >= CA_RANK_MAX ) {
@@ -1108,18 +1145,26 @@ rb_ca_fetch_newaxis (int argc, VALUE *argv, VALUE self, CArray *ca)
1108
1145
  nclean, (int) ca->ndim);
1109
1146
  }
1110
1147
 
1111
- base = rb_ca_fetch_method(nclean, clean, self);
1112
-
1113
- /* Degenerate: all real axes scalar -> base is a scalar element, not a
1114
- CArray. Out of scope (rare + degenerate); user indexes the element
1115
- and reshapes explicitly. IndexError keeps it catchable + consistent
1116
- with the other newaxis rejects. */
1117
- if ( ! rb_obj_is_kind_of(base, rb_cCArray) ) {
1118
- rb_raise(rb_eIndexError,
1119
- "newaxis (:_) needs at least one non-scalar axis "
1120
- "(all-scalar indexing yields a single element)");
1148
+ /* Every real axis indexed by a scalar: fetching `clean` would yield the
1149
+ element itself, and there would be nothing left to reshape. Ask for a
1150
+ length-1 block on each axis instead, so the base stays a CArray and the
1151
+ result is a view into self. The result carries exactly the axes :_ asked
1152
+ for, all of length 1 -- an operand that states rank nunder and one
1153
+ element, which is what the shape rules then hold it to. */
1154
+ if ( nscalar == nclean ) {
1155
+ VALUE blocks[CA_RANK_MAX];
1156
+ for (i = 0; i < nclean; i++) {
1157
+ blocks[i] = rb_assoc_new(clean[i], INT2FIX(1));
1158
+ }
1159
+ base = rb_ca_fetch_method(nclean, blocks, self);
1160
+ for (i = 0; i < nunder; i++) {
1161
+ dim_argv[i] = INT2FIX(1);
1162
+ }
1163
+ return rb_ca_reshape(nunder, dim_argv, base);
1121
1164
  }
1122
1165
 
1166
+ base = rb_ca_fetch_method(nclean, clean, self);
1167
+
1123
1168
  TypedData_Get_Struct(base, CArray, &carray_data_type, cb);
1124
1169
 
1125
1170
  /* Reconstruct final shape: walk original argv. :_ -> size-1, scalar
@@ -1305,9 +1350,6 @@ rb_cs_fetch_method (int argc, VALUE *argv, VALUE self)
1305
1350
  case CA_REG_REPEAT:
1306
1351
  obj = rb_ca_repeat(argc, argv, self);
1307
1352
  break;
1308
- case CA_REG_UNBOUND_REPEAT:
1309
- obj = rb_funcall2(self, rb_intern("unbound_repeat"), (int) argc, argv);
1310
- break;
1311
1353
  case CA_REG_MAPPING:
1312
1354
  obj = rb_ca_fancy_index_chain(self, argv[0]);
1313
1355
  break;
@@ -1491,10 +1533,6 @@ rb_ca_store_method (int argc, VALUE *argv, VALUE self)
1491
1533
  obj = rb_ca_store_all(obj, rval);
1492
1534
  break;
1493
1535
  }
1494
- case CA_REG_UNBOUND_REPEAT:
1495
- obj = rb_funcall2(self, rb_intern("unbound_repeat"), (int) argc, argv);
1496
- obj = rb_ca_store_all(obj, rval);
1497
- break;
1498
1536
  case CA_REG_MAPPING: {
1499
1537
  obj = rb_ca_fancy_index_chain(self, argv[0]);
1500
1538
  obj = rb_ca_store_all(obj, rval);
@@ -1669,7 +1707,6 @@ rb_ca_s_scan_index (VALUE self, VALUE rdim, VALUE ridx)
1669
1707
  case CA_REG_GRID:
1670
1708
  case CA_REG_MAPPING:
1671
1709
  case CA_REG_METHOD_CALL:
1672
- case CA_REG_UNBOUND_REPEAT:
1673
1710
  case CA_REG_MEMBER:
1674
1711
  case CA_REG_ATTRIBUTE:
1675
1712
  break;
@@ -2052,7 +2089,6 @@ Init_carray_access (void)
2052
2089
  id_excl_end = rb_intern("exclude_end?");
2053
2090
 
2054
2091
  id_to_ca = rb_intern("to_ca");
2055
- sym_star = ID2SYM(rb_intern("*"));
2056
2092
  sym_perc = ID2SYM(rb_intern("%"));
2057
2093
  sym_under = ID2SYM(rb_intern("_"));
2058
2094
  sym_gt = ID2SYM(rb_intern(">"));
@@ -2094,8 +2130,6 @@ Init_carray_access (void)
2094
2130
  rb_define_const(rb_cObject, "CA_REG_MAPPING", INT2NUM(CA_REG_MAPPING));
2095
2131
  rb_define_const(rb_cObject, "CA_REG_METHOD_CALL",
2096
2132
  INT2NUM(CA_REG_METHOD_CALL));
2097
- rb_define_const(rb_cObject, "CA_REG_UNBOUND_REPEAT",
2098
- INT2NUM(CA_REG_UNBOUND_REPEAT));
2099
2133
  rb_define_const(rb_cObject, "CA_REG_MEMBER", INT2NUM(CA_REG_MEMBER));
2100
2134
  rb_define_const(rb_cObject, "CA_REG_ATTRIBUTE", INT2NUM(CA_REG_ATTRIBUTE));
2101
2135