| 21 | |
| 22 | namespace arrow::matlab::bit { |
| 23 | ::matlab::data::TypedArray<bool> unpack( |
| 24 | const std::shared_ptr<arrow::Buffer>& packed_buffer, int64_t length, |
| 25 | int64_t start_offset) { |
| 26 | const auto packed_buffer_ptr = packed_buffer->data(); |
| 27 | |
| 28 | ::matlab::data::ArrayFactory factory; |
| 29 | |
| 30 | const auto array_length = static_cast<size_t>(length); |
| 31 | |
| 32 | auto unpacked_buffer = factory.createBuffer<bool>(array_length); |
| 33 | auto unpacked_buffer_ptr = unpacked_buffer.get(); |
| 34 | auto visitFcn = [&](const bool is_valid) { *unpacked_buffer_ptr++ = is_valid; }; |
| 35 | |
| 36 | arrow::internal::VisitBitsUnrolled(packed_buffer_ptr, start_offset, length, visitFcn); |
| 37 | |
| 38 | ::matlab::data::TypedArray<bool> unpacked_matlab_logical_Array = |
| 39 | factory.createArrayFromBuffer({array_length, 1}, std::move(unpacked_buffer)); |
| 40 | |
| 41 | return unpacked_matlab_logical_Array; |
| 42 | } |
| 43 | |
| 44 | const uint8_t* extract_ptr( |
| 45 | const ::matlab::data::TypedArray<bool>& unpacked_validity_bitmap) { |
no test coverage detected