File indexing completed on 2025-08-28 08:26:57
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #pragma once
0019
0020 #include <cstdint>
0021 #include <memory>
0022 #include <utility>
0023
0024 #include "arrow/result.h"
0025 #include "arrow/type_fwd.h"
0026 #include "arrow/util/type_fwd.h"
0027 #include "arrow/util/visibility.h"
0028
0029 namespace arrow {
0030 namespace csv {
0031
0032 class BlockParser;
0033 struct ConvertOptions;
0034
0035 class ARROW_EXPORT ColumnBuilder {
0036 public:
0037 virtual ~ColumnBuilder() = default;
0038
0039
0040
0041
0042 virtual void Append(const std::shared_ptr<BlockParser>& parser) = 0;
0043
0044
0045 virtual void Insert(int64_t block_index,
0046 const std::shared_ptr<BlockParser>& parser) = 0;
0047
0048
0049 virtual Result<std::shared_ptr<ChunkedArray>> Finish() = 0;
0050
0051 std::shared_ptr<arrow::internal::TaskGroup> task_group() { return task_group_; }
0052
0053
0054 static Result<std::shared_ptr<ColumnBuilder>> Make(
0055 MemoryPool* pool, const std::shared_ptr<DataType>& type, int32_t col_index,
0056 const ConvertOptions& options,
0057 const std::shared_ptr<arrow::internal::TaskGroup>& task_group);
0058
0059
0060 static Result<std::shared_ptr<ColumnBuilder>> Make(
0061 MemoryPool* pool, int32_t col_index, const ConvertOptions& options,
0062 const std::shared_ptr<arrow::internal::TaskGroup>& task_group);
0063
0064
0065
0066 static Result<std::shared_ptr<ColumnBuilder>> MakeNull(
0067 MemoryPool* pool, const std::shared_ptr<DataType>& type,
0068 const std::shared_ptr<arrow::internal::TaskGroup>& task_group);
0069
0070 protected:
0071 explicit ColumnBuilder(std::shared_ptr<arrow::internal::TaskGroup> task_group)
0072 : task_group_(std::move(task_group)) {}
0073
0074 std::shared_ptr<arrow::internal::TaskGroup> task_group_;
0075 };
0076
0077 }
0078 }