#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