Skip to content

Commit a24e432

Browse files
author
izaid
committed
Updates to match libdynd
1 parent da2c5ad commit a24e432

6 files changed

Lines changed: 93 additions & 163 deletions

File tree

dynd/include/array_functions.hpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ inline dynd::nd::array make_strided_array(const dynd::ndt::type &dtp, intptr_t n
5252
dynd::nd::array result;
5353
char *data_ptr = NULL;
5454
if (array_tp.get_base_id() == dynd::memory_id) {
55-
result = dynd::nd::make_array_memory_block(array_tp, array_tp.get_arrmeta_size());
55+
result =
56+
dynd::nd::make_array_memory_block(array_tp, array_tp.get_arrmeta_size(), data_ptr, dynd::nd::memory_block());
5657
array_tp.extended<dynd::ndt::base_memory_type>()->data_alloc(&data_ptr, data_size);
5758
}
5859
else {
@@ -72,7 +73,6 @@ inline dynd::nd::array make_strided_array(const dynd::ndt::type &dtp, intptr_t n
7273

7374
// Fill in the preamble arrmeta
7475
dynd::nd::array_preamble *ndo = reinterpret_cast<dynd::nd::array_preamble *>(result.get());
75-
ndo->data = data_ptr;
7676
ndo->flags = dynd::nd::read_access_flag | dynd::nd::write_access_flag;
7777

7878
if (!any_variable_dims) {
@@ -394,10 +394,8 @@ inline dynd::nd::array nd_fields(const dynd::nd::array &n, PyObject *field_list)
394394

395395
// Allocate the new memory block.
396396
size_t arrmeta_size = result_tp.get_arrmeta_size();
397-
dynd::nd::array result = dynd::nd::make_array_memory_block(result_tp, arrmeta_size, n->get_owner() ? n->get_owner() : n);
398-
399-
// Clone the data pointer
400-
result.get()->data = n.get()->data;
397+
dynd::nd::array result =
398+
dynd::nd::make_array_memory_block(result_tp, arrmeta_size, n->get_data(), n->get_owner() ? n->get_owner() : n);
401399

402400
// Copy the flags
403401
result.get()->flags = n.get()->flags;

dynd/include/kernels/apply_pyobject_kernel.hpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ struct apply_pyobject_kernel : dynd::nd::base_strided_kernel<apply_pyobject_kern
4646
pydynd::array_to_cpp_ref(item).debug_print(ss);
4747
// Set all the args' data pointers to NULL as a precaution
4848
for (i = 0; i != nsrc; ++i) {
49-
pydynd::array_to_cpp_ref(item).get()->data = NULL;
49+
pydynd::array_to_cpp_ref(item).get()->set_data(NULL);
5050
}
5151
throw std::runtime_error(ss.str());
5252
}
@@ -76,9 +76,9 @@ struct apply_pyobject_kernel : dynd::nd::base_strided_kernel<apply_pyobject_kern
7676
pydynd::pyobject_ownref args(PyTuple_New(nsrc));
7777
for (intptr_t i = 0; i != nsrc; ++i) {
7878
dynd::ndt::type tp = src_tp[i];
79-
dynd::nd::array n = dynd::nd::make_array_memory_block(tp, tp.get_arrmeta_size());
79+
dynd::nd::array n = dynd::nd::make_array_memory_block(tp, tp.get_arrmeta_size(), const_cast<char *>(src[i]),
80+
dynd::nd::memory_block());
8081
n.get()->flags = dynd::nd::read_access_flag;
81-
n.get()->data = const_cast<char *>(src[i]);
8282
if (src_tp[i].get_arrmeta_size() > 0) {
8383
src_tp[i].extended()->arrmeta_copy_construct(n.get()->metadata(), m_src_arrmeta[i], dynd::nd::memory_block());
8484
}
@@ -107,9 +107,9 @@ struct apply_pyobject_kernel : dynd::nd::base_strided_kernel<apply_pyobject_kern
107107
pydynd::pyobject_ownref args(PyTuple_New(nsrc));
108108
for (intptr_t i = 0; i != nsrc; ++i) {
109109
dynd::ndt::type tp = src_tp[i];
110-
dynd::nd::array n = dynd::nd::make_array_memory_block(tp, tp.get_arrmeta_size());
110+
dynd::nd::array n = dynd::nd::make_array_memory_block(tp, tp.get_arrmeta_size(), const_cast<char *>(src[i]),
111+
dynd::nd::memory_block());
111112
n.get()->flags = dynd::nd::read_access_flag;
112-
n.get()->data = const_cast<char *>(src[i]);
113113
if (src_tp[i].get_arrmeta_size() > 0) {
114114
src_tp[i].extended()->arrmeta_copy_construct(n.get()->metadata(), m_src_arrmeta[i], dynd::nd::memory_block());
115115
}
@@ -132,7 +132,7 @@ struct apply_pyobject_kernel : dynd::nd::base_strided_kernel<apply_pyobject_kern
132132
dst += dst_stride;
133133
for (intptr_t i = 0; i != nsrc; ++i) {
134134
const dynd::nd::array &n = pydynd::array_to_cpp_ref(PyTuple_GET_ITEM(args.get(), i));
135-
n.get()->data += src_stride[i];
135+
n->set_data(n->get_data() + src_stride[i]);
136136
}
137137
}
138138
}

0 commit comments

Comments
 (0)