-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GH-35558: [MATLAB] Add signed integer array MATLAB classes (i.e. `Int…
…8Array`, `Int16Array`, `Int32Array`, `Int64Array`) (#35561) ### Rationale for this change Followup to #35495 in which we added the MATLAB class `Float32Array`. This pull request adds support for round tripping signed integer between `arrow.array.<Array>` classes and associated MATLAB types (e.g. `int8`, `int16`, `int32`, `int64`). | Arrow Array Type | MATLAB Type | | ------------------------- | -------------------- | | `Int8Array` | `int8` | | `Int16Array` | `int16` | | `Int32Array` | `int32` | | `Int64Array` | `int64` | Example of round-tripping `int8` data: ```matlab >> int8MatlabArray = int8([1, 2, 3]') int8MatlabArray = 3x1 int8 column vector 1 2 3 >> int8ArrowArray = arrow.array.Int8Array(int8MatlabArray) int8ArrowArray = [ 1, 2, 3 ] >> int8MatlabArrayRoundTripped = toMATLAB(int8ArrowArray) int8MatlabArrayRoundTripped = 3x1 int8 column vector 1 2 3 >> all(int8MatlabArray == int8MatlabArrayRoundTripped) ans = logical 1 ``` ### What changes are included in this PR? Added four new signed integer type `arrow.array.<Array>` concrete subclasses. 1. `arrow.array.Int8Array` 3. `arrow.array.Int16Array` 4. `arrow.array.Int32Array` 5. `arrow.array.Int64Array` ### Are these changes tested? Yes, we added the following four test classes: 1. `tInt8Array.m` 2. `tInt16Array.m` 3. `tInt32Array.m` 4. `tInt64Array.m` ### Are there any user-facing changes? Yes. This change introduces 4 new publicly documented classes: 1. `arrow.array.Int8Array` 3. `arrow.array.Int16Array` 4. `arrow.array.Int32Array` 5. `arrow.array.Int64Array` ### Future Directions 1. Add support for null values (i.e. validity bitmap) for the signed integer array types. ### Notes !. Thank you to @ sgilmore10 for her help with this pull request! * Closes: #35558 Lead-authored-by: Kevin Gurney <[email protected]> Co-authored-by: Sarah Gilmore <[email protected]> Signed-off-by: Sutou Kouhei <[email protected]>
- Loading branch information
1 parent
0dca449
commit fbe5f64
Showing
9 changed files
with
283 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
classdef Int16Array < arrow.array.Array | ||
% arrow.array.Int16Array | ||
|
||
% Licensed to the Apache Software Foundation (ASF) under one or more | ||
% contributor license agreements. See the NOTICE file distributed with | ||
% this work for additional information regarding copyright ownership. | ||
% The ASF licenses this file to you under the Apache License, Version | ||
% 2.0 (the "License"); you may not use this file except in compliance | ||
% with the License. You may obtain a copy of the License at | ||
% | ||
% http://www.apache.org/licenses/LICENSE-2.0 | ||
% | ||
% Unless required by applicable law or agreed to in writing, software | ||
% distributed under the License is distributed on an "AS IS" BASIS, | ||
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
% implied. See the License for the specific language governing | ||
% permissions and limitations under the License. | ||
|
||
properties (Hidden, SetAccess=private) | ||
MatlabArray = int16([]) | ||
end | ||
|
||
methods | ||
function obj = Int16Array(data, opts) | ||
arguments | ||
data | ||
opts.DeepCopy = false | ||
end | ||
validateattributes(data, "int16", ["2d", "nonsparse", "real"]); | ||
if ~isempty(data), validateattributes(data, "int16", "vector"); end | ||
[email protected]("Name", "arrow.array.proxy.Int16Array", "ConstructorArguments", {data, opts.DeepCopy}); | ||
% Store a reference to the array if not doing a deep copy | ||
if (~opts.DeepCopy), obj.MatlabArray = data; end | ||
end | ||
|
||
function data = int16(obj) | ||
data = obj.Proxy.toMATLAB(); | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
classdef Int32Array < arrow.array.Array | ||
% arrow.array.Int32Array | ||
|
||
% Licensed to the Apache Software Foundation (ASF) under one or more | ||
% contributor license agreements. See the NOTICE file distributed with | ||
% this work for additional information regarding copyright ownership. | ||
% The ASF licenses this file to you under the Apache License, Version | ||
% 2.0 (the "License"); you may not use this file except in compliance | ||
% with the License. You may obtain a copy of the License at | ||
% | ||
% http://www.apache.org/licenses/LICENSE-2.0 | ||
% | ||
% Unless required by applicable law or agreed to in writing, software | ||
% distributed under the License is distributed on an "AS IS" BASIS, | ||
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
% implied. See the License for the specific language governing | ||
% permissions and limitations under the License. | ||
|
||
properties (Hidden, SetAccess=private) | ||
MatlabArray = int32([]) | ||
end | ||
|
||
methods | ||
function obj = Int32Array(data, opts) | ||
arguments | ||
data | ||
opts.DeepCopy = false | ||
end | ||
validateattributes(data, "int32", ["2d", "nonsparse", "real"]); | ||
if ~isempty(data), validateattributes(data, "int32", "vector"); end | ||
[email protected]("Name", "arrow.array.proxy.Int32Array", "ConstructorArguments", {data, opts.DeepCopy}); | ||
% Store a reference to the array if not doing a deep copy | ||
if (~opts.DeepCopy), obj.MatlabArray = data; end | ||
end | ||
|
||
function data = int32(obj) | ||
data = obj.Proxy.toMATLAB(); | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
classdef Int64Array < arrow.array.Array | ||
% arrow.array.Int64Array | ||
|
||
% Licensed to the Apache Software Foundation (ASF) under one or more | ||
% contributor license agreements. See the NOTICE file distributed with | ||
% this work for additional information regarding copyright ownership. | ||
% The ASF licenses this file to you under the Apache License, Version | ||
% 2.0 (the "License"); you may not use this file except in compliance | ||
% with the License. You may obtain a copy of the License at | ||
% | ||
% http://www.apache.org/licenses/LICENSE-2.0 | ||
% | ||
% Unless required by applicable law or agreed to in writing, software | ||
% distributed under the License is distributed on an "AS IS" BASIS, | ||
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
% implied. See the License for the specific language governing | ||
% permissions and limitations under the License. | ||
|
||
properties (Hidden, SetAccess=private) | ||
MatlabArray = int64([]) | ||
end | ||
|
||
methods | ||
function obj = Int64Array(data, opts) | ||
arguments | ||
data | ||
opts.DeepCopy = false | ||
end | ||
validateattributes(data, "int64", ["2d", "nonsparse", "real"]); | ||
if ~isempty(data), validateattributes(data, "int64", "vector"); end | ||
[email protected]("Name", "arrow.array.proxy.Int64Array", "ConstructorArguments", {data, opts.DeepCopy}); | ||
% Store a reference to the array if not doing a deep copy | ||
if (~opts.DeepCopy), obj.MatlabArray = data; end | ||
end | ||
|
||
function data = int64(obj) | ||
data = obj.Proxy.toMATLAB(); | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
classdef Int8Array < arrow.array.Array | ||
% arrow.array.Int8Array | ||
|
||
% Licensed to the Apache Software Foundation (ASF) under one or more | ||
% contributor license agreements. See the NOTICE file distributed with | ||
% this work for additional information regarding copyright ownership. | ||
% The ASF licenses this file to you under the Apache License, Version | ||
% 2.0 (the "License"); you may not use this file except in compliance | ||
% with the License. You may obtain a copy of the License at | ||
% | ||
% http://www.apache.org/licenses/LICENSE-2.0 | ||
% | ||
% Unless required by applicable law or agreed to in writing, software | ||
% distributed under the License is distributed on an "AS IS" BASIS, | ||
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
% implied. See the License for the specific language governing | ||
% permissions and limitations under the License. | ||
|
||
properties (Hidden, SetAccess=private) | ||
MatlabArray = int8([]) | ||
end | ||
|
||
methods | ||
function obj = Int8Array(data, opts) | ||
arguments | ||
data | ||
opts.DeepCopy = false | ||
end | ||
validateattributes(data, "int8", ["2d", "nonsparse", "real"]); | ||
if ~isempty(data), validateattributes(data, "int8", "vector"); end | ||
[email protected]("Name", "arrow.array.proxy.Int8Array", "ConstructorArguments", {data, opts.DeepCopy}); | ||
% Store a reference to the array if not doing a deep copy | ||
if (~opts.DeepCopy), obj.MatlabArray = data; end | ||
end | ||
|
||
function data = int8(obj) | ||
data = obj.Proxy.toMATLAB(); | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
classdef tInt16Array < hNumericArray | ||
% Tests for arrow.array.Int16Array | ||
|
||
% Licensed to the Apache Software Foundation (ASF) under one or more | ||
% contributor license agreements. See the NOTICE file distributed with | ||
% this work for additional information regarding copyright ownership. | ||
% The ASF licenses this file to you under the Apache License, Version | ||
% 2.0 (the "License"); you may not use this file except in compliance | ||
% with the License. You may obtain a copy of the License at | ||
% | ||
% http://www.apache.org/licenses/LICENSE-2.0 | ||
% | ||
% Unless required by applicable law or agreed to in writing, software | ||
% distributed under the License is distributed on an "AS IS" BASIS, | ||
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
% implied. See the License for the specific language governing | ||
% permissions and limitations under the License. | ||
|
||
properties | ||
ArrowArrayClassName = "arrow.array.Int16Array" | ||
ArrowArrayConstructor = @arrow.array.Int16Array | ||
MatlabConversionFcn = @int16 % int16 method on class | ||
MatlabArrayFcn = @int16 % int16 function | ||
MaxValue = intmax("int16") | ||
MinValue = intmin("int16") | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
classdef tInt32Array < hNumericArray | ||
% Tests for arrow.array.Int32Array | ||
|
||
% Licensed to the Apache Software Foundation (ASF) under one or more | ||
% contributor license agreements. See the NOTICE file distributed with | ||
% this work for additional information regarding copyright ownership. | ||
% The ASF licenses this file to you under the Apache License, Version | ||
% 2.0 (the "License"); you may not use this file except in compliance | ||
% with the License. You may obtain a copy of the License at | ||
% | ||
% http://www.apache.org/licenses/LICENSE-2.0 | ||
% | ||
% Unless required by applicable law or agreed to in writing, software | ||
% distributed under the License is distributed on an "AS IS" BASIS, | ||
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
% implied. See the License for the specific language governing | ||
% permissions and limitations under the License. | ||
|
||
properties | ||
ArrowArrayClassName = "arrow.array.Int32Array" | ||
ArrowArrayConstructor = @arrow.array.Int32Array | ||
MatlabConversionFcn = @int32 % int32 method on class | ||
MatlabArrayFcn = @int32 % int32 function | ||
MaxValue = intmax("int32") | ||
MinValue = intmin("int32") | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
classdef tInt64Array < hNumericArray | ||
% Tests for arrow.array.Int64Array | ||
|
||
% Licensed to the Apache Software Foundation (ASF) under one or more | ||
% contributor license agreements. See the NOTICE file distributed with | ||
% this work for additional information regarding copyright ownership. | ||
% The ASF licenses this file to you under the Apache License, Version | ||
% 2.0 (the "License"); you may not use this file except in compliance | ||
% with the License. You may obtain a copy of the License at | ||
% | ||
% http://www.apache.org/licenses/LICENSE-2.0 | ||
% | ||
% Unless required by applicable law or agreed to in writing, software | ||
% distributed under the License is distributed on an "AS IS" BASIS, | ||
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
% implied. See the License for the specific language governing | ||
% permissions and limitations under the License. | ||
|
||
properties | ||
ArrowArrayClassName = "arrow.array.Int64Array" | ||
ArrowArrayConstructor = @arrow.array.Int64Array | ||
MatlabConversionFcn = @int64 % int64 method on class | ||
MatlabArrayFcn = @int64 % int64 function | ||
MaxValue = intmax("int64") | ||
MinValue = intmin("int64") | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
classdef tInt8Array < hNumericArray | ||
% Tests for arrow.array.Int8Array | ||
|
||
% Licensed to the Apache Software Foundation (ASF) under one or more | ||
% contributor license agreements. See the NOTICE file distributed with | ||
% this work for additional information regarding copyright ownership. | ||
% The ASF licenses this file to you under the Apache License, Version | ||
% 2.0 (the "License"); you may not use this file except in compliance | ||
% with the License. You may obtain a copy of the License at | ||
% | ||
% http://www.apache.org/licenses/LICENSE-2.0 | ||
% | ||
% Unless required by applicable law or agreed to in writing, software | ||
% distributed under the License is distributed on an "AS IS" BASIS, | ||
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
% implied. See the License for the specific language governing | ||
% permissions and limitations under the License. | ||
|
||
properties | ||
ArrowArrayClassName = "arrow.array.Int8Array" | ||
ArrowArrayConstructor = @arrow.array.Int8Array | ||
MatlabConversionFcn = @int8 % int8 method on class | ||
MatlabArrayFcn = @int8 % int8 function | ||
MaxValue = intmax("int8") | ||
MinValue = intmin("int8") | ||
end | ||
|
||
end |