Skip to content

Commit

Permalink
Create StringArray Type property from proxy ID
Browse files Browse the repository at this point in the history
  • Loading branch information
sgilmore10 committed Jul 7, 2023
1 parent bb84776 commit 5b88c86
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 3 deletions.
16 changes: 16 additions & 0 deletions matlab/src/cpp/arrow/matlab/array/proxy/string_array.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
// under the License.

#include "arrow/matlab/array/proxy/string_array.h"
#include "arrow/matlab/type/proxy/string_type.h"

#include "arrow/array/builder_binary.h"

Expand All @@ -24,6 +25,8 @@
#include "arrow/matlab/bit/unpack.h"
#include "arrow/util/utf8.h"

#include "libmexclass/proxy/ProxyManager.h"

namespace arrow::matlab::array::proxy {

libmexclass::proxy::MakeResult StringArray::make(const libmexclass::proxy::FunctionArguments& constructor_arguments) {
Expand Down Expand Up @@ -78,4 +81,17 @@ namespace arrow::matlab::array::proxy {
context.outputs[0] = array_mda;
}

void StringArray::createDataTypeProxy(libmexclass::proxy::method::Context& context) {
namespace mda = ::matlab::data;
using StringTypeProxy = type::proxy::StringType;

mda::ArrayFactory factory;

const auto type = array->type();
const auto string_type = std::static_pointer_cast<arrow::StringType>(type);
auto string_type_proxy = std::make_shared<StringTypeProxy>(string_type);
const auto id = libmexclass::proxy::ProxyManager::manageProxy(string_type_proxy);
context.outputs[0] = factory.createScalar(id);
}

}
3 changes: 3 additions & 0 deletions matlab/src/cpp/arrow/matlab/array/proxy/string_array.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ namespace arrow::matlab::array::proxy {

protected:
void toMATLAB(libmexclass::proxy::method::Context& context) override;

void createDataTypeProxy(libmexclass::proxy::method::Context& context) override;

};

}
4 changes: 3 additions & 1 deletion matlab/src/matlab/+arrow/+array/StringArray.m
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
end

properties(SetAccess=private, GetAccess=public)
Type = arrow.type.StringType
Type = []
end

methods
Expand All @@ -40,6 +40,8 @@
validElements = arrow.args.parseValidElements(data, opts);
opts = struct(MatlabArray=data, Valid=validElements);
[email protected]("Name", "arrow.array.proxy.StringArray", "ConstructorArguments", {opts});
typeProxyID = obj.Proxy.createDataTypeProxy();
obj.Type = arrow.type.StringType(typeProxyID);
end

function data = string(obj)
Expand Down
9 changes: 7 additions & 2 deletions matlab/src/matlab/+arrow/+type/StringType.m
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,13 @@
%STRINGTYPE Type class for string data.

methods
function obj = StringType()
[email protected]("Name", "arrow.type.proxy.StringType", "ConstructorArguments", {});
function obj = StringType(proxyID)
arguments
proxyID = missing
end
proxyName = "arrow.type.proxy.StringType";
args = arrow.type.parseProxyArguments(proxyName, proxyID);
[email protected](args{:});
end
end
end
Expand Down

0 comments on commit 5b88c86

Please sign in to comment.