Create a stable C pointer to the N last structs in nested_structs_
| 2628 | |
| 2629 | // Create a stable C pointer to the N last structs in nested_structs_ |
| 2630 | struct ArrowArray** NLastChildren(int64_t n_children, struct ArrowArray* parent) { |
| 2631 | children_arrays_.emplace_back(n_children); |
| 2632 | struct ArrowArray** children = children_arrays_.back().data(); |
| 2633 | int64_t nested_offset; |
| 2634 | // If parent is itself at the end of nested_structs_, skip it |
| 2635 | if (parent != nullptr && &nested_structs_.back() == parent) { |
| 2636 | nested_offset = static_cast<int64_t>(nested_structs_.size()) - n_children - 1; |
| 2637 | } else { |
| 2638 | nested_offset = static_cast<int64_t>(nested_structs_.size()) - n_children; |
| 2639 | } |
| 2640 | for (int64_t i = 0; i < n_children; ++i) { |
| 2641 | children[i] = &nested_structs_[nested_offset + i]; |
| 2642 | } |
| 2643 | return children; |
| 2644 | } |
| 2645 | |
| 2646 | struct ArrowArray* LastChild(struct ArrowArray* parent = nullptr) { |
| 2647 | return *NLastChildren(1, parent); |
nothing calls this directly
no test coverage detected