MCPcopy Create free account
hub / github.com/apache/arrow / AppendNestedList

Method AppendNestedList

cpp/src/arrow/testing/fixed_width_test_util.cc:129–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

127}
128
129Status NestedListGenerator::AppendNestedList(ArrayBuilder* nested_builder,
130 const int* list_sizes,
131 int64_t* next_inner_value) {
132 using ::arrow::internal::checked_cast;
133 ArrayBuilder* builder = nested_builder;
134 auto type = builder->type();
135 if (type->id() == Type::FIXED_SIZE_LIST || type->id() == Type::LIST) {
136 const int list_size = *list_sizes;
137 if (type->id() == Type::FIXED_SIZE_LIST) {
138 auto* fsl_builder = checked_cast<FixedSizeListBuilder*>(builder);
139 assert(list_size == checked_cast<FixedSizeListType&>(*type).list_size());
140 RETURN_NOT_OK(fsl_builder->Append());
141 builder = fsl_builder->value_builder();
142 } else { // type->id() == Type::LIST)
143 auto* list_builder = checked_cast<ListBuilder*>(builder);
144 RETURN_NOT_OK(list_builder->Append(/*is_valid=*/true, list_size));
145 builder = list_builder->value_builder();
146 }
147 list_sizes++;
148 for (int i = 0; i < list_size; i++) {
149 RETURN_NOT_OK(AppendNestedList(builder, list_sizes, next_inner_value));
150 }
151 } else {
152 switch (type->id()) {
153 case Type::INT8:
154 RETURN_NOT_OK(AppendNumeric<Int8Type>(builder, next_inner_value));
155 break;
156 case Type::INT16:
157 RETURN_NOT_OK(AppendNumeric<Int16Type>(builder, next_inner_value));
158 break;
159 case Type::INT32:
160 RETURN_NOT_OK(AppendNumeric<Int32Type>(builder, next_inner_value));
161 break;
162 case Type::INT64:
163 RETURN_NOT_OK(AppendNumeric<Int64Type>(builder, next_inner_value));
164 break;
165 default:
166 return Status::NotImplemented("Unsupported type: ", *type);
167 }
168 }
169 return Status::OK();
170}
171
172Result<std::shared_ptr<Array>> NestedListGenerator::NestedListArray(
173 ArrayBuilder* nested_builder, const std::vector<int>& list_sizes, int64_t length) {

Callers

nothing calls this directly

Calls 7

NotImplementedFunction · 0.50
OKFunction · 0.50
typeMethod · 0.45
idMethod · 0.45
list_sizeMethod · 0.45
AppendMethod · 0.45
value_builderMethod · 0.45

Tested by

no test coverage detected