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

Function EncodeLevels

cpp/src/parquet/column_reader_benchmark.cc:286–307  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

284}
285
286void EncodeLevels(Encoding::type encoding, int16_t max_level, int num_levels,
287 const int16_t* input_levels, std::vector<uint8_t>* bytes) {
288 LevelEncoder encoder;
289 // encode levels
290 if (encoding == Encoding::RLE) {
291 int rle_size = LevelEncoder::MaxBufferSize(encoding, max_level, num_levels);
292 bytes->resize(rle_size + sizeof(int32_t));
293 // leave space to write the rle length value
294 encoder.Init(encoding, max_level, num_levels, bytes->data() + sizeof(int32_t),
295 rle_size);
296 encoder.Encode(num_levels, input_levels);
297 int data_length = encoder.len();
298 memcpy(bytes->data(), &data_length, sizeof(int32_t));
299 } else {
300 int bitpack_size =
301 LevelEncoder::MaxBufferSize(encoding, max_level, num_levels) + sizeof(int32_t);
302 bytes->resize(bitpack_size);
303 encoder.Init(encoding, max_level, num_levels, bytes->data(),
304 static_cast<int>(bytes->size()));
305 encoder.Encode(num_levels, input_levels);
306 }
307}
308
309static void DecodeLevels(Encoding::type level_encoding, int16_t max_level, int num_levels,
310 int batch_size, int level_repeat_count,

Callers 1

DecodeLevelsFunction · 0.70

Calls 6

resizeMethod · 0.80
InitMethod · 0.45
dataMethod · 0.45
EncodeMethod · 0.45
lenMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected