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

Method Flush

cpp/src/arrow/util/rle_encoding_internal.h:1452–1477  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1450}
1451
1452inline int RleBitPackedEncoder::Flush() {
1453 if (literal_count_ > 0 || repeat_count_ > 0 || num_buffered_values_ > 0) {
1454 bool all_repeat = literal_count_ == 0 && (repeat_count_ == num_buffered_values_ ||
1455 num_buffered_values_ == 0);
1456 // There is something pending, figure out if it's a repeated or literal run
1457 if (repeat_count_ > 0 && all_repeat) {
1458 FlushRepeatedRun();
1459 } else {
1460 ARROW_DCHECK_EQ(literal_count_ % 8, 0);
1461 // Buffer the last group of literals to 8 by padding with 0s.
1462 for (; num_buffered_values_ != 0 && num_buffered_values_ < 8;
1463 ++num_buffered_values_) {
1464 buffered_values_[num_buffered_values_] = 0;
1465 }
1466 literal_count_ += num_buffered_values_;
1467 FlushLiteralRun(true);
1468 repeat_count_ = 0;
1469 }
1470 }
1471 bit_writer_.Flush();
1472 ARROW_DCHECK_EQ(num_buffered_values_, 0);
1473 ARROW_DCHECK_EQ(literal_count_, 0);
1474 ARROW_DCHECK_EQ(repeat_count_, 0);
1475
1476 return bit_writer_.bytes_written();
1477}
1478
1479inline void RleBitPackedEncoder::CheckBufferFull() {
1480 int64_t bytes_written = bit_writer_.bytes_written();

Callers

nothing calls this directly

Calls 1

bytes_writtenMethod · 0.80

Tested by

no test coverage detected