in src/nanoarrow/array_inline.h [832:862]
static inline double ArrowArrayViewGetDoubleUnsafe(struct ArrowArrayView* array_view,
int64_t i) {
i += array_view->offset;
struct ArrowBufferView* data_view = &array_view->buffer_views[1];
switch (array_view->storage_type) {
case NANOARROW_TYPE_INT64:
return (double)data_view->data.as_int64[i];
case NANOARROW_TYPE_UINT64:
return (double)data_view->data.as_uint64[i];
case NANOARROW_TYPE_INT32:
return data_view->data.as_int32[i];
case NANOARROW_TYPE_UINT32:
return data_view->data.as_uint32[i];
case NANOARROW_TYPE_INT16:
return data_view->data.as_int16[i];
case NANOARROW_TYPE_UINT16:
return data_view->data.as_uint16[i];
case NANOARROW_TYPE_INT8:
return data_view->data.as_int8[i];
case NANOARROW_TYPE_UINT8:
return data_view->data.as_uint8[i];
case NANOARROW_TYPE_DOUBLE:
return data_view->data.as_double[i];
case NANOARROW_TYPE_FLOAT:
return data_view->data.as_float[i];
case NANOARROW_TYPE_BOOL:
return ArrowBitGet(data_view->data.as_uint8, i);
default:
return DBL_MAX;
}
}