IrrlichtEngine
IFileSystem.h
Go to the documentation of this file.
00001 // Copyright (C) 2002-2011 Nikolaus Gebhardt
00002 // This file is part of the "Irrlicht Engine".
00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
00004 
00005 #ifndef __I_FILE_SYSTEM_H_INCLUDED__
00006 #define __I_FILE_SYSTEM_H_INCLUDED__
00007 
00008 #include "IReferenceCounted.h"
00009 #include "IXMLReader.h"
00010 #include "IFileArchive.h"
00011 
00012 namespace irr
00013 {
00014 namespace video
00015 {
00016         class IVideoDriver;
00017 } // end namespace video
00018 namespace io
00019 {
00020 
00021 class IReadFile;
00022 class IWriteFile;
00023 class IFileList;
00024 class IXMLWriter;
00025 class IAttributes;
00026 
00027 
00029 
00032 class IFileSystem : public virtual IReferenceCounted
00033 {
00034 public:
00035 
00037 
00041         virtual IReadFile* createAndOpenFile(const path& filename) =0;
00042 
00044 
00054         virtual IReadFile* createMemoryReadFile(void* memory, s32 len, const path& fileName, bool deleteMemoryWhenDropped=false) =0;
00055 
00057 
00066         virtual IReadFile* createLimitReadFile(const path& fileName,
00067                         IReadFile* alreadyOpenedFile, long pos, long areaSize) =0;
00068 
00070 
00081         virtual IWriteFile* createMemoryWriteFile(void* memory, s32 len, const path& fileName, bool deleteMemoryWhenDropped=false) =0;
00082 
00083 
00085 
00092         virtual IWriteFile* createAndWriteFile(const path& filename, bool append=false) =0;
00093 
00095 
00116         virtual bool addFileArchive(const path& filename, bool ignoreCase=true,
00117                         bool ignorePaths=true,
00118                         E_FILE_ARCHIVE_TYPE archiveType=EFAT_UNKNOWN,
00119                         const core::stringc& password="",
00120                         IFileArchive** retArchive=0) =0;
00121 
00123 
00148         virtual bool addFileArchive(IReadFile* file, bool ignoreCase=true,
00149                         bool ignorePaths=true,
00150                         E_FILE_ARCHIVE_TYPE archiveType=EFAT_UNKNOWN,
00151                         const core::stringc& password="",
00152                         IFileArchive** retArchive=0) =0;
00153 
00155 
00157         virtual bool addFileArchive(IFileArchive* archive) =0;
00158 
00160         virtual u32 getFileArchiveCount() const =0;
00161 
00163 
00168         virtual bool removeFileArchive(u32 index) =0;
00169 
00171 
00182         virtual bool removeFileArchive(const path& filename) =0;
00183 
00185 
00190         virtual bool removeFileArchive(const IFileArchive* archive) =0;
00191 
00193 
00196         virtual bool moveFileArchive(u32 sourceIndex, s32 relative) =0;
00197 
00199         virtual IFileArchive* getFileArchive(u32 index) =0;
00200 
00202 
00204         virtual void addArchiveLoader(IArchiveLoader* loader) =0;
00205 
00207         virtual u32 getArchiveLoaderCount() const = 0;
00208 
00210 
00213         virtual IArchiveLoader* getArchiveLoader(u32 index) const = 0;
00214 
00216 
00228         _IRR_DEPRECATED_ virtual bool addZipFileArchive(const c8* filename, bool ignoreCase=true, bool ignorePaths=true)
00229         {
00230                 return addFileArchive(filename, ignoreCase, ignorePaths, EFAT_ZIP);
00231         }
00232 
00234 
00244         _IRR_DEPRECATED_ virtual bool addFolderFileArchive(const c8* filename, bool ignoreCase=true, bool ignorePaths=true)
00245         {
00246                 return addFileArchive(filename, ignoreCase, ignorePaths, EFAT_FOLDER);
00247         }
00248 
00250 
00262         _IRR_DEPRECATED_ virtual bool addPakFileArchive(const c8* filename, bool ignoreCase=true, bool ignorePaths=true)
00263         {
00264                 return addFileArchive(filename, ignoreCase, ignorePaths, EFAT_PAK);
00265         }
00266 
00268 
00269         virtual const path& getWorkingDirectory() =0;
00270 
00272 
00276         virtual bool changeWorkingDirectoryTo(const path& newDirectory) =0;
00277 
00279 
00281         virtual path getAbsolutePath(const path& filename) const =0;
00282 
00284 
00286         virtual path getFileDir(const path& filename) const =0;
00287 
00289 
00293         virtual path getFileBasename(const path& filename, bool keepExtension=true) const =0;
00294 
00296         virtual path& flattenFilename(path& directory, const path& root="/") const =0;
00297 
00299         virtual path getRelativeFilename(const path& filename, const path& directory) const =0;
00300 
00302 
00305         virtual IFileList* createFileList() =0;
00306 
00308 
00311         virtual IFileList* createEmptyFileList(const io::path& path, bool ignoreCase, bool ignorePaths) =0;
00312 
00314         virtual EFileSystemType setFileListSystem(EFileSystemType listType) =0;
00315 
00317 
00319         virtual bool existFile(const path& filename) const =0;
00320 
00322 
00328         virtual IXMLReader* createXMLReader(const path& filename) =0;
00329 
00331 
00337         virtual IXMLReader* createXMLReader(IReadFile* file) =0;
00338 
00340 
00346         virtual IXMLReaderUTF8* createXMLReaderUTF8(const path& filename) =0;
00347 
00349 
00355         virtual IXMLReaderUTF8* createXMLReaderUTF8(IReadFile* file) =0;
00356 
00358 
00362         virtual IXMLWriter* createXMLWriter(const path& filename) =0;
00363 
00365 
00369         virtual IXMLWriter* createXMLWriter(IWriteFile* file) =0;
00370 
00372 
00377         virtual IAttributes* createEmptyAttributes(video::IVideoDriver* driver=0) =0;
00378 };
00379 
00380 
00381 } // end namespace io
00382 } // end namespace irr
00383 
00384 #endif
00385