Skip to content

Commit 16f9b91

Browse files
gorloffslavaBwL1289
authored andcommitted
+ Fix building in C++ 20 and 23 language modes
1 parent a202c8f commit 16f9b91

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

python/pyarrow/src/arrow/python/serialize.cc

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <sstream>
2525
#include <string>
2626
#include <vector>
27+
#include <any>
2728

2829
#include <numpy/arrayobject.h>
2930
#include <numpy/arrayscalars.h>
@@ -70,16 +71,12 @@ Status Append(PyObject* context, PyObject* elem, SequenceBuilder* builder,
7071
// can be obtained via the Finish method.
7172
class DictBuilder {
7273
public:
73-
explicit DictBuilder(MemoryPool* pool = nullptr) : keys_(pool), vals_(pool) {
74-
builder_.reset(new StructBuilder(struct_({field("keys", dense_union(FieldVector{})),
75-
field("vals", dense_union(FieldVector{}))}),
76-
pool, {keys_.builder(), vals_.builder()}));
77-
}
74+
explicit DictBuilder(MemoryPool* pool = nullptr);
7875

7976
// Builder for the keys of the dictionary
80-
SequenceBuilder& keys() { return (SequenceBuilder)keys_; }
77+
SequenceBuilder& keys() { return *keys_; }
8178
// Builder for the values of the dictionary
82-
SequenceBuilder& vals() { return (SequenceBuilder)vals_; }
79+
SequenceBuilder& vals() { return *vals_; }
8380

8481
// Construct an Arrow StructArray representing the dictionary.
8582
// Contains a field "keys" for the keys and "vals" for the values.
@@ -88,8 +85,8 @@ class DictBuilder {
8885
std::shared_ptr<StructBuilder> builder() { return builder_; }
8986

9087
private:
91-
std::any keys_;
92-
std::any vals_;
88+
std::unique_ptr<SequenceBuilder> keys_;
89+
std::unique_ptr<SequenceBuilder> vals_;
9390
std::shared_ptr<StructBuilder> builder_;
9491
};
9592

@@ -327,6 +324,12 @@ class SequenceBuilder {
327324
std::shared_ptr<DenseUnionBuilder> builder_;
328325
};
329326

327+
DictBuilder::DictBuilder(MemoryPool* pool) : keys_(std::make_unique<SequenceBuilder>(SequenceBuilder(pool))), vals_(std::make_unique<SequenceBuilder>(SequenceBuilder(pool))) {
328+
builder_.reset(new StructBuilder(struct_({field("keys", dense_union(FieldVector{})),
329+
field("vals", dense_union(FieldVector{}))}),
330+
pool, {keys_->builder(), vals_->builder()}));
331+
}
332+
330333
Status SequenceBuilder::AppendDict(PyObject* context, PyObject* dict,
331334
int32_t recursion_depth,
332335
SerializedPyObject* blobs_out) {

0 commit comments

Comments
 (0)