| 326 | } |
| 327 | |
| 328 | inline bool BitReader::Advance(int64_t num_bits) { |
| 329 | int64_t bits_required = bit_offset_ + num_bits; |
| 330 | int64_t bytes_required = bit_util::BytesForBits(bits_required); |
| 331 | if (ARROW_PREDICT_FALSE(bytes_required > max_bytes_ - byte_offset_)) { |
| 332 | return false; |
| 333 | } |
| 334 | byte_offset_ += static_cast<int>(bits_required >> 3); |
| 335 | bit_offset_ = static_cast<int>(bits_required & 7); |
| 336 | buffered_values_ = |
| 337 | detail::ReadLittleEndianWord(buffer_ + byte_offset_, max_bytes_ - byte_offset_); |
| 338 | return true; |
| 339 | } |
| 340 | |
| 341 | inline bool BitReader::AdvanceBytes(int num_bytes) { |
| 342 | if (ARROW_PREDICT_FALSE(num_bytes > max_bytes_ - byte_offset_)) { |