| 73 | } |
| 74 | |
| 75 | std::int64_t DeflateStream::Seek(std::int64_t offset, SeekOrigin origin) |
| 76 | { |
| 77 | switch (origin) { |
| 78 | case SeekOrigin::Current: { |
| 79 | DEATH_ASSERT(offset >= 0, "Cannot seek to negative values", Stream::OutOfRange); |
| 80 | |
| 81 | std::uint8_t buffer[4096]; |
| 82 | while (offset > 0) { |
| 83 | std::int64_t size = (offset > sizeof(buffer) ? sizeof(buffer) : offset); |
| 84 | std::int64_t bytesRead = Read(buffer, size); |
| 85 | if (bytesRead <= 0) { |
| 86 | return bytesRead; |
| 87 | } |
| 88 | offset -= bytesRead; |
| 89 | } |
| 90 | |
| 91 | return static_cast<std::int64_t>(_strm.total_out); |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | return Stream::OutOfRange; |
| 96 | } |
| 97 | |
| 98 | std::int64_t DeflateStream::GetPosition() const |
| 99 | { |
no test coverage detected