carray 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +568 -0
- data/README.md +6 -6
- data/carray.gemspec +1 -1
- data/ext/ca_axis_descriptor.h +27 -24
- data/ext/ca_axis_dispatch.c +220 -0
- data/ext/ca_axis_group.c +201 -123
- data/ext/ca_binop_dispatch.c +46 -52
- data/ext/ca_binop_dispatch.h +1 -1
- data/ext/ca_categorical_iterator.c +249 -183
- data/ext/ca_compare.c +7 -12
- data/ext/ca_for_buffer.h +21 -68
- data/ext/ca_group_iter.c +38 -23
- data/ext/ca_kernel_iterator.c +1765 -2076
- data/ext/ca_kernel_iterator.h +584 -566
- data/ext/ca_monop_dispatch.c +86 -63
- data/ext/ca_monop_dispatch.h +5 -0
- data/ext/ca_obj_array.c +223 -56
- data/ext/ca_obj_bincmp.c +172 -138
- data/ext/ca_obj_binop.c +116 -230
- data/ext/ca_obj_bitarray.c +40 -26
- data/ext/ca_obj_bitfield.c +100 -68
- data/ext/ca_obj_block.c +19 -9
- data/ext/ca_obj_byte_swap.c +45 -46
- data/ext/ca_obj_const_string.c +269 -44
- data/ext/ca_obj_face.c +612 -89
- data/ext/ca_obj_face.h +111 -47
- data/ext/ca_obj_fake.c +36 -79
- data/ext/ca_obj_farray.c +7 -3
- data/ext/ca_obj_field.c +33 -8
- data/ext/ca_obj_fixlen_string.c +23 -24
- data/ext/ca_obj_grid.c +541 -210
- data/ext/ca_obj_meld.c +331 -111
- data/ext/ca_obj_moncmp.c +80 -65
- data/ext/ca_obj_monop.c +177 -149
- data/ext/ca_obj_object.c +664 -248
- data/ext/ca_obj_record.c +63 -23
- data/ext/ca_obj_reduce.c +18 -16
- data/ext/ca_obj_refer.c +140 -58
- data/ext/ca_obj_remap.c +85 -24
- data/ext/ca_obj_repeat.c +24 -9
- data/ext/ca_obj_roll.c +121 -16
- data/ext/ca_obj_select.c +61 -58
- data/ext/ca_obj_select_axis.c +73 -107
- data/ext/ca_obj_shift.c +32 -102
- data/ext/ca_obj_stack.c +372 -122
- data/ext/ca_obj_stride.c +348 -140
- data/ext/ca_obj_string.c +88 -22
- data/ext/ca_obj_tile.c +38 -21
- data/ext/ca_obj_time.c +45 -31
- data/ext/ca_obj_timedelta.c +43 -29
- data/ext/ca_obj_transpose.c +17 -6
- data/ext/ca_obj_triop.c +125 -141
- data/ext/ca_obj_window.c +330 -44
- data/ext/ca_op_ipower.c +24 -11
- data/ext/ca_op_powi.h +57 -30
- data/ext/ca_pow5_table.h +656 -0
- data/ext/ca_sort_kernels.h +70 -0
- data/ext/ca_sweep_engine.c +104 -81
- data/ext/ca_sweep_engine.h +7 -20
- data/ext/ca_triop_dispatch.c +4 -1
- data/ext/ca_triop_dispatch.h +5 -2
- data/ext/caframe_csv_reader.c +542 -0
- data/ext/carray.h +241 -92
- data/ext/carray_access.c +608 -276
- data/ext/carray_address_basis.c +494 -97
- data/ext/carray_attribute.c +129 -4
- data/ext/carray_bincount.c +39 -7
- data/ext/carray_broadcast.c +56 -19
- data/ext/carray_build_flags.h +1 -1
- data/ext/carray_call_cfunc.c +108 -28
- data/ext/carray_cast.c +1576 -223
- data/ext/carray_cast_func.rb +77 -24
- data/ext/carray_class.c +4 -3
- data/ext/carray_conversion.c +208 -75
- data/ext/carray_copy.c +82 -24
- data/ext/carray_core.c +646 -162
- data/ext/carray_count.c +171 -88
- data/ext/carray_element.c +94 -60
- data/ext/carray_factorize.c +670 -324
- data/ext/carray_generate.c +260 -83
- data/ext/carray_histogram.c +209 -106
- data/ext/carray_hold.c +14 -16
- data/ext/carray_index_classifier.c +422 -243
- data/ext/carray_internal.h +692 -3
- data/ext/carray_kernels_bincmp.c +7 -0
- data/ext/carray_kernels_binop.c +487 -120
- data/ext/carray_kernels_init.c +653 -50
- data/ext/carray_kernels_moncmp.c +15 -8
- data/ext/carray_kernels_monop.c +99 -43
- data/ext/carray_kernels_reduce_aggregate.c +3925 -6112
- data/ext/carray_kernels_reduce_boolean.c +112 -36
- data/ext/carray_kernels_reduce_cumulative.c +2127 -6903
- data/ext/carray_kernels_reduce_extreme.c +3032 -2892
- data/ext/carray_kernels_reduce_variance.c +439 -500
- data/ext/carray_kernels_scan.c +1097 -488
- data/ext/carray_kernels_search.c +3787 -2176
- data/ext/carray_kernels_sort.c +1200 -920
- data/ext/carray_kernels_triop.c +479 -7
- data/ext/carray_key_windows.c +216 -0
- data/ext/carray_lazy.c +967 -153
- data/ext/carray_loop.c +81 -65
- data/ext/carray_mask.c +910 -324
- data/ext/carray_math_kernel.h +1 -0
- data/ext/carray_median_percentile.c +299 -100
- data/ext/carray_memory_view.c +872 -758
- data/ext/carray_operator.c +1171 -364
- data/ext/carray_order.c +505 -133
- data/ext/carray_partition.c +112 -65
- data/ext/carray_random.c +327 -239
- data/ext/carray_round.c +273 -0
- data/ext/carray_scatter.c +346 -78
- data/ext/carray_segment.c +257 -0
- data/ext/carray_slab.c +249 -86
- data/ext/carray_sort.c +224 -227
- data/ext/carray_sort_kernel.c +8 -1
- data/ext/carray_struct.c +118 -39
- data/ext/carray_test.c +193 -69
- data/ext/carray_time_text.c +1182 -0
- data/ext/carray_undef.c +4 -0
- data/ext/carray_utils.c +579 -113
- data/ext/extconf.rb +27 -2
- data/ext/mk_call_cfunc.rb +19 -4
- data/ext/mk_pow5_table.rb +35 -0
- data/ext/mkkernel.rb +1202 -1014
- data/ext/ruby_carray.c +17 -5
- data/ext/version.h +4 -4
- data/ext/version.rb +4 -2
- data/lib/carray/attribute.rb +160 -17
- data/lib/carray/autoload_carray.rb +23 -27
- data/lib/carray/autoload_method_extension.rb +20 -5
- data/lib/carray/axis_group.rb +360 -63
- data/lib/carray/basics.rb +162 -28
- data/lib/carray/bincount_nd.rb +18 -2
- data/lib/carray/block_iterator.rb +231 -58
- data/lib/carray/boolean_reduce.rb +34 -42
- data/lib/carray/categorical.rb +242 -52
- data/lib/carray/categorical_iterator.rb +437 -827
- data/lib/carray/complex.rb +41 -34
- data/lib/carray/conditional.rb +150 -14
- data/lib/carray/const_string.rb +59 -4
- data/lib/carray/construct.rb +15 -11
- data/lib/carray/data_type_extension.rb +1 -0
- data/lib/carray/distance_limit.rb +77 -0
- data/lib/carray/fixlen_string.rb +7 -1
- data/lib/carray/frame/column_verbs.rb +70 -0
- data/lib/carray/frame/concat.rb +157 -6
- data/lib/carray/frame/convert.rb +82 -7
- data/lib/carray/frame/csv_parser.rb +688 -87
- data/lib/carray/frame/describe.rb +80 -0
- data/lib/carray/frame/frame.rb +369 -45
- data/lib/carray/frame/group.rb +631 -90
- data/lib/carray/frame/io.rb +506 -79
- data/lib/carray/frame/join.rb +411 -62
- data/lib/carray/frame/records.rb +116 -19
- data/lib/carray/frame/reshape.rb +455 -0
- data/lib/carray/frame/sort.rb +30 -18
- data/lib/carray/frame/verbs.rb +868 -61
- data/lib/carray/frame/windows.rb +117 -0
- data/lib/carray/frame.rb +4 -0
- data/lib/carray/fuse_source.rb +118 -2
- data/lib/carray/fusion.rb +257 -42
- data/lib/carray/histogram.rb +6 -1
- data/lib/carray/inspect.rb +54 -13
- data/lib/carray/iterator.rb +99 -9
- data/lib/carray/key_windows.rb +620 -0
- data/lib/carray/lazy.rb +216 -193
- data/lib/carray/mask_gap_fill.rb +112 -92
- data/lib/carray/math.rb +32 -19
- data/lib/carray/meld_reduce.rb +52 -21
- data/lib/carray/methods/align_addr.rb +8 -4
- data/lib/carray/methods/bin.rb +26 -18
- data/lib/carray/methods/bincount.rb +18 -2
- data/lib/carray/methods/bit_string.rb +15 -4
- data/lib/carray/methods/choose.rb +16 -3
- data/lib/carray/methods/composition.rb +18 -10
- data/lib/carray/methods/factorize.rb +2 -2
- data/lib/carray/methods/gather_nd.rb +25 -5
- data/lib/carray/methods/insert_block.rb +9 -14
- data/lib/carray/methods/is_between.rb +59 -0
- data/lib/carray/methods/is_in.rb +140 -10
- data/lib/carray/methods/join.rb +2 -7
- data/lib/carray/methods/lag.rb +49 -0
- data/lib/carray/methods/locate_addr.rb +182 -45
- data/lib/carray/methods/mode.rb +18 -1
- data/lib/carray/methods/nunique.rb +11 -6
- data/lib/carray/methods/repeat.rb +1 -20
- data/lib/carray/methods/resize.rb +21 -23
- data/lib/carray/methods/snap.rb +34 -12
- data/lib/carray/methods/unique.rb +11 -2
- data/lib/carray/methods/value_counts.rb +4 -11
- data/lib/carray/record_order.rb +208 -0
- data/lib/carray/rng.rb +3 -0
- data/lib/carray/runtime.rb +65 -17
- data/lib/carray/segment_iterator.rb +1221 -0
- data/lib/carray/serialize.rb +214 -30
- data/lib/carray/slab_iterator.rb +101 -27
- data/lib/carray/stack.rb +10 -4
- data/lib/carray/string.rb +105 -5
- data/lib/carray/string_operation_extension.rb +12 -4
- data/lib/carray/struct.rb +137 -58
- data/lib/carray/struct_builder.rb +124 -17
- data/lib/carray/time.rb +1222 -186
- data/lib/carray/window_iterator.rb +242 -81
- data/lib/carray.rb +9 -2
- data/yard-stubs/ca_obj_array.rb +4 -4
- data/yard-stubs/ca_obj_bitarray.rb +7 -0
- data/yard-stubs/ca_obj_bitfield.rb +23 -12
- data/yard-stubs/ca_obj_fake.rb +1 -1
- data/yard-stubs/ca_obj_field.rb +5 -1
- data/yard-stubs/ca_obj_grid.rb +21 -10
- data/yard-stubs/ca_obj_refer.rb +5 -4
- data/yard-stubs/ca_obj_roll.rb +2 -3
- data/yard-stubs/ca_obj_shift.rb +5 -1
- data/yard-stubs/ca_obj_stride.rb +10 -7
- data/yard-stubs/ca_obj_tile.rb +1 -1
- data/yard-stubs/ca_obj_transpose.rb +1 -1
- data/yard-stubs/ca_obj_window.rb +9 -5
- data/yard-stubs/carray_access.rb +11 -5
- data/yard-stubs/carray_attribute.rb +0 -5
- data/yard-stubs/carray_broadcast.rb +1 -1
- data/yard-stubs/carray_cast.rb +88 -43
- data/yard-stubs/carray_conversion.rb +15 -2
- data/yard-stubs/carray_copy.rb +12 -5
- data/yard-stubs/carray_core.rb +3 -3
- data/yard-stubs/carray_count.rb +9 -0
- data/yard-stubs/carray_element.rb +10 -4
- data/yard-stubs/carray_generate.rb +21 -1
- data/yard-stubs/carray_lazy.rb +5 -1
- data/yard-stubs/carray_loop.rb +4 -1
- data/yard-stubs/carray_mask.rb +60 -12
- data/yard-stubs/carray_math.rb +52 -14
- data/yard-stubs/carray_median_percentile.rb +15 -8
- data/yard-stubs/carray_memory_view.rb +40 -23
- data/yard-stubs/carray_order.rb +61 -29
- data/yard-stubs/carray_random.rb +13 -4
- data/yard-stubs/carray_scatter.rb +21 -9
- data/yard-stubs/carray_segment.rb +72 -0
- data/yard-stubs/carray_slab.rb +10 -2
- data/yard-stubs/carray_sort.rb +49 -8
- data/yard-stubs/carray_test.rb +15 -3
- data/yard-stubs/carray_utils.rb +0 -26
- metadata +19 -5
- data/ext/ca_for_each_element.h +0 -239
- data/ext/carray_kernels_map.c +0 -3467
- data/lib/carray/arrow_tensor.rb +0 -401
- data/lib/carray/table.rb +0 -108
data/ext/ca_obj_fixlen_string.c
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
#include "carray.h"
|
|
24
24
|
#include "ca_obj_face.h"
|
|
25
|
+
#include "carray_internal.h"
|
|
25
26
|
|
|
26
27
|
typedef struct {
|
|
27
28
|
/* === CAView prefix === */
|
|
@@ -89,6 +90,12 @@ ca_fixlen_string_setup (CAFixlenString *ca, CArray *parent)
|
|
|
89
90
|
"CAFixlenString requires fixlen storage (parent.data_type != CA_FIXLEN)");
|
|
90
91
|
}
|
|
91
92
|
|
|
93
|
+
/* ca == NULL asks for the checks above only, so that a constructor can
|
|
94
|
+
run them before it allocates. */
|
|
95
|
+
if ( ca == NULL ) {
|
|
96
|
+
return 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
92
99
|
ca->obj_type = CA_OBJ_FIXLEN_STRING;
|
|
93
100
|
ca->data_type = CA_FIXLEN;
|
|
94
101
|
/* ORDERABLE + COMPARABLE. The descent is NOT the identity map -- the
|
|
@@ -130,9 +137,6 @@ ca_fixlen_string_setup (CAFixlenString *ca, CArray *parent)
|
|
|
130
137
|
ca->attach = 0;
|
|
131
138
|
ca->nosync = 0;
|
|
132
139
|
|
|
133
|
-
if ( ca_has_mask(parent) ) {
|
|
134
|
-
ca_create_mask((CArray *) ca);
|
|
135
|
-
}
|
|
136
140
|
|
|
137
141
|
if ( ca_is_scalar(parent) ) {
|
|
138
142
|
ca_set_flag(ca, CA_FLAG_SCALAR);
|
|
@@ -148,9 +152,11 @@ ca_fixlen_string_setup (CAFixlenString *ca, CArray *parent)
|
|
|
148
152
|
CAFixlenString *
|
|
149
153
|
ca_fixlen_string_new (CArray *parent)
|
|
150
154
|
{
|
|
151
|
-
CAFixlenString *ca
|
|
152
|
-
|
|
155
|
+
CAFixlenString *ca;
|
|
156
|
+
ca_fixlen_string_setup(NULL, parent);
|
|
157
|
+
ca = (CAFixlenString *) ca_array_alloc(CA_OBJ_FIXLEN_STRING, parent->ndim);
|
|
153
158
|
ca_fixlen_string_setup(ca, parent);
|
|
159
|
+
ca_fill_or_free((CArray *) ca, ca_view_inherit_mask, (VALUE) ca);
|
|
154
160
|
return ca;
|
|
155
161
|
}
|
|
156
162
|
|
|
@@ -188,18 +194,6 @@ ca_fixlen_string_func_allocate (void *ap)
|
|
|
188
194
|
ca->ptr = ca->parent->ptr;
|
|
189
195
|
}
|
|
190
196
|
|
|
191
|
-
static void
|
|
192
|
-
ca_fixlen_string_func_create_mask (void *ap)
|
|
193
|
-
{
|
|
194
|
-
CAFixlenString *ca = (CAFixlenString *) ap;
|
|
195
|
-
ca_update_mask(ca->parent);
|
|
196
|
-
if ( ! ca->parent->mask ) {
|
|
197
|
-
ca_create_mask(ca->parent);
|
|
198
|
-
}
|
|
199
|
-
ca->mask = (CArray *) ca_refer_new(ca->parent->mask,
|
|
200
|
-
CA_BOOLEAN, ca->ndim, ca->dim, 0, 0);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
197
|
ca_operation_function_t ca_fixlen_string_func = {
|
|
204
198
|
-1, /* CA_OBJ_FIXLEN_STRING — filled by ca_install_obj_type */
|
|
205
199
|
CA_VIEW_ARRAY,
|
|
@@ -210,7 +204,7 @@ ca_operation_function_t ca_fixlen_string_func = {
|
|
|
210
204
|
ca_face_sync,
|
|
211
205
|
ca_face_detach,
|
|
212
206
|
ca_face_fill_data,
|
|
213
|
-
|
|
207
|
+
ca_view_func_create_mask,
|
|
214
208
|
ca_face_xfer_index,
|
|
215
209
|
ca_face_xfer_addrs,
|
|
216
210
|
NULL, /* fold_stride: identity Face is not foldable */
|
|
@@ -253,7 +247,7 @@ rb_ca_fixlen_string_wrap_method (VALUE klass, VALUE raw)
|
|
|
253
247
|
search / MemoryView still see the raw padded bytes. Genuine trailing NULs
|
|
254
248
|
cannot survive here; use a raw CA_FIXLEN array for binary blobs. */
|
|
255
249
|
static VALUE
|
|
256
|
-
|
|
250
|
+
rb_ca_fixlen_string_storage_to_element (VALUE self, VALUE raw)
|
|
257
251
|
{
|
|
258
252
|
(void) self;
|
|
259
253
|
if ( TYPE(raw) == T_STRING ) {
|
|
@@ -280,11 +274,13 @@ rb_ca_fixlen_string_initialize_copy (VALUE self, VALUE other)
|
|
|
280
274
|
{
|
|
281
275
|
CAFixlenString *ca, *cs;
|
|
282
276
|
TypedData_Get_Struct(self, CAFixlenString, &cafixlen_string_data_type, ca);
|
|
277
|
+
ca_check_uninitialized(ca);
|
|
283
278
|
TypedData_Get_Struct(other, CAFixlenString, &cafixlen_string_data_type, cs);
|
|
284
279
|
if ( ca_func[CA_OBJ_FIXLEN_STRING].pool_init ) {
|
|
285
280
|
ca_array_pool_alloc(ca, CA_OBJ_FIXLEN_STRING, cs->parent->ndim);
|
|
286
281
|
}
|
|
287
282
|
ca_fixlen_string_setup(ca, cs->parent);
|
|
283
|
+
ca_view_inherit_mask((VALUE) ca);
|
|
288
284
|
return self;
|
|
289
285
|
}
|
|
290
286
|
|
|
@@ -309,13 +305,16 @@ Init_ca_obj_fixlen_string (void)
|
|
|
309
305
|
rb_ca_fixlen_string_initialize_copy, 1);
|
|
310
306
|
rb_define_singleton_method(rb_cCAFixlenString, "wrap",
|
|
311
307
|
rb_ca_fixlen_string_wrap_method, 1);
|
|
312
|
-
rb_define_method(rb_cCAFixlenString, "
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
308
|
+
rb_define_method(rb_cCAFixlenString, "storage_to_element",
|
|
309
|
+
rb_ca_fixlen_string_storage_to_element, 1);
|
|
310
|
+
ca_face_register_storage_to_element(CA_OBJ_FIXLEN_STRING,
|
|
311
|
+
rb_ca_fixlen_string_storage_to_element);
|
|
316
312
|
|
|
317
313
|
/* CA_FIXLEN is portable storage (fixed-width bytes, no per-process VALUE
|
|
318
314
|
or per-parent buffer), so the Face can be carried across multi-parent
|
|
319
|
-
constructions like CAStack
|
|
315
|
+
constructions like CAStack. */
|
|
320
316
|
ca_face_register_state_portable(CA_OBJ_FIXLEN_STRING, 1);
|
|
317
|
+
|
|
318
|
+
/* The bytes are the strings: a MemoryView consumer reads them as "Ns". */
|
|
319
|
+
ca_face_register_memory_view(CA_OBJ_FIXLEN_STRING, 1);
|
|
321
320
|
}
|