carray 1.3.6 → 1.5.3
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/.yardopts +32 -0
- data/LICENSE +22 -0
- data/NEWS.md +65 -0
- data/README.md +23 -26
- data/Rakefile +31 -0
- data/TODO.md +17 -0
- data/carray.gemspec +24 -31
- data/{ca_iter_block.c → ext/ca_iter_block.c} +16 -18
- data/{ca_iter_dimension.c → ext/ca_iter_dimension.c} +20 -21
- data/{ca_iter_window.c → ext/ca_iter_window.c} +12 -14
- data/{ca_obj_array.c → ext/ca_obj_array.c} +451 -176
- data/{ca_obj_bitarray.c → ext/ca_obj_bitarray.c} +18 -23
- data/{ca_obj_bitfield.c → ext/ca_obj_bitfield.c} +12 -16
- data/{ca_obj_block.c → ext/ca_obj_block.c} +47 -54
- data/{ca_obj_fake.c → ext/ca_obj_fake.c} +10 -12
- data/{ca_obj_farray.c → ext/ca_obj_farray.c} +21 -23
- data/{ca_obj_field.c → ext/ca_obj_field.c} +30 -32
- data/{ca_obj_grid.c → ext/ca_obj_grid.c} +32 -33
- data/{ca_obj_mapping.c → ext/ca_obj_mapping.c} +11 -13
- data/{ca_obj_object.c → ext/ca_obj_object.c} +40 -42
- data/{ca_obj_reduce.c → ext/ca_obj_reduce.c} +3 -5
- data/{ca_obj_refer.c → ext/ca_obj_refer.c} +38 -40
- data/{ca_obj_repeat.c → ext/ca_obj_repeat.c} +45 -47
- data/{ca_obj_select.c → ext/ca_obj_select.c} +4 -6
- data/{ca_obj_shift.c → ext/ca_obj_shift.c} +26 -28
- data/{ca_obj_transpose.c → ext/ca_obj_transpose.c} +26 -28
- data/{ca_obj_unbound_repeat.c → ext/ca_obj_unbound_repeat.c} +106 -160
- data/{ca_obj_window.c → ext/ca_obj_window.c} +33 -35
- data/{carray.h → ext/carray.h} +90 -59
- data/{carray_access.c → ext/carray_access.c} +244 -109
- data/{carray_attribute.c → ext/carray_attribute.c} +161 -207
- data/{carray_call_cfunc.c → ext/carray_call_cfunc.c} +1 -3
- data/{carray_cast.c → ext/carray_cast.c} +350 -149
- data/{carray_cast_func.rb → ext/carray_cast_func.rb} +1 -2
- data/{carray_class.c → ext/carray_class.c} +28 -36
- data/{carray_conversion.c → ext/carray_conversion.c} +58 -70
- data/{carray_copy.c → ext/carray_copy.c} +34 -50
- data/{carray_core.c → ext/carray_core.c} +75 -62
- data/ext/carray_data_type.c +66 -0
- data/{carray_element.c → ext/carray_element.c} +34 -53
- data/{carray_generate.c → ext/carray_generate.c} +137 -50
- data/{carray_iterator.c → ext/carray_iterator.c} +53 -53
- data/{carray_loop.c → ext/carray_loop.c} +77 -106
- data/{carray_mask.c → ext/carray_mask.c} +95 -114
- data/{carray_math.rb → ext/carray_math.rb} +47 -31
- data/ext/{mathfunc/carray_mathfunc.c → carray_mathfunc.c} +1 -3
- data/{carray_numeric.c → ext/carray_numeric.c} +43 -46
- data/{carray_operator.c → ext/carray_operator.c} +72 -36
- data/{carray_order.c → ext/carray_order.c} +73 -217
- data/{carray_sort_addr.c → ext/carray_sort_addr.c} +14 -21
- data/{carray_stat.c → ext/carray_stat.c} +6 -8
- data/{carray_stat_proc.rb → ext/carray_stat_proc.rb} +25 -27
- data/{carray_test.c → ext/carray_test.c} +59 -51
- data/{carray_undef.c → ext/carray_undef.c} +1 -11
- data/{carray_utils.c → ext/carray_utils.c} +12 -4
- data/{extconf.rb → ext/extconf.rb} +1 -6
- data/{mkmath.rb → ext/mkmath.rb} +13 -3
- data/{ruby_carray.c → ext/ruby_carray.c} +20 -8
- data/{ruby_ccomplex.c → ext/ruby_ccomplex.c} +1 -3
- data/{ruby_float_func.c → ext/ruby_float_func.c} +1 -3
- data/ext/version.h +16 -0
- data/{version.rb → ext/version.rb} +0 -0
- data/lib/carray.rb +52 -10
- data/lib/carray/{base/autoload.rb → autoload.rb} +48 -8
- data/lib/carray/autoload/autoload_base.rb +1 -5
- data/lib/carray/autoload/autoload_gem_cairo.rb +9 -0
- data/lib/carray/autoload/autoload_gem_ffi.rb +9 -0
- data/lib/carray/autoload/autoload_gem_gnuplot.rb +2 -0
- data/lib/carray/autoload/autoload_gem_io_csv.rb +14 -0
- data/lib/carray/autoload/autoload_gem_io_pg.rb +6 -0
- data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +12 -0
- data/lib/carray/autoload/autoload_gem_narray.rb +10 -0
- data/lib/carray/autoload/autoload_gem_numo_narray.rb +15 -0
- data/lib/carray/autoload/autoload_gem_opencv.rb +16 -0
- data/lib/carray/autoload/autoload_gem_random.rb +8 -0
- data/lib/carray/autoload/autoload_gem_rmagick.rb +23 -0
- data/lib/carray/autoload/{autoload_graphics_zimg.rb → autoload_gem_zimg.rb} +0 -0
- data/lib/carray/basic.rb +191 -0
- data/lib/carray/broadcast.rb +82 -0
- data/lib/carray/compose.rb +315 -0
- data/lib/carray/construct.rb +460 -0
- data/lib/carray/convert.rb +115 -0
- data/lib/carray/info.rb +1 -3
- data/lib/carray/{base/inspect.rb → inspect.rb} +9 -11
- data/lib/carray/io/imagemagick.rb +2 -4
- data/lib/carray/{base/iterator.rb → iterator.rb} +6 -6
- data/lib/carray/mask.rb +102 -0
- data/lib/carray/{base/math.rb → math.rb} +21 -53
- data/lib/carray/math/histogram.rb +8 -10
- data/lib/carray/math/recurrence.rb +1 -3
- data/lib/carray/mkmf.rb +9 -3
- data/lib/carray/object/ca_obj_iterator.rb +1 -3
- data/lib/carray/object/ca_obj_link.rb +1 -3
- data/lib/carray/object/ca_obj_pack.rb +9 -11
- data/lib/carray/obsolete.rb +270 -0
- data/lib/carray/ordering.rb +181 -0
- data/lib/carray/{base/serialize.rb → serialize.rb} +50 -66
- data/lib/carray/string.rb +188 -0
- data/lib/carray/{base/struct.rb → struct.rb} +19 -21
- data/lib/carray/{io/table.rb → table.rb} +1 -9
- data/lib/carray/testing.rb +51 -0
- data/lib/carray/time.rb +76 -0
- data/lib/carray/transform.rb +98 -0
- data/misc/Methods.ja.md +182 -0
- data/{NOTE → misc/NOTE} +0 -0
- data/spec/Classes/CABitfield_spec.rb +58 -0
- data/spec/Classes/CABlockIterator_spec.rb +114 -0
- data/spec/Classes/CABlock_spec.rb +205 -0
- data/spec/Classes/CAField_spec.rb +39 -0
- data/spec/Classes/CAGrid_spec.rb +75 -0
- data/spec/Classes/CAMap_spec.rb +0 -0
- data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
- data/spec/Classes/CAObject_attribute_spec.rb +33 -0
- data/spec/Classes/CAObject_spec.rb +33 -0
- data/spec/Classes/CARefer_spec.rb +93 -0
- data/spec/Classes/CARepeat_spec.rb +65 -0
- data/spec/Classes/CASelect_spec.rb +22 -0
- data/spec/Classes/CAShift_spec.rb +16 -0
- data/spec/Classes/CAStruct_spec.rb +71 -0
- data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
- data/spec/Classes/CAUnboudRepeat_spec.rb +102 -0
- data/spec/Classes/CAWindow_spec.rb +54 -0
- data/spec/Classes/CAWrap_spec.rb +8 -0
- data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
- data/spec/Classes/CScalar_spec.rb +55 -0
- data/spec/Features/feature_130_spec.rb +19 -0
- data/spec/Features/feature_attributes_spec.rb +280 -0
- data/spec/Features/feature_boolean_spec.rb +98 -0
- data/spec/Features/feature_broadcast.rb +116 -0
- data/spec/Features/feature_cast_function.rb +19 -0
- data/spec/Features/feature_cast_spec.rb +33 -0
- data/spec/Features/feature_class_spec.rb +84 -0
- data/spec/Features/feature_complex_spec.rb +42 -0
- data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
- data/spec/Features/feature_convert_spec.rb +46 -0
- data/spec/Features/feature_copy_spec.rb +123 -0
- data/spec/Features/feature_creation_spec.rb +84 -0
- data/spec/Features/feature_element_spec.rb +144 -0
- data/spec/Features/feature_extream_spec.rb +54 -0
- data/spec/Features/feature_generate_spec.rb +74 -0
- data/spec/Features/feature_index_spec.rb +69 -0
- data/spec/Features/feature_mask_spec.rb +580 -0
- data/spec/Features/feature_math_spec.rb +97 -0
- data/spec/Features/feature_order_spec.rb +146 -0
- data/spec/Features/feature_ref_store_spec.rb +209 -0
- data/spec/Features/feature_serialization_spec.rb +125 -0
- data/spec/Features/feature_stat_spec.rb +397 -0
- data/spec/Features/feature_virtual_spec.rb +48 -0
- data/spec/Features/method_eq_spec.rb +81 -0
- data/spec/Features/method_is_nan_spec.rb +12 -0
- data/spec/Features/method_map_spec.rb +54 -0
- data/spec/Features/method_max_with.rb +20 -0
- data/spec/Features/method_min_with.rb +19 -0
- data/spec/Features/method_ne_spec.rb +18 -0
- data/spec/Features/method_project_spec.rb +188 -0
- data/spec/Features/method_ref_spec.rb +27 -0
- data/spec/Features/method_round_spec.rb +11 -0
- data/spec/Features/method_s_linspace_spec.rb +48 -0
- data/spec/Features/method_s_span_spec.rb +14 -0
- data/spec/Features/method_seq_spec.rb +47 -0
- data/spec/Features/method_sort_with.rb +43 -0
- data/spec/Features/method_sorted_with.rb +29 -0
- data/spec/Features/method_span_spec.rb +42 -0
- data/spec/Features/method_wrap_readonly_spec.rb +43 -0
- data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
- data/spec/spec_all.rb +0 -1
- data/utils/convert_test.rb +73 -0
- data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
- data/{devel → utils}/guess_shape.rb +0 -0
- data/utils/{diff_method.rb → monkey_patch_methods.rb} +17 -7
- metadata +173 -316
- data/COPYING +0 -56
- data/GPL +0 -340
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -33
- data/LEGAL +0 -50
- data/Makefile +0 -451
- data/TODO +0 -5
- data/carray_cast_func.c +0 -8670
- data/carray_config.h +0 -26
- data/carray_math.c +0 -24805
- data/carray_random.c +0 -531
- data/carray_stat_proc.c +0 -12170
- data/ext/calculus/carray_calculus.c +0 -931
- data/ext/calculus/carray_interp.c +0 -358
- data/ext/calculus/extconf.rb +0 -12
- data/ext/calculus/lib/autoload/autoload_math_calculus.rb +0 -2
- data/ext/calculus/lib/math/calculus.rb +0 -119
- data/ext/calculus/lib/math/interp/adapter_interp1d.rb +0 -31
- data/ext/fortio/extconf.rb +0 -3
- data/ext/fortio/lib/carray/autoload/autoload_fortran_format.rb +0 -5
- data/ext/fortio/lib/carray/io/fortran_format.rb +0 -43
- data/ext/fortio/lib/fortio.rb +0 -3
- data/ext/fortio/lib/fortio/fortran_format.rb +0 -605
- data/ext/fortio/lib/fortio/fortran_format.tab.rb +0 -536
- data/ext/fortio/lib/fortio/fortran_format.y +0 -215
- data/ext/fortio/lib/fortio/fortran_namelist.rb +0 -151
- data/ext/fortio/lib/fortio/fortran_namelist.tab.rb +0 -470
- data/ext/fortio/lib/fortio/fortran_namelist.y +0 -213
- data/ext/fortio/lib/fortio/fortran_sequential.rb +0 -345
- data/ext/fortio/ruby_fortio.c +0 -182
- data/ext/fortio/test/test_H.rb +0 -5
- data/ext/fortio/test/test_T.rb +0 -7
- data/ext/fortio/test/test_fortran_format.rb +0 -86
- data/ext/fortio/test/test_namelist.rb +0 -25
- data/ext/fortio/test/test_namelist_write.rb +0 -10
- data/ext/fortio/test/test_sequential.rb +0 -13
- data/ext/fortio/test/test_sequential2.rb +0 -13
- data/ext/fortio/work/test.rb +0 -10
- data/ext/fortio/work/test_e.rb +0 -19
- data/ext/fortio/work/test_ep.rb +0 -10
- data/ext/fortio/work/test_parse.rb +0 -12
- data/ext/imagemap/carray_imagemap.c +0 -495
- data/ext/imagemap/doc/call_graph.dot +0 -28
- data/ext/imagemap/draw.c +0 -567
- data/ext/imagemap/extconf.rb +0 -13
- data/ext/imagemap/lib/autoload/autoload_graphics_imagemap.rb +0 -1
- data/ext/imagemap/lib/graphics/imagemap.rb +0 -273
- data/ext/imagemap/lib/image_map.rb +0 -4
- data/ext/imagemap/test/swath_index.rb +0 -83
- data/ext/imagemap/test/swath_warp.rb +0 -99
- data/ext/imagemap/test/test.rb +0 -23
- data/ext/imagemap/test/test_image.rb +0 -42
- data/ext/imagemap/test/test_line.rb +0 -14
- data/ext/imagemap/test/test_rotate.rb +0 -17
- data/ext/imagemap/test/test_triangle.rb +0 -20
- data/ext/imagemap/test/test_warp.rb +0 -26
- data/ext/mathfunc/extconf.rb +0 -18
- data/ext/mathfunc/lib/autoload/autoload_math_mathfunc.rb +0 -1
- data/ext/mathfunc/lib/math/mathfunc.rb +0 -15
- data/ext/mathfunc/test/test_hypot.rb +0 -5
- data/ext/mathfunc/test/test_j0.rb +0 -22
- data/ext/mathfunc/test/test_jn.rb +0 -8
- data/ext/mathfunc/test/test_sph.rb +0 -9
- data/ext/narray/README +0 -22
- data/ext/narray/ca_wrap_narray.c +0 -500
- data/ext/narray/carray_narray.c +0 -21
- data/ext/narray/extconf.rb +0 -57
- data/ext/narray/lib/autoload/autoload_math_narray.rb +0 -1
- data/ext/narray/lib/autoload/autoload_math_narray_miss.rb +0 -11
- data/ext/narray/lib/math/narray.rb +0 -17
- data/ext/narray/lib/math/narray_miss.rb +0 -45
- data/lib/carray/autoload/autoload_graphics_gnuplot.rb +0 -2
- data/lib/carray/autoload/autoload_io_csv.rb +0 -14
- data/lib/carray/autoload/autoload_io_pg.rb +0 -6
- data/lib/carray/autoload/autoload_io_sqlite3.rb +0 -12
- data/lib/carray/autoload/autoload_io_table.rb +0 -1
- data/lib/carray/autoload/autoload_math_interp.rb +0 -4
- data/lib/carray/base/basic.rb +0 -1090
- data/lib/carray/base/obsolete.rb +0 -131
- data/lib/carray/graphics/gnuplot.rb +0 -2131
- data/lib/carray/graphics/zimg.rb +0 -296
- data/lib/carray/io/csv.rb +0 -572
- data/lib/carray/io/pg.rb +0 -101
- data/lib/carray/io/sqlite3.rb +0 -215
- data/lib/carray/math/interp.rb +0 -57
- data/lib/carray/math/interp/adapter_gsl_spline.rb +0 -47
- data/mkmf.log +0 -375
- data/mt19937ar.c +0 -182
- data/mt19937ar.h +0 -86
- data/rdoc_ext.rb +0 -1115
- data/rdoc_main.rb +0 -27
- data/rdoc_math.rb +0 -5
- data/rdoc_stat.rb +0 -31
- data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
- data/spec/CArray/bug/store_spec.rb +0 -27
- data/spec/CArray/index/repeat_spec.rb +0 -10
- data/spec/CArray/method/eq_spec.rb +0 -80
- data/spec/CArray/method/is_nan_spec.rb +0 -12
- data/spec/CArray/method/ne_spec.rb +0 -18
- data/spec/CArray/method/round_spec.rb +0 -11
- data/spec/CArray/object/_attribute_spec.rb +0 -32
- data/spec/CArray/object/s_new_spec.rb +0 -31
- data/spec/CArray/serialize/Serialization_spec.rb +0 -89
- data/test/test_130.rb +0 -23
- data/test/test_ALL.rb +0 -51
- data/test/test_CABitfield.rb +0 -59
- data/test/test_CABlock.rb +0 -208
- data/test/test_CAField.rb +0 -40
- data/test/test_CAGrid.rb +0 -76
- data/test/test_CAMmap.rb +0 -11
- data/test/test_CARefer.rb +0 -94
- data/test/test_CARepeat.rb +0 -66
- data/test/test_CASelect.rb +0 -23
- data/test/test_CAShift.rb +0 -17
- data/test/test_CAWindow.rb +0 -55
- data/test/test_CAWrap.rb +0 -9
- data/test/test_CComplex.rb +0 -83
- data/test/test_CScalar.rb +0 -91
- data/test/test_attribute.rb +0 -281
- data/test/test_block_iterator.rb +0 -17
- data/test/test_boolean.rb +0 -99
- data/test/test_cast.rb +0 -33
- data/test/test_class.rb +0 -85
- data/test/test_complex.rb +0 -43
- data/test/test_convert.rb +0 -79
- data/test/test_copy.rb +0 -141
- data/test/test_creation.rb +0 -85
- data/test/test_element.rb +0 -146
- data/test/test_extream.rb +0 -55
- data/test/test_generate.rb +0 -75
- data/test/test_index.rb +0 -71
- data/test/test_mask.rb +0 -578
- data/test/test_math.rb +0 -98
- data/test/test_narray.rb +0 -64
- data/test/test_order.rb +0 -147
- data/test/test_random.rb +0 -15
- data/test/test_ref_store.rb +0 -211
- data/test/test_stat.rb +0 -414
- data/test/test_struct.rb +0 -72
- data/test/test_virtual.rb +0 -49
- data/utils/create_rdoc.sh +0 -9
- data/utils/make_tgz.sh +0 -3
- data/version.h +0 -18
@@ -3,39 +3,37 @@
|
|
3
3
|
carray_loop.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
|
|
13
11
|
#include "carray.h"
|
14
12
|
|
15
13
|
static VALUE
|
16
|
-
rb_ca_s_each_index_internal (int
|
14
|
+
rb_ca_s_each_index_internal (int ndim, VALUE *dim, uint8_t indim, VALUE ridx)
|
17
15
|
{
|
18
16
|
volatile VALUE ret = Qnil;
|
19
|
-
int32_t is_leaf = (
|
17
|
+
int32_t is_leaf = (indim == ndim - 1);
|
20
18
|
ca_size_t i;
|
21
19
|
|
22
|
-
if ( NIL_P(dim[
|
23
|
-
rb_ary_store(ridx,
|
20
|
+
if ( NIL_P(dim[indim]) ) {
|
21
|
+
rb_ary_store(ridx, indim, Qnil);
|
24
22
|
if ( is_leaf ) {
|
25
23
|
ret = rb_yield_splat(rb_obj_clone(ridx));
|
26
24
|
}
|
27
25
|
else {
|
28
|
-
ret = rb_ca_s_each_index_internal(
|
26
|
+
ret = rb_ca_s_each_index_internal(ndim, dim, indim+1, ridx);
|
29
27
|
}
|
30
28
|
}
|
31
29
|
else {
|
32
|
-
for (i=0; i<NUM2SIZE(dim[
|
33
|
-
rb_ary_store(ridx,
|
30
|
+
for (i=0; i<NUM2SIZE(dim[indim]); i++) {
|
31
|
+
rb_ary_store(ridx, indim, SIZE2NUM(i));
|
34
32
|
if ( is_leaf ) {
|
35
33
|
ret = rb_yield_splat(rb_obj_clone(ridx));
|
36
34
|
}
|
37
35
|
else {
|
38
|
-
ret = rb_ca_s_each_index_internal(
|
36
|
+
ret = rb_ca_s_each_index_internal(ndim, dim, indim+1, ridx);
|
39
37
|
}
|
40
38
|
}
|
41
39
|
}
|
@@ -43,38 +41,32 @@ rb_ca_s_each_index_internal (int rank, VALUE *dim, uint8_t irank, VALUE ridx)
|
|
43
41
|
return ret;
|
44
42
|
}
|
45
43
|
|
46
|
-
/*
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
# (0 0) (0 1) (1 0) (1 1) (2 0) (2 1) (3 0) (3 1)
|
55
|
-
#
|
56
|
-
def CArray.each_index(*argv) # :yields: i0, i1, ...
|
57
|
-
end
|
44
|
+
/* @overload each_index (*shape)
|
45
|
+
|
46
|
+
(Iterator) Iterates with the multi-dimensional indeces for the given
|
47
|
+
dimension numbers.
|
48
|
+
|
49
|
+
CArray.each_index(3,2){|i,j| print "(#{i} #{j}) " }
|
50
|
+
produces:
|
51
|
+
(0 0) (0 1) (1 0) (1 1) (2 0) (2 1) (3 0) (3 1)
|
58
52
|
*/
|
59
53
|
|
60
54
|
static VALUE
|
61
|
-
rb_ca_s_each_index (int
|
55
|
+
rb_ca_s_each_index (int ndim, VALUE *dim, VALUE self)
|
62
56
|
{
|
63
|
-
volatile VALUE ridx = rb_ary_new2(
|
57
|
+
volatile VALUE ridx = rb_ary_new2(ndim);
|
64
58
|
#if RUBY_VERSION_CODE >= 190
|
65
|
-
RETURN_ENUMERATOR(self,
|
59
|
+
RETURN_ENUMERATOR(self, ndim, dim);
|
66
60
|
#endif
|
67
|
-
return rb_ca_s_each_index_internal(
|
61
|
+
return rb_ca_s_each_index_internal(ndim, dim, 0, ridx);
|
68
62
|
}
|
69
63
|
|
70
64
|
/* ------------------------------------------------------------------- */
|
71
65
|
|
72
|
-
/*
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
end
|
77
|
-
end
|
66
|
+
/* @overload each () {|elem| ... }
|
67
|
+
|
68
|
+
(Iterator) Iterates all the elements of the object.
|
69
|
+
|
78
70
|
*/
|
79
71
|
|
80
72
|
static VALUE
|
@@ -92,12 +84,10 @@ rb_ca_each (VALUE self)
|
|
92
84
|
return ret;
|
93
85
|
}
|
94
86
|
|
95
|
-
/*
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
end
|
100
|
-
end
|
87
|
+
/* @overload each_with_addr () {|elem, addr| ... }
|
88
|
+
|
89
|
+
(Iterator) Iterates all the elements of the object.
|
90
|
+
|
101
91
|
*/
|
102
92
|
|
103
93
|
static VALUE
|
@@ -115,12 +105,9 @@ rb_ca_each_with_addr (VALUE self)
|
|
115
105
|
return ret;
|
116
106
|
}
|
117
107
|
|
118
|
-
/*
|
119
|
-
|
120
|
-
|
121
|
-
def each_addr() # :yields: addr
|
122
|
-
end
|
123
|
-
end
|
108
|
+
/* @overload each_addr () {|addr| ... }
|
109
|
+
|
110
|
+
(Iterator) Iterates all address of the object.
|
124
111
|
*/
|
125
112
|
|
126
113
|
static VALUE
|
@@ -145,7 +132,7 @@ rb_ca_each_index_internal (VALUE self, int8_t level, VALUE ridx)
|
|
145
132
|
CArray *ca;
|
146
133
|
ca_size_t i;
|
147
134
|
Data_Get_Struct(self, CArray, ca);
|
148
|
-
if ( level == ca->
|
135
|
+
if ( level == ca->ndim - 1 ) {
|
149
136
|
for (i=0; i<ca->dim[level]; i++) {
|
150
137
|
rb_ary_store(ridx, level, SIZE2NUM(i));
|
151
138
|
ret = rb_yield_splat(rb_obj_clone(ridx));
|
@@ -160,39 +147,33 @@ rb_ca_each_index_internal (VALUE self, int8_t level, VALUE ridx)
|
|
160
147
|
return ret;
|
161
148
|
}
|
162
149
|
|
163
|
-
/*
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
def each_index # :yields: i0, i1, ...
|
174
|
-
end
|
175
|
-
end
|
150
|
+
/* @overload each_index () {|idx| ... }
|
151
|
+
|
152
|
+
(Iterator) Iterates all index of the object.
|
153
|
+
|
154
|
+
CArray.int(3,2).each_index(){|i,j| print "(#{i} #{j}) " }
|
155
|
+
|
156
|
+
<em>produces:</em>
|
157
|
+
|
158
|
+
(0 0) (0 1) (1 0) (1 1) (2 0) (2 1) (3 0) (3 1)
|
159
|
+
|
176
160
|
*/
|
177
161
|
|
178
162
|
static VALUE
|
179
163
|
rb_ca_each_index (VALUE self)
|
180
164
|
{
|
181
165
|
volatile VALUE ridx;
|
182
|
-
int8_t
|
183
|
-
ridx = rb_ary_new2(
|
166
|
+
int8_t ndim = NUM2INT(rb_ca_ndim(self));
|
167
|
+
ridx = rb_ary_new2(ndim);
|
184
168
|
#if RUBY_VERSION_CODE >= 190
|
185
169
|
RETURN_ENUMERATOR(self, 0, 0);
|
186
170
|
#endif
|
187
171
|
return rb_ca_each_index_internal(self, 0, ridx);
|
188
172
|
}
|
189
173
|
|
190
|
-
/*
|
191
|
-
|
192
|
-
|
193
|
-
def map! # :yields: v
|
194
|
-
end
|
195
|
-
end
|
174
|
+
/* @overload map! () {|elem| ... }
|
175
|
+
|
176
|
+
(Iterator, Destructive) Iterates all elements of the object and stores the return from the block to the element.
|
196
177
|
*/
|
197
178
|
|
198
179
|
static VALUE
|
@@ -225,7 +206,7 @@ rb_ca_each_with_index_internal (VALUE self,
|
|
225
206
|
CArray *ca;
|
226
207
|
ca_size_t i;
|
227
208
|
Data_Get_Struct(self, CArray, ca);
|
228
|
-
if ( level == ca->
|
209
|
+
if ( level == ca->ndim - 1 ) {
|
229
210
|
for (i=0; i<ca->dim[level]; i++) {
|
230
211
|
idx[level] = i;
|
231
212
|
rb_ary_store(ridx, level, SIZE2NUM(i));
|
@@ -243,12 +224,10 @@ rb_ca_each_with_index_internal (VALUE self,
|
|
243
224
|
return ret;
|
244
225
|
}
|
245
226
|
|
246
|
-
/*
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
end
|
251
|
-
end
|
227
|
+
/* @overload each_with_index () {|elem, idx| ... }
|
228
|
+
|
229
|
+
[TBD]
|
230
|
+
|
252
231
|
*/
|
253
232
|
|
254
233
|
static VALUE
|
@@ -256,12 +235,12 @@ rb_ca_each_with_index (VALUE self)
|
|
256
235
|
{
|
257
236
|
volatile VALUE ridx, ret;
|
258
237
|
ca_size_t idx[CA_RANK_MAX];
|
259
|
-
int8_t
|
238
|
+
int8_t ndim = NUM2INT(rb_ca_ndim(self));
|
260
239
|
#if RUBY_VERSION_CODE >= 190
|
261
240
|
RETURN_ENUMERATOR(self, 0, 0);
|
262
241
|
#endif
|
263
242
|
rb_ca_modify(self);
|
264
|
-
ridx = rb_ary_new2(
|
243
|
+
ridx = rb_ary_new2(ndim);
|
265
244
|
ret = rb_ca_each_with_index_internal(self, 0, idx, ridx);
|
266
245
|
return ret;
|
267
246
|
}
|
@@ -274,7 +253,7 @@ rb_ca_map_with_index_bang_internal (VALUE self,
|
|
274
253
|
CArray *ca;
|
275
254
|
ca_size_t i;
|
276
255
|
Data_Get_Struct(self, CArray, ca);
|
277
|
-
if ( level == ca->
|
256
|
+
if ( level == ca->ndim - 1 ) {
|
278
257
|
volatile VALUE obj;
|
279
258
|
for (i=0; i<ca->dim[level]; i++) {
|
280
259
|
idx[level] = i;
|
@@ -293,12 +272,10 @@ rb_ca_map_with_index_bang_internal (VALUE self,
|
|
293
272
|
}
|
294
273
|
}
|
295
274
|
|
296
|
-
/*
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
end
|
301
|
-
end
|
275
|
+
/* @overload map_with_index () {|elem, idx| ... }
|
276
|
+
|
277
|
+
[TBD]
|
278
|
+
|
302
279
|
*/
|
303
280
|
|
304
281
|
static VALUE
|
@@ -307,14 +284,14 @@ rb_ca_map_with_index_bang (VALUE self)
|
|
307
284
|
volatile VALUE ridx;
|
308
285
|
CArray *ca;
|
309
286
|
ca_size_t idx[CA_RANK_MAX];
|
310
|
-
int8_t
|
287
|
+
int8_t ndim = NUM2INT(rb_ca_ndim(self));
|
311
288
|
#if RUBY_VERSION_CODE >= 190
|
312
289
|
RETURN_ENUMERATOR(self, 0, 0);
|
313
290
|
#endif
|
314
291
|
rb_ca_modify(self);
|
315
292
|
Data_Get_Struct(self, CArray, ca);
|
316
293
|
ca_attach(ca);
|
317
|
-
ridx = rb_ary_new2(
|
294
|
+
ridx = rb_ary_new2(ndim);
|
318
295
|
rb_ca_map_with_index_bang_internal(self, 0, idx, ridx);
|
319
296
|
ca_sync(ca);
|
320
297
|
ca_detach(ca);
|
@@ -329,7 +306,7 @@ rb_ca_map_index_bang_internal (VALUE self,
|
|
329
306
|
CArray *ca;
|
330
307
|
ca_size_t i;
|
331
308
|
Data_Get_Struct(self, CArray, ca);
|
332
|
-
if ( level == ca->
|
309
|
+
if ( level == ca->ndim - 1 ) {
|
333
310
|
volatile VALUE obj;
|
334
311
|
for (i=0; i<ca->dim[level]; i++) {
|
335
312
|
idx[level] = i;
|
@@ -347,12 +324,10 @@ rb_ca_map_index_bang_internal (VALUE self,
|
|
347
324
|
}
|
348
325
|
}
|
349
326
|
|
350
|
-
/*
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
end
|
355
|
-
end
|
327
|
+
/* @overload map_index! () {|idx| ... }
|
328
|
+
|
329
|
+
[TBD]
|
330
|
+
|
356
331
|
*/
|
357
332
|
|
358
333
|
static VALUE
|
@@ -361,26 +336,24 @@ rb_ca_map_index_bang (VALUE self)
|
|
361
336
|
volatile VALUE ridx;
|
362
337
|
CArray *ca;
|
363
338
|
ca_size_t idx[CA_RANK_MAX];
|
364
|
-
int8_t
|
339
|
+
int8_t ndim = NUM2INT(rb_ca_ndim(self));
|
365
340
|
#if RUBY_VERSION_CODE >= 190
|
366
341
|
RETURN_ENUMERATOR(self, 0, 0);
|
367
342
|
#endif
|
368
343
|
rb_ca_modify(self);
|
369
344
|
Data_Get_Struct(self, CArray, ca);
|
370
345
|
ca_attach(ca);
|
371
|
-
ridx = rb_ary_new2(
|
346
|
+
ridx = rb_ary_new2(ndim);
|
372
347
|
rb_ca_map_index_bang_internal(self, 0, idx, ridx);
|
373
348
|
ca_sync(ca);
|
374
349
|
ca_detach(ca);
|
375
350
|
return self;
|
376
351
|
}
|
377
352
|
|
378
|
-
/*
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
end
|
383
|
-
end
|
353
|
+
/* @overload map_with_addr! () {|elem, addr| ... }
|
354
|
+
|
355
|
+
[TBD]
|
356
|
+
|
384
357
|
*/
|
385
358
|
|
386
359
|
static VALUE
|
@@ -406,12 +379,10 @@ rb_ca_map_with_addr_bang (VALUE self)
|
|
406
379
|
}
|
407
380
|
|
408
381
|
|
409
|
-
/*
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
end
|
414
|
-
end
|
382
|
+
/* @overload map_addr! () {|addr| ... }
|
383
|
+
|
384
|
+
[TBD]
|
385
|
+
|
415
386
|
*/
|
416
387
|
|
417
388
|
static VALUE
|
@@ -3,10 +3,8 @@
|
|
3
3
|
carray_mask.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
|
|
@@ -565,12 +563,10 @@ ca_allocate_mask_iterator (int n, ...)
|
|
565
563
|
|
566
564
|
/* ------------------------------------------------------------------- */
|
567
565
|
|
568
|
-
/*
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
end
|
573
|
-
end
|
566
|
+
/* @overload has_mask?
|
567
|
+
|
568
|
+
(Masking, Inquiry)
|
569
|
+
Returns true if self has the mask array.
|
574
570
|
*/
|
575
571
|
|
576
572
|
VALUE
|
@@ -581,12 +577,10 @@ rb_ca_has_mask (VALUE self)
|
|
581
577
|
return ( ca_has_mask(ca) ) ? Qtrue : Qfalse;
|
582
578
|
}
|
583
579
|
|
584
|
-
/*
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
end
|
589
|
-
end
|
580
|
+
/* @overload any_masked?
|
581
|
+
|
582
|
+
(Masking, Inquiry)
|
583
|
+
Returns true if self has at least one masked element.
|
590
584
|
*/
|
591
585
|
|
592
586
|
VALUE
|
@@ -597,12 +591,10 @@ rb_ca_is_any_masked (VALUE self)
|
|
597
591
|
return ( ca_is_any_masked(ca) ) ? Qtrue : Qfalse;
|
598
592
|
}
|
599
593
|
|
600
|
-
/*
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
end
|
605
|
-
end
|
594
|
+
/* @overload all_masked?
|
595
|
+
|
596
|
+
(Masking, Inquiry)
|
597
|
+
Returns true if all elements of self are masked.
|
606
598
|
*/
|
607
599
|
|
608
600
|
VALUE
|
@@ -613,12 +605,10 @@ rb_ca_is_all_masked (VALUE self)
|
|
613
605
|
return ( ca_is_all_masked(ca) ) ? Qtrue : Qfalse;
|
614
606
|
}
|
615
607
|
|
616
|
-
/*
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
end
|
621
|
-
end
|
608
|
+
/* @overload create_mask
|
609
|
+
|
610
|
+
(Masking)
|
611
|
+
Creates mask array internally (private method)
|
622
612
|
*/
|
623
613
|
|
624
614
|
static VALUE
|
@@ -631,12 +621,10 @@ rb_ca_create_mask (VALUE self)
|
|
631
621
|
return Qnil;
|
632
622
|
}
|
633
623
|
|
634
|
-
/*
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
end
|
639
|
-
end
|
624
|
+
/* @overload update_mask
|
625
|
+
|
626
|
+
(Masking)
|
627
|
+
Update mask array internally (private method)
|
640
628
|
*/
|
641
629
|
|
642
630
|
/*
|
@@ -650,14 +638,12 @@ rb_ca_update_mask (VALUE self)
|
|
650
638
|
}
|
651
639
|
*/
|
652
640
|
|
653
|
-
/*
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
end
|
660
|
-
end
|
641
|
+
/* @overload value
|
642
|
+
|
643
|
+
(Masking, Inquiry)
|
644
|
+
Returns new array which refers the data of <code>self</code>.
|
645
|
+
The data of masked elements of <code>self</code> can be accessed
|
646
|
+
via the returned array. The value array can't be set mask.
|
661
647
|
*/
|
662
648
|
|
663
649
|
VALUE
|
@@ -668,7 +654,7 @@ rb_ca_value_array (VALUE self)
|
|
668
654
|
|
669
655
|
Data_Get_Struct(self, CArray, ca);
|
670
656
|
|
671
|
-
obj = rb_ca_refer_new(self, ca->data_type, ca->
|
657
|
+
obj = rb_ca_refer_new(self, ca->data_type, ca->ndim, ca->dim, ca->bytes, 0);
|
672
658
|
Data_Get_Struct(obj, CArray, co);
|
673
659
|
|
674
660
|
ca_set_flag(co, CA_FLAG_VALUE_ARRAY);
|
@@ -676,13 +662,11 @@ rb_ca_value_array (VALUE self)
|
|
676
662
|
return obj;
|
677
663
|
}
|
678
664
|
|
679
|
-
/*
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
end
|
685
|
-
end
|
665
|
+
/* @overload mask
|
666
|
+
|
667
|
+
(Masking, Inquiry)
|
668
|
+
Returns new array which refers the mask state of <code>self</code>.
|
669
|
+
The mask array can't be set mask.
|
686
670
|
*/
|
687
671
|
|
688
672
|
VALUE
|
@@ -707,14 +691,12 @@ rb_ca_mask_array (VALUE self)
|
|
707
691
|
}
|
708
692
|
}
|
709
693
|
|
710
|
-
/*
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
end
|
717
|
-
end
|
694
|
+
/* @overload mask= (new_mask)
|
695
|
+
|
696
|
+
(Mask, Modification)
|
697
|
+
Asigns <code>new_mask</code> to the mask array of <code>self</code>.
|
698
|
+
If <code>self</code> doesn't have a mask array, it will be created
|
699
|
+
before asignment.
|
718
700
|
*/
|
719
701
|
|
720
702
|
VALUE
|
@@ -756,14 +738,12 @@ rb_ca_set_mask (VALUE self, VALUE rval)
|
|
756
738
|
}
|
757
739
|
}
|
758
740
|
|
759
|
-
/*
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
end
|
766
|
-
end
|
741
|
+
/* @overload is_masked
|
742
|
+
|
743
|
+
(Masking, Element-Wise Inquiry)
|
744
|
+
Returns new boolean type array of same shape
|
745
|
+
with <code>self</code>. The returned array has 1 for the masked elements and
|
746
|
+
0 for not-masked elements.
|
767
747
|
*/
|
768
748
|
|
769
749
|
VALUE
|
@@ -777,7 +757,7 @@ rb_ca_is_masked (VALUE self)
|
|
777
757
|
|
778
758
|
Data_Get_Struct(self, CArray, ca);
|
779
759
|
|
780
|
-
co = carray_new(CA_BOOLEAN, ca->
|
760
|
+
co = carray_new(CA_BOOLEAN, ca->ndim, ca->dim, ca->bytes, NULL);
|
781
761
|
|
782
762
|
ca_update_mask(ca);
|
783
763
|
if ( ! ca->mask ) {
|
@@ -799,14 +779,12 @@ rb_ca_is_masked (VALUE self)
|
|
799
779
|
return ca_wrap_struct(co);
|
800
780
|
}
|
801
781
|
|
802
|
-
/*
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
end
|
809
|
-
end
|
782
|
+
/* @overload is_not_masked
|
783
|
+
|
784
|
+
(Masking, Element-Wise Inquiry)
|
785
|
+
Returns new boolean type array of same shape with <code>self</code>.
|
786
|
+
The returned array has 0 for the masked elements and
|
787
|
+
1 for not-masked elements.
|
810
788
|
*/
|
811
789
|
|
812
790
|
VALUE
|
@@ -820,7 +798,7 @@ rb_ca_is_not_masked (VALUE self)
|
|
820
798
|
|
821
799
|
Data_Get_Struct(self, CArray, ca);
|
822
800
|
|
823
|
-
co = carray_new(CA_BOOLEAN, ca->
|
801
|
+
co = carray_new(CA_BOOLEAN, ca->ndim, ca->dim, ca->bytes, NULL);
|
824
802
|
|
825
803
|
ca_update_mask(ca);
|
826
804
|
if ( ! ca->mask ) {
|
@@ -842,12 +820,10 @@ rb_ca_is_not_masked (VALUE self)
|
|
842
820
|
return ca_wrap_struct(co);
|
843
821
|
}
|
844
822
|
|
845
|
-
/*
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
end
|
850
|
-
end
|
823
|
+
/* @overload count_masked
|
824
|
+
|
825
|
+
(Masking, Statistics)
|
826
|
+
Returns the number of masked elements.
|
851
827
|
*/
|
852
828
|
|
853
829
|
VALUE
|
@@ -858,12 +834,10 @@ rb_ca_count_masked (VALUE self)
|
|
858
834
|
return SIZE2NUM(ca_count_masked(ca));
|
859
835
|
}
|
860
836
|
|
861
|
-
/*
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
end
|
866
|
-
end
|
837
|
+
/* @overload count_not_masked
|
838
|
+
|
839
|
+
(Masking, Statistics)
|
840
|
+
Returns the number of not-masked elements.
|
867
841
|
*/
|
868
842
|
|
869
843
|
VALUE
|
@@ -874,6 +848,15 @@ rb_ca_count_not_masked (VALUE self)
|
|
874
848
|
return SIZE2NUM(ca_count_not_masked(ca));
|
875
849
|
}
|
876
850
|
|
851
|
+
/* @overload unmask (fill_value = nil)
|
852
|
+
|
853
|
+
(Masking, Destructive)
|
854
|
+
Unmask all elements of the object.
|
855
|
+
If the optional argument <code>fill_value</code> is given,
|
856
|
+
the masked elements are filled by <code>fill_value</code>.
|
857
|
+
The returned array doesn't have the mask array.
|
858
|
+
*/
|
859
|
+
|
877
860
|
static VALUE
|
878
861
|
rb_ca_unmask_method (int argc, VALUE *argv, VALUE self)
|
879
862
|
{
|
@@ -917,15 +900,13 @@ rb_ca_mask_fill (VALUE self, VALUE fval)
|
|
917
900
|
return rb_ca_unmask_method(1, &fval, self);
|
918
901
|
}
|
919
902
|
|
920
|
-
/*
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
end
|
928
|
-
end
|
903
|
+
/* @overload unmask_copy (fill_value = nil)
|
904
|
+
|
905
|
+
(Masking, Conversion)
|
906
|
+
Returns new unmasked array.
|
907
|
+
If the optional argument <code>fill_value</code> is given,
|
908
|
+
the masked elements are filled by <code>fill_value</code>.
|
909
|
+
The returned array doesn't have the mask array.
|
929
910
|
*/
|
930
911
|
|
931
912
|
static VALUE
|
@@ -970,7 +951,11 @@ rb_ca_mask_fill_copy (VALUE self, VALUE fval)
|
|
970
951
|
return rb_ca_unmask_copy_method(1, &fval, self);
|
971
952
|
}
|
972
953
|
|
973
|
-
/*
|
954
|
+
/* @overload invert_mask
|
955
|
+
|
956
|
+
(Masking, Destructive)
|
957
|
+
Inverts mask state.
|
958
|
+
*/
|
974
959
|
|
975
960
|
VALUE
|
976
961
|
rb_ca_invert_mask (VALUE self)
|
@@ -981,13 +966,11 @@ rb_ca_invert_mask (VALUE self)
|
|
981
966
|
return self;
|
982
967
|
}
|
983
968
|
|
984
|
-
/*
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
end
|
990
|
-
end
|
969
|
+
/* @overload inherit_mask (*others):
|
970
|
+
|
971
|
+
(Masking, Destructive)
|
972
|
+
Sets the mask array of <code>self</code> by the logical sum of
|
973
|
+
the mask states of <code>self</code> and arrays given in arguments.
|
991
974
|
*/
|
992
975
|
|
993
976
|
static VALUE
|
@@ -1062,13 +1045,11 @@ rb_ca_inherit_mask (VALUE self, int n, ...)
|
|
1062
1045
|
return self;
|
1063
1046
|
}
|
1064
1047
|
|
1065
|
-
/*
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
end
|
1071
|
-
end
|
1048
|
+
/* @overload inherit_mask_replace (*others)
|
1049
|
+
Sets the mask array of <code>self</code> by the logical sum of
|
1050
|
+
the mask states of arrays given in arguments.
|
1051
|
+
This method does not inherit the mask states of itself (different point
|
1052
|
+
from `CArray#inherit_mask`)
|
1072
1053
|
*/
|
1073
1054
|
|
1074
1055
|
static VALUE
|
@@ -1168,9 +1149,9 @@ Init_carray_mask ()
|
|
1168
1149
|
rb_define_method(rb_cCArray, "inherit_mask_replace",
|
1169
1150
|
rb_ca_inherit_mask_replace_method, -1);
|
1170
1151
|
|
1171
|
-
/* These methods go to lib/carray/
|
1172
|
-
/*
|
1173
|
-
/*
|
1152
|
+
/* These methods go to lib/carray/mask.rb. */
|
1153
|
+
/* def count_masked (*axis); end */
|
1154
|
+
/* def count_not_masked (*axis); end */
|
1174
1155
|
|
1175
1156
|
}
|
1176
1157
|
|