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