mirror of
https://github.com/pineappleEA/pineapple-src.git
synced 2024-11-29 19:38:23 -05:00
57 lines
1.2 KiB
C
57 lines
1.2 KiB
C
|
// Copyright 2020 yuzu Emulator Project
|
||
|
// Licensed under GPLv2 or any later version
|
||
|
// Refer to the license.txt file included.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include <vector>
|
||
|
#include "common/common_types.h"
|
||
|
|
||
|
namespace Common {
|
||
|
|
||
|
enum class SeekOrigin {
|
||
|
SetOrigin,
|
||
|
FromCurrentPos,
|
||
|
FromEnd,
|
||
|
};
|
||
|
|
||
|
class Stream {
|
||
|
public:
|
||
|
/// Stream creates a bitstream and provides common functionality on the stream.
|
||
|
explicit Stream();
|
||
|
~Stream();
|
||
|
|
||
|
Stream(const Stream&) = delete;
|
||
|
Stream& operator=(const Stream&) = delete;
|
||
|
|
||
|
Stream(Stream&&) = default;
|
||
|
Stream& operator=(Stream&&) = default;
|
||
|
|
||
|
/// Reposition bitstream "cursor" to the specified offset from origin
|
||
|
void Seek(s32 offset, SeekOrigin origin);
|
||
|
|
||
|
/// Reads next byte in the stream buffer and increments position
|
||
|
u8 ReadByte();
|
||
|
|
||
|
/// Writes byte at current position
|
||
|
void WriteByte(u8 byte);
|
||
|
|
||
|
[[nodiscard]] std::size_t GetPosition() const {
|
||
|
return position;
|
||
|
}
|
||
|
|
||
|
[[nodiscard]] std::vector<u8>& GetBuffer() {
|
||
|
return buffer;
|
||
|
}
|
||
|
|
||
|
[[nodiscard]] const std::vector<u8>& GetBuffer() const {
|
||
|
return buffer;
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
std::vector<u8> buffer;
|
||
|
std::size_t position{0};
|
||
|
};
|
||
|
|
||
|
} // namespace Common
|