1
0

Moved AString reading hack to cFile.

This commit is contained in:
Mattes D
2015-06-24 16:38:40 +02:00
parent 735d590abf
commit 7379848ae5
3 changed files with 49 additions and 24 deletions

View File

@@ -147,7 +147,7 @@ bool cFile::IsEOF(void) const
int cFile::Read (void * iBuffer, size_t iNumBytes)
int cFile::Read (void * a_Buffer, size_t a_NumBytes)
{
ASSERT(IsOpen());
@@ -156,14 +156,35 @@ int cFile::Read (void * iBuffer, size_t iNumBytes)
return -1;
}
return static_cast<int>(fread(iBuffer, 1, static_cast<size_t>(iNumBytes), m_File)); // fread() returns the portion of Count parameter actually read, so we need to send iNumBytes as Count
return static_cast<int>(fread(a_Buffer, 1, a_NumBytes, m_File)); // fread() returns the portion of Count parameter actually read, so we need to send a_a_NumBytes as Count
}
int cFile::Write(const void * iBuffer, size_t iNumBytes)
AString cFile::Read(size_t a_NumBytes)
{
ASSERT(IsOpen());
if (!IsOpen())
{
return AString();
}
// HACK: This depends on the knowledge that AString::data() returns the internal buffer, rather than a copy of it.
AString res;
res.resize(a_NumBytes);
auto newSize = fread(const_cast<char *>(res.data()), 1, a_NumBytes, m_File);
res.resize(newSize);
return res;
}
int cFile::Write(const void * a_Buffer, size_t a_NumBytes)
{
ASSERT(IsOpen());
@@ -172,7 +193,7 @@ int cFile::Write(const void * iBuffer, size_t iNumBytes)
return -1;
}
int res = static_cast<int>(fwrite(iBuffer, 1, static_cast<size_t>(iNumBytes), m_File)); // fwrite() returns the portion of Count parameter actually written, so we need to send iNumBytes as Count
int res = static_cast<int>(fwrite(a_Buffer, 1, a_NumBytes, m_File)); // fwrite() returns the portion of Count parameter actually written, so we need to send a_NumBytes as Count
return res;
}