in cpp/src/graphar/util.cc [40:96]
Result<const void*> GetArrowArrayData(
std::shared_ptr<arrow::Array> const& array) {
if (array->type()->Equals(arrow::int8())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::Int8Array>(array)->raw_values());
} else if (array->type()->Equals(arrow::uint8())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::UInt8Array>(array)->raw_values());
} else if (array->type()->Equals(arrow::int16())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::Int16Array>(array)->raw_values());
} else if (array->type()->Equals(arrow::uint16())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::UInt16Array>(array)->raw_values());
} else if (array->type()->Equals(arrow::int32())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::Int32Array>(array)->raw_values());
} else if (array->type()->Equals(arrow::uint32())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::UInt32Array>(array)->raw_values());
} else if (array->type()->Equals(arrow::int64())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::Int64Array>(array)->raw_values());
} else if (array->type()->Equals(arrow::uint64())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::UInt64Array>(array)->raw_values());
} else if (array->type()->Equals(arrow::float32())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::FloatArray>(array)->raw_values());
} else if (array->type()->Equals(arrow::float64())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::DoubleArray>(array)->raw_values());
} else if (array->type()->Equals(arrow::utf8())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::StringArray>(array).get());
} else if (array->type()->Equals(arrow::large_utf8())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::LargeStringArray>(array).get());
} else if (array->type()->Equals(arrow::list(arrow::int32())) ||
array->type()->Equals(arrow::large_list(arrow::uint32())) ||
array->type()->Equals(arrow::large_list(arrow::int64())) ||
array->type()->Equals(arrow::large_list(arrow::uint64())) ||
array->type()->Equals(arrow::large_list(arrow::float32())) ||
array->type()->Equals(arrow::large_list(arrow::float64()))) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::LargeListArray>(array).get());
} else if (array->type()->Equals(arrow::null())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::NullArray>(array).get());
} else if (array->type()->Equals(arrow::boolean())) {
return reinterpret_cast<const void*>(
std::dynamic_pointer_cast<arrow::BooleanArray>(array).get());
} else {
return Status::TypeError("Array type - ", array->type()->ToString(),
" is not supported yet...");
}
}