MCPcopy Create free account
hub / github.com/bytedance/bolt / createOffsetsAndSizes

Method createOffsetsAndSizes

bolt/vector/tests/utils/VectorMaker.cpp:75–109  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

73}
74
75vector_size_t VectorMaker::createOffsetsAndSizes(
76 vector_size_t size,
77 std::function<vector_size_t(vector_size_t /* row */)> sizeAt,
78 std::function<bool(vector_size_t /*row */)> isNullAt,
79 BufferPtr* nulls,
80 BufferPtr* offsets,
81 BufferPtr* sizes) {
82 *offsets = AlignedBuffer::allocate<vector_size_t>(size, pool_);
83 *sizes = AlignedBuffer::allocate<vector_size_t>(size, pool_);
84
85 auto rawOffsets = (*offsets)->asMutable<vector_size_t>();
86 auto rawSizes = (*sizes)->asMutable<vector_size_t>();
87
88 uint64_t* rawNulls;
89 if (isNullAt) {
90 *nulls = AlignedBuffer::allocate<bool>(size, pool_);
91 rawNulls = (*nulls)->asMutable<uint64_t>();
92 memset(rawNulls, bits::kNotNullByte, (*nulls)->capacity());
93 }
94
95 vector_size_t offset = 0;
96 for (vector_size_t i = 0; i < size; ++i) {
97 if (isNullAt && isNullAt(i)) {
98 bits::setNull(rawNulls, i, true);
99 rawOffsets[i] = 0;
100 rawSizes[i] = 0;
101 continue;
102 }
103 auto s = sizeAt(i);
104 rawOffsets[i] = offset;
105 rawSizes[i] = s;
106 offset += s;
107 }
108 return offset;
109}
110
111ArrayVectorPtr VectorMaker::allNullArrayVector(
112 vector_size_t size,

Callers

nothing calls this directly

Calls 4

memsetFunction · 0.85
isNullAtFunction · 0.50
setNullFunction · 0.50
capacityMethod · 0.45

Tested by

no test coverage detected