#include "tensor.h" using namespace arrow; namespace numbuf { template TensorBuilder::TensorBuilder(const TypePtr& dtype, MemoryPool* pool) : dtype_(dtype) { dim_data_ = std::make_shared(pool); dims_ = std::make_shared(pool, dim_data_); value_data_ = std::make_shared>(pool, dtype); values_ = std::make_shared(pool, value_data_); auto dims_field = std::make_shared("dims", dims_->type()); auto values_field = std::make_shared("data", values_->type()); auto type = std::make_shared(std::vector({dims_field, values_field})); tensors_ = std::make_shared(pool, type, std::vector>({dims_, values_})); }; template Status TensorBuilder::Append(const std::vector& dims, const elem_type* data) { RETURN_NOT_OK(tensors_->Append()); RETURN_NOT_OK(dims_->Append()); RETURN_NOT_OK(values_->Append()); int32_t size = 1; for (auto dim : dims) { size *= dim; RETURN_NOT_OK(dim_data_->Append(dim)); } RETURN_NOT_OK(value_data_->Append(data, size)); return Status::OK(); // tensors_->Append(); } template std::shared_ptr TensorBuilder::Finish() { return tensors_->Finish(); } template class TensorBuilder; template class TensorBuilder; template class TensorBuilder; template class TensorBuilder; template class TensorBuilder; template class TensorBuilder; template class TensorBuilder; template class TensorBuilder; template class TensorBuilder; template class TensorBuilder; }