| 113 | // Copy numerical array values to a buffer, ignore nulls. |
| 114 | template <typename T> |
| 115 | ARROW_NOINLINE int64_t CopyNonNullValues(const ArraySpan& data, T* out) { |
| 116 | const int64_t n = data.length - data.GetNullCount(); |
| 117 | if (n > 0) { |
| 118 | int64_t index = 0; |
| 119 | const T* values = data.GetValues<T>(1); |
| 120 | arrow::internal::VisitSetBitRunsVoid( |
| 121 | data.buffers[0].data, data.offset, data.length, [&](int64_t pos, int64_t len) { |
| 122 | memcpy(out + index, values + pos, len * sizeof(T)); |
| 123 | index += len; |
| 124 | }); |
| 125 | } |
| 126 | return n; |
| 127 | } |
| 128 | |
| 129 | template <typename T> |
| 130 | int64_t CopyNonNullValues(const ChunkedArray& arr, T* out) { |
no test coverage detected