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

Method Flush

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

Source from the content-addressed store, hash-verified

1472}
1473
1474inline int RleBitPackedEncoder::Flush() {
1475 if (literal_count_ > 0 || repeat_count_ > 0 || num_buffered_values_ > 0) {
1476 bool all_repeat = literal_count_ == 0 && (repeat_count_ == num_buffered_values_ ||
1477 num_buffered_values_ == 0);
1478 // There is something pending, figure out if it's a repeated or literal run
1479 if (repeat_count_ > 0 && all_repeat) {
1480 FlushRepeatedRun();
1481 } else {
1482 ARROW_DCHECK_EQ(literal_count_ % 8, 0);
1483 // Buffer the last group of literals to 8 by padding with 0s.
1484 for (; num_buffered_values_ != 0 && num_buffered_values_ < 8;
1485 ++num_buffered_values_) {
1486 buffered_values_[num_buffered_values_] = 0;
1487 }
1488 literal_count_ += num_buffered_values_;
1489 FlushLiteralRun(true);
1490 repeat_count_ = 0;
1491 }
1492 }
1493 bit_writer_.Flush();
1494 ARROW_DCHECK_EQ(num_buffered_values_, 0);
1495 ARROW_DCHECK_EQ(literal_count_, 0);
1496 ARROW_DCHECK_EQ(repeat_count_, 0);
1497
1498 return bit_writer_.bytes_written();
1499}
1500
1501inline void RleBitPackedEncoder::CheckBufferFull() {
1502 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