46 lines
1.2 KiB
C++
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
|