IOFile: Make origin parameter to Seek() an enum class.

This commit is contained in:
Admiral H. Curtiss
2022-01-29 05:58:31 +01:00
parent c2d8191fbb
commit 36cfcb530f
26 changed files with 116 additions and 78 deletions

View File

@ -106,9 +106,25 @@ u64 IOFile::GetSize() const
return 0;
}
bool IOFile::Seek(s64 off, int origin)
bool IOFile::Seek(s64 offset, SeekOrigin origin)
{
if (!IsOpen() || 0 != fseeko(m_file, off, origin))
int fseek_origin;
switch (origin)
{
case SeekOrigin::Begin:
fseek_origin = SEEK_SET;
break;
case SeekOrigin::Current:
fseek_origin = SEEK_CUR;
break;
case SeekOrigin::End:
fseek_origin = SEEK_END;
break;
default:
return false;
}
if (!IsOpen() || 0 != fseeko(m_file, offset, fseek_origin))
m_good = false;
return m_good;

View File

@ -13,6 +13,13 @@
namespace File
{
enum class SeekOrigin
{
Begin,
Current,
End,
};
// simple wrapper for cstdlib file functions to
// hopefully will make error checking easier
// and make forgetting an fclose() harder
@ -89,7 +96,7 @@ public:
std::FILE* GetHandle() { return m_file; }
void SetHandle(std::FILE* file);
bool Seek(s64 off, int origin);
bool Seek(s64 offset, SeekOrigin origin);
u64 Tell() const;
u64 GetSize() const;
bool Resize(u64 size);

View File

@ -101,7 +101,7 @@ public:
m_num_entries++;
}
m_file.Clear();
m_file.Seek(last_valid_value_start, SEEK_SET);
m_file.Seek(last_valid_value_start, File::SeekOrigin::Begin);
return m_num_entries;
}