1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-07 19:18:19 +02:00
Beef/BeefySysLib/FileStream.h
2025-03-28 08:08:33 -04:00

79 lines
1.6 KiB
C++

#pragma once
#include "Common.h"
#include "DataStream.h"
NS_BF_BEGIN;
class FileStream : public DataStream
{
BF_DISALLOW_COPY(FileStream);
public:
FILE* mFP;
uint8* mCacheBuffer;
int mCacheReadPos;
int mCacheSize;
int mVFilePos;
bool mReadPastEnd;
public:
FileStream();
~FileStream();
bool Open(const StringImpl& filePath, const char* fopenOptions);
bool IsOpen();
void Close();
void SetCacheSize(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 FileSubStream : public FileStream
{
public:
int mOffset;
int mSize;
public:
int GetSize() override;
int GetPos() override;
void SetPos(int pos) override;
};
class SysFileStream : public DataStream
{
BF_DISALLOW_COPY(SysFileStream);
public:
BfpFile* mFile;
public:
SysFileStream();
~SysFileStream();
bool Open(const StringImpl& filePath, BfpFileCreateKind createKind, BfpFileCreateFlags createFlags);
bool IsOpen();
void Close();
void SetSizeFast(int size); // May create uninitialized data
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;
};
NS_BF_END;