| 103 | virtual ~TypedScanner() {} |
| 104 | |
| 105 | bool NextLevels(int16_t* def_level, int16_t* rep_level) { |
| 106 | if (level_offset_ == levels_buffered_) { |
| 107 | levels_buffered_ = static_cast<int>( |
| 108 | typed_reader_->ReadBatch(static_cast<int>(batch_size_), def_levels_.data(), |
| 109 | rep_levels_.data(), values_, &values_buffered_)); |
| 110 | |
| 111 | value_offset_ = 0; |
| 112 | level_offset_ = 0; |
| 113 | if (!levels_buffered_) { |
| 114 | return false; |
| 115 | } |
| 116 | } |
| 117 | *def_level = descr()->max_definition_level() > 0 ? def_levels_[level_offset_] : 0; |
| 118 | *rep_level = descr()->max_repetition_level() > 0 ? rep_levels_[level_offset_] : 0; |
| 119 | level_offset_++; |
| 120 | return true; |
| 121 | } |
| 122 | |
| 123 | bool Next(T* val, int16_t* def_level, int16_t* rep_level, bool* is_null) { |
| 124 | if (level_offset_ == levels_buffered_) { |