2022-08-13 11:24:55 +02:00
|
|
|
#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:
|
2022-08-15 14:44:54 +02:00
|
|
|
// [ !!! IMPLEMENTED IN ENGINE !!! ]
|
2022-08-13 11:24:55 +02:00
|
|
|
static CStdioFile* FS_fopen(const char* filename, const char* options, int64* size);
|
|
|
|
|
2022-08-15 14:44:54 +02:00
|
|
|
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;
|
2022-08-13 11:24:55 +02:00
|
|
|
|
|
|
|
#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
|