-
Notifications
You must be signed in to change notification settings - Fork 138
/
Copy pathMemStream.h
72 lines (56 loc) · 1.44 KB
/
MemStream.h
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#pragma once
#include "Common.h"
#include "DataStream.h"
NS_BF_BEGIN;
class MemStream : public DataStream
{
public:
uint8* mData;
int mSize;
int mPos;
bool mFreeMemory;
public:
MemStream(void* data, int size, bool freeMemory);
~MemStream();
static MemStream* CreateWithDuplicate(void* data, int size);
static MemStream* CreateWithOwnershipTaken(void* data, int size);
static MemStream* CreateWithNoCopy(void* data, int size);
bool Eof() override;
int GetSize() override;
using DataStream::Read;
int Read(void* ptr, int size) override;
using DataStream::Write;
int Write(void* ptr, int size) override;
int GetPos() override;
void Seek(int size) override;
void SetPos(int pos) override;
};
class SafeMemStream : public MemStream
{
public:
bool mFailed;
SafeMemStream(void* data, int size, bool freeMemory);
using DataStream::Read;
int Read(void* ptr, int size) override;
};
class DynMemStream : public DataStream
{
public:
Array<uint8> mData;
int mPos;
public:
DynMemStream();
bool Eof() override;
int GetSize() override;
using DataStream::Read;
int Read(void* ptr, int size) override;
using DataStream::Write;
int Write(void* ptr, int size) override;
void Write(uint8 val) override;
int GetPos() override;
void Seek(int size) override;
void SetPos(int pos) override;
void Clear();
void* GetPtr();
};
NS_BF_END;