mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-07 19:18:19 +02:00
72 lines
1.4 KiB
C++
72 lines
1.4 KiB
C++
#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;
|