| 1450 | } |
| 1451 | |
| 1452 | inline 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 | |
| 1479 | inline void RleBitPackedEncoder::CheckBufferFull() { |
| 1480 | int64_t bytes_written = bit_writer_.bytes_written(); |
nothing calls this directly
no test coverage detected