| 94 | } |
| 95 | |
| 96 | std::int64_t ZstdStream::Seek(std::int64_t offset, SeekOrigin origin) |
| 97 | { |
| 98 | switch (origin) { |
| 99 | case SeekOrigin::Current: { |
| 100 | DEATH_ASSERT(offset >= 0, "Cannot seek to negative values", Stream::OutOfRange); |
| 101 | |
| 102 | char buffer[4096]; |
| 103 | while (offset > 0) { |
| 104 | std::int64_t size = (offset > sizeof(buffer) ? sizeof(buffer) : offset); |
| 105 | std::int64_t bytesRead = Read(buffer, size); |
| 106 | if (bytesRead <= 0) { |
| 107 | return bytesRead; |
| 108 | } |
| 109 | offset -= bytesRead; |
| 110 | } |
| 111 | |
| 112 | return static_cast<std::int64_t>(_outPosTotal); |
| 113 | } |
| 114 | } |
| 115 | |
| 116 | return Stream::OutOfRange; |
| 117 | } |
| 118 | |
| 119 | std::int64_t ZstdStream::GetPosition() const |
| 120 | { |
no test coverage detected