From a7a76ef0cb49dca94dd305567104c6ccd4e03394 Mon Sep 17 00:00:00 2001 From: Kevin Gurney Date: Thu, 11 May 2023 10:40:53 -0400 Subject: [PATCH 1/4] Add public toMATLAB method on arrow.array.Array superclass. Rename Proxy ToMatlab to toMATLAB. Co-authored-by: Sarah Gilmore --- matlab/src/cpp/arrow/matlab/array/proxy/array.cc | 2 +- matlab/src/cpp/arrow/matlab/array/proxy/array.h | 2 +- matlab/src/cpp/arrow/matlab/array/proxy/numeric_array.h | 2 +- matlab/src/matlab/+arrow/+array/Array.m | 4 ++++ matlab/src/matlab/+arrow/+array/Float32Array.m | 2 +- matlab/src/matlab/+arrow/+array/Float64Array.m | 2 +- 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/matlab/src/cpp/arrow/matlab/array/proxy/array.cc b/matlab/src/cpp/arrow/matlab/array/proxy/array.cc index 038eeb701c1..643cbc5ec4e 100644 --- a/matlab/src/cpp/arrow/matlab/array/proxy/array.cc +++ b/matlab/src/cpp/arrow/matlab/array/proxy/array.cc @@ -23,7 +23,7 @@ namespace arrow::matlab::array::proxy { // Register Proxy methods. REGISTER_METHOD(Array, ToString); - REGISTER_METHOD(Array, ToMatlab); + REGISTER_METHOD(Array, toMATLAB); REGISTER_METHOD(Array, Length); } diff --git a/matlab/src/cpp/arrow/matlab/array/proxy/array.h b/matlab/src/cpp/arrow/matlab/array/proxy/array.h index 0ca75bcce47..451a33caf97 100644 --- a/matlab/src/cpp/arrow/matlab/array/proxy/array.h +++ b/matlab/src/cpp/arrow/matlab/array/proxy/array.h @@ -35,7 +35,7 @@ class Array : public libmexclass::proxy::Proxy { void Length(libmexclass::proxy::method::Context& context); - virtual void ToMatlab(libmexclass::proxy::method::Context& context) = 0; + virtual void toMATLAB(libmexclass::proxy::method::Context& context) = 0; std::shared_ptr array; }; diff --git a/matlab/src/cpp/arrow/matlab/array/proxy/numeric_array.h b/matlab/src/cpp/arrow/matlab/array/proxy/numeric_array.h index f7f19a60b07..2f2a9925c0c 100644 --- a/matlab/src/cpp/arrow/matlab/array/proxy/numeric_array.h +++ b/matlab/src/cpp/arrow/matlab/array/proxy/numeric_array.h @@ -78,7 +78,7 @@ class NumericArray : public arrow::matlab::array::proxy::Array { } protected: - void ToMatlab(libmexclass::proxy::method::Context& context) override { + void toMATLAB(libmexclass::proxy::method::Context& context) override { using ArrowArrayType = typename arrow::CTypeTraits::ArrayType; const auto num_elements = static_cast(array->length()); diff --git a/matlab/src/matlab/+arrow/+array/Array.m b/matlab/src/matlab/+arrow/+array/Array.m index 259dba0cea0..39f328e504e 100644 --- a/matlab/src/matlab/+arrow/+array/Array.m +++ b/matlab/src/matlab/+arrow/+array/Array.m @@ -34,6 +34,10 @@ function numElements = get.Length(obj) numElements = obj.Proxy.Length(); end + + function matlabArray = toMATLAB(obj) + matlabArray = obj.Proxy.toMATLAB(); + end end methods (Access = private) diff --git a/matlab/src/matlab/+arrow/+array/Float32Array.m b/matlab/src/matlab/+arrow/+array/Float32Array.m index 5f5af94a705..3b4635a8151 100644 --- a/matlab/src/matlab/+arrow/+array/Float32Array.m +++ b/matlab/src/matlab/+arrow/+array/Float32Array.m @@ -34,7 +34,7 @@ end function data = single(obj) - data = obj.Proxy.ToMatlab(); + data = obj.Proxy.toMATLAB(); end end end diff --git a/matlab/src/matlab/+arrow/+array/Float64Array.m b/matlab/src/matlab/+arrow/+array/Float64Array.m index ec77ef72216..0b74f5a4555 100644 --- a/matlab/src/matlab/+arrow/+array/Float64Array.m +++ b/matlab/src/matlab/+arrow/+array/Float64Array.m @@ -35,7 +35,7 @@ end function data = double(obj) - data = obj.Proxy.ToMatlab(); + data = obj.Proxy.toMATLAB(); end end end From 20d0f65a16867d050cca81087985055fe86ca44a Mon Sep 17 00:00:00 2001 From: Sarah Gilmore Date: Mon, 15 May 2023 11:52:40 -0400 Subject: [PATCH 2/4] Add toMATLAB tests for Float32Array and Float64Array. Co-authored-by: Kevin Gurney --- matlab/test/arrow/array/tFloat32Array.m | 6 ++++++ matlab/test/arrow/array/tFloat64Array.m | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/matlab/test/arrow/array/tFloat32Array.m b/matlab/test/arrow/array/tFloat32Array.m index a512dec87d1..4a8448865a0 100644 --- a/matlab/test/arrow/array/tFloat32Array.m +++ b/matlab/test/arrow/array/tFloat32Array.m @@ -95,5 +95,11 @@ function ErrorIfComplex(testCase, MakeDeepCopy) fcn = @() arrow.array.Float32Array(single([10 + 1i, 4]), DeepCopy=MakeDeepCopy); testCase.verifyError(fcn, "MATLAB:expectedReal"); end + + function ToMATLAB(testCase, MakeDeepCopy) + A1 = arrow.array.Float32Array(single(100), DeepCopy=MakeDeepCopy); + data = toMATLAB(A1); + testCase.verifyEqual(data, single(100)); + end end end diff --git a/matlab/test/arrow/array/tFloat64Array.m b/matlab/test/arrow/array/tFloat64Array.m index f85feb78e75..96a02d0174e 100755 --- a/matlab/test/arrow/array/tFloat64Array.m +++ b/matlab/test/arrow/array/tFloat64Array.m @@ -116,6 +116,12 @@ function Length(testCase, MakeDeepCopy) A = arrow.array.Float64Array(1:100, DeepCopy=MakeDeepCopy); expectedLength = int64(100); testCase.verifyEqual(A.Length, expectedLength); + end + + function toMATLAB(testCase, MakeDeepCopy) + A1 = arrow.array.Float64Array(100, DeepCopy=MakeDeepCopy); + data = toMATLAB(A1); + testCase.verifyEqual(data, 100); end end end From cf28441cc1a81b23afd960368e937dd5c3afcae1 Mon Sep 17 00:00:00 2001 From: sgilmore10 <74676073+sgilmore10@users.noreply.github.com> Date: Tue, 16 May 2023 11:11:41 -0400 Subject: [PATCH 3/4] Change test case `ToMATLAB` to `toMATLAB` Co-authored-by: Sutou Kouhei --- matlab/test/arrow/array/tFloat32Array.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matlab/test/arrow/array/tFloat32Array.m b/matlab/test/arrow/array/tFloat32Array.m index 4a8448865a0..9768ee8f537 100644 --- a/matlab/test/arrow/array/tFloat32Array.m +++ b/matlab/test/arrow/array/tFloat32Array.m @@ -96,7 +96,7 @@ function ErrorIfComplex(testCase, MakeDeepCopy) testCase.verifyError(fcn, "MATLAB:expectedReal"); end - function ToMATLAB(testCase, MakeDeepCopy) + function toMATLAB(testCase, MakeDeepCopy) A1 = arrow.array.Float32Array(single(100), DeepCopy=MakeDeepCopy); data = toMATLAB(A1); testCase.verifyEqual(data, single(100)); From d895352079a87d159c2e57ac412a027f44c415f9 Mon Sep 17 00:00:00 2001 From: Sarah Gilmore Date: Tue, 16 May 2023 11:48:46 -0400 Subject: [PATCH 4/4] 1. Rename ToString() c++ method to toString() 2. Rename Length() c++ method to length() --- matlab/src/cpp/arrow/matlab/array/proxy/array.cc | 8 ++++---- matlab/src/cpp/arrow/matlab/array/proxy/array.h | 4 ++-- matlab/src/matlab/+arrow/+array/Array.m | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/matlab/src/cpp/arrow/matlab/array/proxy/array.cc b/matlab/src/cpp/arrow/matlab/array/proxy/array.cc index 643cbc5ec4e..f003a115250 100644 --- a/matlab/src/cpp/arrow/matlab/array/proxy/array.cc +++ b/matlab/src/cpp/arrow/matlab/array/proxy/array.cc @@ -22,12 +22,12 @@ namespace arrow::matlab::array::proxy { Array::Array(const libmexclass::proxy::FunctionArguments& constructor_arguments) { // Register Proxy methods. - REGISTER_METHOD(Array, ToString); + REGISTER_METHOD(Array, toString); REGISTER_METHOD(Array, toMATLAB); - REGISTER_METHOD(Array, Length); + REGISTER_METHOD(Array, length); } - void Array::ToString(libmexclass::proxy::method::Context& context) { + void Array::toString(libmexclass::proxy::method::Context& context) { ::matlab::data::ArrayFactory factory; // TODO: handle non-ascii characters @@ -35,7 +35,7 @@ namespace arrow::matlab::array::proxy { context.outputs[0] = str_mda; } - void Array::Length(libmexclass::proxy::method::Context& context) { + void Array::length(libmexclass::proxy::method::Context& context) { ::matlab::data::ArrayFactory factory; auto length_mda = factory.createScalar(array->length()); context.outputs[0] = length_mda; diff --git a/matlab/src/cpp/arrow/matlab/array/proxy/array.h b/matlab/src/cpp/arrow/matlab/array/proxy/array.h index 451a33caf97..a0ef0a94f38 100644 --- a/matlab/src/cpp/arrow/matlab/array/proxy/array.h +++ b/matlab/src/cpp/arrow/matlab/array/proxy/array.h @@ -31,9 +31,9 @@ class Array : public libmexclass::proxy::Proxy { protected: - void ToString(libmexclass::proxy::method::Context& context); + void toString(libmexclass::proxy::method::Context& context); - void Length(libmexclass::proxy::method::Context& context); + void length(libmexclass::proxy::method::Context& context); virtual void toMATLAB(libmexclass::proxy::method::Context& context) = 0; diff --git a/matlab/src/matlab/+arrow/+array/Array.m b/matlab/src/matlab/+arrow/+array/Array.m index 39f328e504e..a1778b17c2a 100644 --- a/matlab/src/matlab/+arrow/+array/Array.m +++ b/matlab/src/matlab/+arrow/+array/Array.m @@ -32,7 +32,7 @@ end function numElements = get.Length(obj) - numElements = obj.Proxy.Length(); + numElements = obj.Proxy.length(); end function matlabArray = toMATLAB(obj) @@ -41,14 +41,14 @@ end methods (Access = private) - function str = ToString(obj) - str = obj.Proxy.ToString(); + function str = toString(obj) + str = obj.Proxy.toString(); end end methods (Access=protected) function displayScalarObject(obj) - disp(obj.ToString()); + disp(obj.toString()); end end end