Files
funnygame/public/filesystem.h
2025-07-20 00:45:31 +03:00

46 lines
1.2 KiB
C++

#ifndef FILESYSTEM_H
#define FILESYSTEM_H
#include "tier0/platform.h"
#include "tier1/utlbuffer.h"
#include "tier1/utlstring.h"
#include "interface.h"
enum EFileOptions
{
IFILE_READ,
IFILE_WRITE,
IFILE_APPEND
};
typedef struct FileHandle_s
{
FILE *file;
FILE *parent;
EFileOptions options;
size_t nSize;
size_t nOffset;
size_t nPtr;
} *FileHandle_t;
interface IFileSystem: public IInterface
{
public:
virtual void InitFilesystem( void ) = 0;
virtual void AddGameDirectory( const char *psz ) = 0;
virtual bool LoadPackFile( const char *szFilename ) = 0;
virtual void CreatePath( const char *szPath ) = 0;
virtual FileHandle_t Open( const char *szFilename, EFileOptions options ) = 0;
virtual void Close( FileHandle_t file ) = 0;
virtual size_t Size( FileHandle_t file ) = 0;
virtual size_t Read( FileHandle_t file, void *pOutput, size_t nSize) = 0;
virtual size_t ReadLine( FileHandle_t file, void *pOutput, size_t nSize) = 0;
virtual size_t Write( FileHandle_t file, void *pInput, size_t nSize) = 0;
virtual size_t Seek( FileHandle_t file, size_t nSize) = 0;
virtual size_t Tell( FileHandle_t file, size_t nSize) = 0;
virtual size_t fprintf( FileHandle_t file, const char *szFormat, ...) = 0;
};
IFileSystem *FileSystem();
#endif