no engine anymore
This commit is contained in:
71
public/ifilesystem.h
Normal file
71
public/ifilesystem.h
Normal file
@@ -0,0 +1,71 @@
|
||||
#ifndef FILESYSTEM_H
|
||||
#define FILESYSTEM_H
|
||||
|
||||
#include "iappsystem.h"
|
||||
#include "tier0/platform.h"
|
||||
|
||||
#define FILESYSTEM_INTERFACE_NAME "FileSystem001"
|
||||
#define FILESYSTEM_BACKEND_INTERFACE_NAME "FileSystemBackend001"
|
||||
#define FILESYSTEM_PAK_INTERFACE_NAME "FileSystemPAK001"
|
||||
|
||||
enum EFileMode
|
||||
{
|
||||
FILEMODE_READ = 0x01,
|
||||
FILEMODE_WRITE = 0x02,
|
||||
FILEMODE_APPEND = 0x04,
|
||||
};
|
||||
|
||||
enum EFileType {
|
||||
FILETYPE_NONE,
|
||||
FILETYPE_SYSTEM,
|
||||
FILETYPE_PAK,
|
||||
};
|
||||
|
||||
enum ESeekMode
|
||||
{
|
||||
SEEKMODE_SET,
|
||||
SEEKMODE_RELATIVE_START,
|
||||
SEEKMODE_RELATIVE_END,
|
||||
};
|
||||
|
||||
abstract_class IFileSystem;
|
||||
|
||||
class IFileHandle
|
||||
{
|
||||
public:
|
||||
IFileSystem *m_pFileSystem;
|
||||
|
||||
size_t Write( const void *pData, size_t nDataSize );
|
||||
size_t Read( void *pData, size_t nDataSize );
|
||||
size_t Seek( ESeekMode eSeekMode, size_t nOffset );
|
||||
size_t Tell( void );
|
||||
void Close( void );
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// IFileSystem is an app system which manages files, could have different
|
||||
// file systems etc. Because of that there is base file system which manages
|
||||
// others. PAK files are opened first, then mounted stuff comes second and
|
||||
// host's system last.
|
||||
//----------------------------------------------------------------------------
|
||||
abstract_class IFileSystem: public IAppSystem
|
||||
{
|
||||
public:
|
||||
virtual IFileHandle *Open( const char *szFileName, int eOpCode ) = 0;
|
||||
virtual size_t Write( IFileHandle *pFile, const void *pData, size_t nDataSize ) = 0;
|
||||
virtual size_t Read( IFileHandle *pFile, void *pData, size_t nDataSize ) = 0;
|
||||
|
||||
virtual size_t Seek( IFileHandle *pFile, ESeekMode eSeekMode, size_t nOffset ) = 0;
|
||||
virtual size_t Tell( IFileHandle *pFile ) = 0;
|
||||
|
||||
virtual void Close( IFileHandle *pFile ) = 0;
|
||||
};
|
||||
|
||||
extern IFileSystem *filesystem;
|
||||
extern IFileSystem *filesystem_backend;
|
||||
extern IFileSystem *filesystem_pak;
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user