| 97 | } |
| 98 | |
| 99 | void Array::getValid(libmexclass::proxy::method::Context& context) { |
| 100 | auto array_length = static_cast<size_t>(array->length()); |
| 101 | |
| 102 | // If the Arrow array has no null values, then return a MATLAB |
| 103 | // logical array that is all "true" for the validity bitmap. |
| 104 | if (array->null_count() == 0) { |
| 105 | ::matlab::data::ArrayFactory factory; |
| 106 | auto validity_buffer = factory.createBuffer<bool>(array_length); |
| 107 | auto validity_buffer_ptr = validity_buffer.get(); |
| 108 | std::fill(validity_buffer_ptr, validity_buffer_ptr + array_length, true); |
| 109 | auto valid_elements_mda = factory.createArrayFromBuffer<bool>( |
| 110 | {array_length, 1}, std::move(validity_buffer)); |
| 111 | context.outputs[0] = valid_elements_mda; |
| 112 | return; |
| 113 | } |
| 114 | |
| 115 | auto validity_bitmap = array->null_bitmap(); |
| 116 | auto valid_elements_mda = bit::unpack(validity_bitmap, array_length, array->offset()); |
| 117 | context.outputs[0] = valid_elements_mda; |
| 118 | } |
| 119 | |
| 120 | void Array::getType(libmexclass::proxy::method::Context& context) { |
| 121 | MATLAB_ASSIGN_OR_ERROR_WITH_CONTEXT( |
nothing calls this directly
no test coverage detected