in extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc_decoder.c [345:397]
static int ArrowIpcDecoderSetTypeInt(struct ArrowSchema* schema,
flatbuffers_generic_t type_generic,
struct ArrowError* error) {
ns(Int_table_t) type = (ns(Int_table_t))type_generic;
int is_signed = ns(Int_is_signed_get(type));
int bitwidth = ns(Int_bitWidth_get(type));
int nanoarrow_type = NANOARROW_TYPE_UNINITIALIZED;
if (is_signed) {
switch (bitwidth) {
case 8:
nanoarrow_type = NANOARROW_TYPE_INT8;
break;
case 16:
nanoarrow_type = NANOARROW_TYPE_INT16;
break;
case 32:
nanoarrow_type = NANOARROW_TYPE_INT32;
break;
case 64:
nanoarrow_type = NANOARROW_TYPE_INT64;
break;
default:
ArrowErrorSet(error,
"Expected signed int bitwidth of 8, 16, 32, or 64 but got %d",
(int)bitwidth);
return EINVAL;
}
} else {
switch (bitwidth) {
case 8:
nanoarrow_type = NANOARROW_TYPE_UINT8;
break;
case 16:
nanoarrow_type = NANOARROW_TYPE_UINT16;
break;
case 32:
nanoarrow_type = NANOARROW_TYPE_UINT32;
break;
case 64:
nanoarrow_type = NANOARROW_TYPE_UINT64;
break;
default:
ArrowErrorSet(error,
"Expected unsigned int bitwidth of 8, 16, 32, or 64 but got %d",
(int)bitwidth);
return EINVAL;
}
}
return ArrowIpcDecoderSetTypeSimple(schema, nanoarrow_type, error);
}