r5sdk/r5dev/public/ifile.h
Kawe Mazidjatari aa72579656 Heavy FileSystem upgrades
Implement VFTable's to interface with engine (for the most part mapped out, only the new VPK methods needs further reversing).
This exposes a good majority of the FileSystem implementation of the engine, to the SDK.
2022-08-13 11:24:55 +02:00

64 lines
1.9 KiB
C++

#ifndef IFILE_H
#define IFILE_H
#include "public/ifilesystem.h"
//-----------------------------------------------------------------------------
// Per-file worker classes
//-----------------------------------------------------------------------------
abstract_class CStdFilesystemFile
{
public:
virtual ~CStdFilesystemFile() {}
virtual void FS_setbufsize(unsigned nBytes) = 0;
virtual void FS_fclose() = 0;
virtual void FS_fseek(int64 pos, int seekType) = 0;
virtual long FS_ftell() = 0;
virtual int FS_feof() = 0;
virtual size_t FS_fread(void* dest, size_t destSize, size_t size) = 0;
virtual size_t FS_fwrite(const void* src, size_t size) = 0;
virtual bool FS_setmode(FileMode_t mode) = 0;
virtual size_t FS_vfprintf(const char* fmt, va_list list) = 0;
virtual int FS_ferror() = 0;
virtual int FS_fflush() = 0;
virtual char* FS_fgets(char* dest, int destSize) = 0;
virtual int FS_GetSectorSize() { return 1; }
};
//---------------------------------------------------------
class CStdioFile : public CStdFilesystemFile
{
public:
/* // [ !!! IMPLEMENTED IN ENGINE !!! ]
static CStdioFile* FS_fopen(const char* filename, const char* options, int64* size);
virtual void FS_setbufsize(unsigned nBytes);
virtual void FS_fclose();
virtual void FS_fseek(int64 pos, int seekType);
virtual long FS_ftell();
virtual int FS_feof();
virtual size_t FS_fread(void* dest, size_t destSize, size_t size);
virtual size_t FS_fwrite(const void* src, size_t size);
virtual bool FS_setmode(FileMode_t mode);
virtual size_t FS_vfprintf(const char* fmt, va_list list);
virtual int FS_ferror();
virtual int FS_fflush();
virtual char* FS_fgets(char* dest, int destSize);*/
#ifdef POSIX
static CUtlMap< ino_t, CThreadMutex* > m_LockedFDMap;
static CThreadMutex m_MutexLockedFD;
#endif
private:
CStdioFile(FILE* pFile, bool bWriteable)
: m_pFile(pFile), m_bWriteable(bWriteable)
{
}
FILE* m_pFile;
bool m_bWriteable;
};
#endif // IFILE_H