|
IrrlichtEngine
|
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