62 lines
1011 B
C++
62 lines
1011 B
C++
#include <assert.h>
|
|
#include "filesystem/stream.h"
|
|
#include "filesystem/filemanager.h"
|
|
|
|
class FileStream : public StreamBase
|
|
{
|
|
public:
|
|
FileStream(File* file);
|
|
~FileStream();
|
|
|
|
size_t Read(void* buffer, size_t size);
|
|
size_t Write(void* buffer, size_t size);
|
|
void Seek(SeekDir way, long offset);
|
|
size_t Tell();
|
|
bool Eof();
|
|
|
|
private:
|
|
File* m_file;
|
|
};
|
|
|
|
FileStream::FileStream(File* file)
|
|
{
|
|
assert(file && "Cannot open file stream with nullptr file handle.");
|
|
m_file = file;
|
|
}
|
|
|
|
FileStream::~FileStream()
|
|
{
|
|
if (m_file)
|
|
g_fileManager->CloseFile(m_file);
|
|
}
|
|
|
|
size_t FileStream::Read(void* buffer, size_t size)
|
|
{
|
|
return m_file->Read(buffer, size);
|
|
}
|
|
|
|
size_t FileStream::Write(void* buffer, size_t size)
|
|
{
|
|
return m_file->Write(buffer, size);
|
|
}
|
|
|
|
void FileStream::Seek(SeekDir way, long offset)
|
|
{
|
|
m_file->Seek(way, offset);
|
|
}
|
|
|
|
size_t FileStream::Tell()
|
|
{
|
|
return m_file->Tell();
|
|
}
|
|
|
|
bool FileStream::Eof()
|
|
{
|
|
return m_file->Eof();;
|
|
}
|
|
|
|
StreamBase* CreateFileStream(File* file)
|
|
{
|
|
return new FileStream(file);
|
|
}
|