Core: GetFileTime, GetFileLength, FileExists, DirectoryExists functions refactored, FileMapping improved

This commit is contained in:
Mirek Fidler 2024-03-25 12:10:20 +01:00
parent f7233ea69b
commit 4a99d79cb7
6 changed files with 135 additions and 61 deletions

View file

@ -549,13 +549,14 @@ public:
class FileMapping
{
public:
FileMapping(const char *file = NULL, bool delete_share = false);
FileMapping(const char *file = NULL);
~FileMapping() { Close(); }
bool Open(const char *file, bool delete_share = false);
bool Open(const char *file);
bool Create(const char *file, int64 filesize, bool delete_share = false);
bool Expand(int64 filesize);
bool Map(int64 offset, size_t len);
byte *Map(int64 mapoffset, size_t maplen);
byte *Map() { return Map(0, GetFileSize()); }
bool Unmap();
bool Close();
@ -572,16 +573,22 @@ public:
size_t GetRawCount() const { return rawsize; }
const byte *operator ~ () const { ASSERT(IsOpen()); return base; }
const byte *Begin() const { ASSERT(IsOpen()); return base; }
const byte *End() const { ASSERT(IsOpen()); return base + size; }
const byte *GetIter(int i) const { ASSERT(IsOpen() && i >= 0 && (size_t)i <= size); return base + i; }
const byte *begin() const { ASSERT(IsOpen()); return base; }
const byte *end() const { ASSERT(IsOpen()); return base + size; }
const byte& operator [] (int i) const { ASSERT(IsOpen() && i >= 0 && (size_t)i < size); return base[i]; }
byte *operator ~ () { ASSERT(IsOpen()); return base; }
byte *begin() { ASSERT(IsOpen()); return base; }
byte *end() { ASSERT(IsOpen()); return base + size; }
byte& operator [] (int i) { ASSERT(IsOpen() && i >= 0 && (size_t)i < size); return base[i]; }
const byte *Begin() const { ASSERT(IsOpen()); return base; }
const byte *End() const { ASSERT(IsOpen()); return base + size; }
const byte *GetIter(int i) const { ASSERT(IsOpen() && i >= 0 && (size_t)i <= size); return base + i; }
byte *Begin() { ASSERT(IsOpen()); return base; }
byte *End() { ASSERT(IsOpen()); return base + size; }
byte *GetIter(int i) { ASSERT(IsOpen() && i >= 0 && (size_t)i <= size); return base + i; }
byte& operator [] (int i) { ASSERT(IsOpen() && i >= 0 && (size_t)i < size); return base[i]; }
private:
#ifdef PLATFORM_WIN32
@ -601,6 +608,9 @@ private:
size_t size;
size_t rawsize;
bool write;
static int MappingGranularity();
};