| 26 | |
| 27 | template <class FnT> |
| 28 | void ForEachRecord(FnT && fn) const |
| 29 | { |
| 30 | ReaderSource source(m_reader); |
| 31 | while (source.Size() > 0) |
| 32 | { |
| 33 | auto const pos = source.Pos(); |
| 34 | uint32_t const recordSize = ReadVarUint<uint32_t>(source); |
| 35 | std::vector<uint8_t> buffer(recordSize); |
| 36 | source.Read(buffer.data(), recordSize); |
| 37 | fn(static_cast<uint32_t>(pos), std::move(buffer)); |
| 38 | } |
| 39 | } |
| 40 | |
| 41 | private: |
| 42 | ReaderT m_reader; |