summaryrefslogtreecommitdiff
path: root/tools/ZAPD/ZAPDUtils/Utils/Stream.h
blob: e73a9a70d0df2918c43f310a1ba813c0a976bc28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#pragma once

#include <cstdint>
#include <memory>

enum class SeekOffsetType
{
	Start,
	Current,
	End
};

// TODO: Eventually account for endianess in binaryreader and binarywriter
enum class Endianess
{
	Little = 0,
	Big = 1,
};

class Stream
{
public:
	virtual ~Stream() = default;
	virtual uint64_t GetLength() = 0;
	uint64_t GetBaseAddress() { return baseAddress; }

	virtual void Seek(int32_t offset, SeekOffsetType seekType) = 0;

	virtual std::unique_ptr<char[]> Read(size_t length) = 0;
	virtual void Read(const char* dest, size_t length) = 0;
	virtual int8_t ReadByte() = 0;

	virtual void Write(char* destBuffer, size_t length) = 0;
	virtual void WriteByte(int8_t value) = 0;

	virtual void Flush() = 0;
	virtual void Close() = 0;

protected:
	uint64_t baseAddress;
};