Initial sources
This commit is contained in:
57
engine/filesystem/file.cpp
Normal file
57
engine/filesystem/file.cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <assert.h>
|
||||
#include "filesystem/file.h"
|
||||
|
||||
static const char* s_stdioOpeningMode[] = { "rb", "wb" };
|
||||
static int s_stdioSeekDir[] = { SEEK_SET, SEEK_CUR, SEEK_END };
|
||||
|
||||
File::File(const char* path, FileAccess access)
|
||||
{
|
||||
m_filehandle = fopen(path, s_stdioOpeningMode[(int)access]);
|
||||
assert(m_filehandle && "Unable to open file");
|
||||
}
|
||||
|
||||
File::~File()
|
||||
{
|
||||
if (m_filehandle)
|
||||
{
|
||||
fclose(m_filehandle);
|
||||
m_filehandle = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void File::Seek(SeekDir seekdir, long offset)
|
||||
{
|
||||
fseek(m_filehandle, offset, s_stdioSeekDir[(int)seekdir]);
|
||||
}
|
||||
|
||||
size_t File::Tell()
|
||||
{
|
||||
return (size_t)ftell(m_filehandle);
|
||||
}
|
||||
|
||||
bool File::Eof()
|
||||
{
|
||||
return !!feof(m_filehandle);
|
||||
}
|
||||
|
||||
size_t File::Read(void* buffer, size_t size)
|
||||
{
|
||||
return fread(buffer, 1, size, m_filehandle);
|
||||
}
|
||||
|
||||
size_t File::Write(void const* buffer, size_t size)
|
||||
{
|
||||
return fwrite(buffer, size, 1, m_filehandle);
|
||||
}
|
||||
|
||||
void File::ReadStringBuffer(char* buffer, size_t bufferSize)
|
||||
{
|
||||
Seek(Seek_End, 0);
|
||||
size_t length = Tell();
|
||||
Seek(Seek_Begin, 0);
|
||||
|
||||
assert(length <= bufferSize);
|
||||
|
||||
Read(buffer, length);
|
||||
buffer[length] = '\0';
|
||||
}
|
||||
Reference in New Issue
Block a user