-
Notifications
You must be signed in to change notification settings - Fork 3.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[MATLAB] Create a templated C++ Proxy Class for Numeric Arrays #35411
Comments
take |
kou
added a commit
that referenced
this issue
May 9, 2023
…ays (#35479) ### Rationale for this change This pull request is a followup to #34563. To facilitate the implementation of future array types, we would like to first create a C++ template class for numeric arrays. We also want to start adding basic tests for the array functionality in the MATLAB interface. ### What changes are included in this PR? 1. Added a C++ template Class called `NumericArray` templated on `CType`. 2. Re-implemented the `Float64Array` C++ proxy class in terms of the new template class, i.e. `NumericArray<double>`. 3. Added a method called `double()` on the MATLAB Float64Array class to convert the arrow.[Type]Array to a MATLAB `double` array. 4. Added basic tests for round-tripping float64 arrays. 5. Created a base C++ proxy `Array` class that all proxy array classes will inherit from. 6. Renamed `Print()` to `ToString()` and made it return a string instead of printing to the screen. ### Are these changes tested? Yes, we added automated test cases to the test class `tFloat64Array.m`. In addition, we manually qualified these changes on macOS. ### Are there any user-facing changes? Yes, the `Print()` method is no longer public and there is now a method called `double()` on `arrow.array.Float64Array`. Included below is a simple example of using the `double()` method: ```matlab >> arrowArray = arrow.array.Float64Array([1, 2, 3]) arrowArray = [ 1, 2, 3 ] >> matlabArray = double(arrowArray) matlabArray = 1 2 3 >> class(arrowArray) ans = 'arrow.array.Float64Array' >> class(matlabArray) ans = 'double' ``` ### Future Directions 1. Support the rest of the numeric types. 2. Add an abstract MATLAB base class called `arrow.array.Array`. 3. Continue building out the methods (e.g. `length()`) 4. Support `null` values (validity bitmap). 5. Handle converting non-ascii characters from `UTF-8` to `UTF-16`. 6. Handle errors in the C++ layer. * Closes: #35411 Lead-authored-by: Sarah Gilmore <sgilmore@mathworks.com> Co-authored-by: sgilmore10 <74676073+sgilmore10@users.noreply.github.com> Co-authored-by: Kevin Gurney <kgurney@mathworks.com> Co-authored-by: Sutou Kouhei <kou@cozmixng.org> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
liujiacheng777
pushed a commit
to LoongArch-Python/arrow
that referenced
this issue
May 11, 2023
…ic Arrays (apache#35479) ### Rationale for this change This pull request is a followup to apache#34563. To facilitate the implementation of future array types, we would like to first create a C++ template class for numeric arrays. We also want to start adding basic tests for the array functionality in the MATLAB interface. ### What changes are included in this PR? 1. Added a C++ template Class called `NumericArray` templated on `CType`. 2. Re-implemented the `Float64Array` C++ proxy class in terms of the new template class, i.e. `NumericArray<double>`. 3. Added a method called `double()` on the MATLAB Float64Array class to convert the arrow.[Type]Array to a MATLAB `double` array. 4. Added basic tests for round-tripping float64 arrays. 5. Created a base C++ proxy `Array` class that all proxy array classes will inherit from. 6. Renamed `Print()` to `ToString()` and made it return a string instead of printing to the screen. ### Are these changes tested? Yes, we added automated test cases to the test class `tFloat64Array.m`. In addition, we manually qualified these changes on macOS. ### Are there any user-facing changes? Yes, the `Print()` method is no longer public and there is now a method called `double()` on `arrow.array.Float64Array`. Included below is a simple example of using the `double()` method: ```matlab >> arrowArray = arrow.array.Float64Array([1, 2, 3]) arrowArray = [ 1, 2, 3 ] >> matlabArray = double(arrowArray) matlabArray = 1 2 3 >> class(arrowArray) ans = 'arrow.array.Float64Array' >> class(matlabArray) ans = 'double' ``` ### Future Directions 1. Support the rest of the numeric types. 2. Add an abstract MATLAB base class called `arrow.array.Array`. 3. Continue building out the methods (e.g. `length()`) 4. Support `null` values (validity bitmap). 5. Handle converting non-ascii characters from `UTF-8` to `UTF-16`. 6. Handle errors in the C++ layer. * Closes: apache#35411 Lead-authored-by: Sarah Gilmore <sgilmore@mathworks.com> Co-authored-by: sgilmore10 <74676073+sgilmore10@users.noreply.github.com> Co-authored-by: Kevin Gurney <kgurney@mathworks.com> Co-authored-by: Sutou Kouhei <kou@cozmixng.org> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
ArgusLi
pushed a commit
to Bit-Quill/arrow
that referenced
this issue
May 15, 2023
…ic Arrays (apache#35479) ### Rationale for this change This pull request is a followup to apache#34563. To facilitate the implementation of future array types, we would like to first create a C++ template class for numeric arrays. We also want to start adding basic tests for the array functionality in the MATLAB interface. ### What changes are included in this PR? 1. Added a C++ template Class called `NumericArray` templated on `CType`. 2. Re-implemented the `Float64Array` C++ proxy class in terms of the new template class, i.e. `NumericArray<double>`. 3. Added a method called `double()` on the MATLAB Float64Array class to convert the arrow.[Type]Array to a MATLAB `double` array. 4. Added basic tests for round-tripping float64 arrays. 5. Created a base C++ proxy `Array` class that all proxy array classes will inherit from. 6. Renamed `Print()` to `ToString()` and made it return a string instead of printing to the screen. ### Are these changes tested? Yes, we added automated test cases to the test class `tFloat64Array.m`. In addition, we manually qualified these changes on macOS. ### Are there any user-facing changes? Yes, the `Print()` method is no longer public and there is now a method called `double()` on `arrow.array.Float64Array`. Included below is a simple example of using the `double()` method: ```matlab >> arrowArray = arrow.array.Float64Array([1, 2, 3]) arrowArray = [ 1, 2, 3 ] >> matlabArray = double(arrowArray) matlabArray = 1 2 3 >> class(arrowArray) ans = 'arrow.array.Float64Array' >> class(matlabArray) ans = 'double' ``` ### Future Directions 1. Support the rest of the numeric types. 2. Add an abstract MATLAB base class called `arrow.array.Array`. 3. Continue building out the methods (e.g. `length()`) 4. Support `null` values (validity bitmap). 5. Handle converting non-ascii characters from `UTF-8` to `UTF-16`. 6. Handle errors in the C++ layer. * Closes: apache#35411 Lead-authored-by: Sarah Gilmore <sgilmore@mathworks.com> Co-authored-by: sgilmore10 <74676073+sgilmore10@users.noreply.github.com> Co-authored-by: Kevin Gurney <kgurney@mathworks.com> Co-authored-by: Sutou Kouhei <kou@cozmixng.org> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
rtpsw
pushed a commit
to rtpsw/arrow
that referenced
this issue
May 16, 2023
…ic Arrays (apache#35479) ### Rationale for this change This pull request is a followup to apache#34563. To facilitate the implementation of future array types, we would like to first create a C++ template class for numeric arrays. We also want to start adding basic tests for the array functionality in the MATLAB interface. ### What changes are included in this PR? 1. Added a C++ template Class called `NumericArray` templated on `CType`. 2. Re-implemented the `Float64Array` C++ proxy class in terms of the new template class, i.e. `NumericArray<double>`. 3. Added a method called `double()` on the MATLAB Float64Array class to convert the arrow.[Type]Array to a MATLAB `double` array. 4. Added basic tests for round-tripping float64 arrays. 5. Created a base C++ proxy `Array` class that all proxy array classes will inherit from. 6. Renamed `Print()` to `ToString()` and made it return a string instead of printing to the screen. ### Are these changes tested? Yes, we added automated test cases to the test class `tFloat64Array.m`. In addition, we manually qualified these changes on macOS. ### Are there any user-facing changes? Yes, the `Print()` method is no longer public and there is now a method called `double()` on `arrow.array.Float64Array`. Included below is a simple example of using the `double()` method: ```matlab >> arrowArray = arrow.array.Float64Array([1, 2, 3]) arrowArray = [ 1, 2, 3 ] >> matlabArray = double(arrowArray) matlabArray = 1 2 3 >> class(arrowArray) ans = 'arrow.array.Float64Array' >> class(matlabArray) ans = 'double' ``` ### Future Directions 1. Support the rest of the numeric types. 2. Add an abstract MATLAB base class called `arrow.array.Array`. 3. Continue building out the methods (e.g. `length()`) 4. Support `null` values (validity bitmap). 5. Handle converting non-ascii characters from `UTF-8` to `UTF-16`. 6. Handle errors in the C++ layer. * Closes: apache#35411 Lead-authored-by: Sarah Gilmore <sgilmore@mathworks.com> Co-authored-by: sgilmore10 <74676073+sgilmore10@users.noreply.github.com> Co-authored-by: Kevin Gurney <kgurney@mathworks.com> Co-authored-by: Sutou Kouhei <kou@cozmixng.org> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the enhancement requested
Create a templated C++ Proxy Class for Numeric Arrays. This is a followup to the pull request #34563 in which we added basic support for the Float64 type. We want to generalize this code to work for the rest of the numeric types, i.e., float32, [u]int[x][y].
Component(s)
MATLAB
The text was updated successfully, but these errors were encountered: