15
15
// specific language governing permissions and limitations
16
16
// under the License.
17
17
18
- #include " arrow/visitor.h"
19
- #include " arrow/matlab/proxy/wrap.h"
20
18
21
19
#include " arrow/matlab/array/proxy/boolean_array.h"
22
20
#include " arrow/matlab/array/proxy/list_array.h"
23
21
#include " arrow/matlab/array/proxy/numeric_array.h"
24
22
#include " arrow/matlab/array/proxy/string_array.h"
25
23
#include " arrow/matlab/array/proxy/struct_array.h"
24
+ #include " arrow/matlab/error/error.h"
25
+ #include " arrow/matlab/proxy/wrap.h"
26
+ #include " arrow/visitor.h"
27
+ #include " libmexclass/proxy/ProxyManager.h"
26
28
27
29
namespace arrow ::matlab::proxy {
28
30
@@ -189,4 +191,19 @@ namespace arrow::matlab::proxy {
189
191
ArrayProxyWrapperVisitor visitor{array};
190
192
return visitor.wrap ();
191
193
}
192
- }
194
+
195
+ arrow::Result<std::shared_ptr<arrow::matlab::array::proxy::Array>> wrap (const std::shared_ptr<arrow::Array>& array) {
196
+ namespace mda = ::matlab::data;
197
+ mda::ArrayFactory factory;
198
+
199
+ ArrayProxyWrapperVisitor visitor{array};
200
+ ARROW_ASSIGN_OR_RAISE (auto proxy, visitor.wrap ());
201
+ const auto proxy_id = ProxyManager::manageProxy (proxy);
202
+
203
+ mda::StructArray output = factory.createStructArray ({1 , 1 }, {" ProxyID" , " TypeID" });
204
+ output[0 ][" ProxyID" ] = factory.createScalar (proxy_id);
205
+ output[0 ][" TypeID" ] = factory.createScalar (array->type ()->type_id ());
206
+
207
+ return output;
208
+ }
209
+ }
0 commit comments