Irrlicht 3D Engine
Loading...
Searching...
No Matches
IFileSystem.h
Go to the documentation of this file.
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5#ifndef __I_FILE_SYSTEM_H_INCLUDED__
6#define __I_FILE_SYSTEM_H_INCLUDED__
7
8#include "IReferenceCounted.h"
9#include "IXMLReader.h"
10#include "IFileArchive.h"
11
12namespace irr
13{
14namespace video
15{
16 class IVideoDriver;
17} // end namespace video
18namespace io
19{
20
21class IReadFile;
22class IWriteFile;
23class IFileList;
24class IXMLWriter;
25class IAttributes;
26
27
29
32class IFileSystem : public virtual IReferenceCounted
33{
34public:
35
37
41 virtual IReadFile* createAndOpenFile(const path& filename) =0;
42
44
54 virtual IReadFile* createMemoryReadFile(void* memory, s32 len, const path& fileName, bool deleteMemoryWhenDropped=false) =0;
55
57
66 virtual IReadFile* createLimitReadFile(const path& fileName,
67 IReadFile* alreadyOpenedFile, long pos, long areaSize) =0;
68
70
81 virtual IWriteFile* createMemoryWriteFile(void* memory, s32 len, const path& fileName, bool deleteMemoryWhenDropped=false) =0;
82
83
85
92 virtual IWriteFile* createAndWriteFile(const path& filename, bool append=false) =0;
93
95
116 virtual bool addFileArchive(const path& filename, bool ignoreCase=true,
117 bool ignorePaths=true,
119 const core::stringc& password="",
120 IFileArchive** retArchive=0) =0;
121
123
148 virtual bool addFileArchive(IReadFile* file, bool ignoreCase=true,
149 bool ignorePaths=true,
151 const core::stringc& password="",
152 IFileArchive** retArchive=0) =0;
153
155
157 virtual bool addFileArchive(IFileArchive* archive) =0;
158
160 virtual u32 getFileArchiveCount() const =0;
161
163
168 virtual bool removeFileArchive(u32 index) =0;
169
171
182 virtual bool removeFileArchive(const path& filename) =0;
183
185
190 virtual bool removeFileArchive(const IFileArchive* archive) =0;
191
193
196 virtual bool moveFileArchive(u32 sourceIndex, s32 relative) =0;
197
199 virtual IFileArchive* getFileArchive(u32 index) =0;
200
202
204 virtual void addArchiveLoader(IArchiveLoader* loader) =0;
205
207 virtual u32 getArchiveLoaderCount() const = 0;
208
210
213 virtual IArchiveLoader* getArchiveLoader(u32 index) const = 0;
214
216
228 _IRR_DEPRECATED_ virtual bool addZipFileArchive(const c8* filename, bool ignoreCase=true, bool ignorePaths=true)
229 {
230 return addFileArchive(filename, ignoreCase, ignorePaths, EFAT_ZIP);
231 }
232
234
244 _IRR_DEPRECATED_ virtual bool addFolderFileArchive(const c8* filename, bool ignoreCase=true, bool ignorePaths=true)
245 {
246 return addFileArchive(filename, ignoreCase, ignorePaths, EFAT_FOLDER);
247 }
248
250
262 _IRR_DEPRECATED_ virtual bool addPakFileArchive(const c8* filename, bool ignoreCase=true, bool ignorePaths=true)
263 {
264 return addFileArchive(filename, ignoreCase, ignorePaths, EFAT_PAK);
265 }
266
268
269 virtual const path& getWorkingDirectory() =0;
270
272
276 virtual bool changeWorkingDirectoryTo(const path& newDirectory) =0;
277
279
281 virtual path getAbsolutePath(const path& filename) const =0;
282
284
286 virtual path getFileDir(const path& filename) const =0;
287
289
293 virtual path getFileBasename(const path& filename, bool keepExtension=true) const =0;
294
296 virtual path& flattenFilename(path& directory, const path& root="/") const =0;
297
299 virtual path getRelativeFilename(const path& filename, const path& directory) const =0;
300
302
306
308
311 virtual IFileList* createEmptyFileList(const io::path& path, bool ignoreCase, bool ignorePaths) =0;
312
315
317
319 virtual bool existFile(const path& filename) const =0;
320
322
328 virtual IXMLReader* createXMLReader(const path& filename) =0;
329
331
338
340
346 virtual IXMLReaderUTF8* createXMLReaderUTF8(const path& filename) =0;
347
349
356
358
362 virtual IXMLWriter* createXMLWriter(const path& filename) =0;
363
365
370
372
378};
379
380
381} // end namespace io
382} // end namespace irr
383
384#endif
385
IReferenceCounted()
Constructor.
Class which is able to create an archive from a file.
Provides a generic interface for attributes and their values and the possiblity to serialize them.
Definition IAttributes.h:42
The FileArchive manages archives and provides access to files inside them.
Provides a list of files and folders.
Definition IFileList.h:20
The FileSystem manages files and archives and provides access to them.
Definition IFileSystem.h:33
virtual bool removeFileArchive(const path &filename)=0
Removes an archive from the file system.
virtual bool existFile(const path &filename) const =0
Determines if a file exists and could be opened.
virtual IXMLReader * createXMLReader(const path &filename)=0
Creates a XML Reader from a file which returns all parsed strings as wide characters (wchar_t*).
virtual path getFileBasename(const path &filename, bool keepExtension=true) const =0
Get the base part of a filename, i.e. the name without the directory part.
virtual IWriteFile * createAndWriteFile(const path &filename, bool append=false)=0
Opens a file for write access.
virtual IWriteFile * createMemoryWriteFile(void *memory, s32 len, const path &fileName, bool deleteMemoryWhenDropped=false)=0
Creates an IWriteFile interface for accessing memory like a file.
virtual IAttributes * createEmptyAttributes(video::IVideoDriver *driver=0)=0
Creates a new empty collection of attributes, usable for serialization and more.
virtual _IRR_DEPRECATED_ bool addPakFileArchive(const c8 *filename, bool ignoreCase=true, bool ignorePaths=true)
Adds a pak archive to the file system.
virtual IXMLReader * createXMLReader(IReadFile *file)=0
Creates a XML Reader from a file which returns all parsed strings as wide characters (wchar_t*).
virtual IReadFile * createMemoryReadFile(void *memory, s32 len, const path &fileName, bool deleteMemoryWhenDropped=false)=0
Creates an IReadFile interface for accessing memory like a file.
virtual IXMLWriter * createXMLWriter(IWriteFile *file)=0
Creates a XML Writer from a file.
virtual const path & getWorkingDirectory()=0
Get the current working directory.
virtual path & flattenFilename(path &directory, const path &root="/") const =0
flatten a path and file name for example: "/you/me/../." becomes "/you"
virtual EFileSystemType setFileListSystem(EFileSystemType listType)=0
Set the active type of file system.
virtual path getAbsolutePath(const path &filename) const =0
Converts a relative path to an absolute (unique) path, resolving symbolic links if required.
virtual _IRR_DEPRECATED_ bool addFolderFileArchive(const c8 *filename, bool ignoreCase=true, bool ignorePaths=true)
Adds an unzipped archive (or basedirectory with subdirectories..) to the file system.
virtual u32 getFileArchiveCount() const =0
Get the number of archives currently attached to the file system.
virtual bool changeWorkingDirectoryTo(const path &newDirectory)=0
Changes the current working directory.
virtual IFileList * createFileList()=0
Creates a list of files and directories in the current working directory and returns it.
virtual IXMLWriter * createXMLWriter(const path &filename)=0
Creates a XML Writer from a file.
virtual IFileArchive * getFileArchive(u32 index)=0
Get the archive at a given index.
virtual path getRelativeFilename(const path &filename, const path &directory) const =0
Get the relative filename, relative to the given directory.
virtual IXMLReaderUTF8 * createXMLReaderUTF8(const path &filename)=0
Creates a XML Reader from a file which returns all parsed strings as ASCII/UTF-8 characters (char*).
virtual IXMLReaderUTF8 * createXMLReaderUTF8(IReadFile *file)=0
Creates a XML Reader from a file which returns all parsed strings as ASCII/UTF-8 characters (char*).
virtual IArchiveLoader * getArchiveLoader(u32 index) const =0
Retrieve the given archive loader.
virtual bool removeFileArchive(u32 index)=0
Removes an archive from the file system.
virtual IReadFile * createAndOpenFile(const path &filename)=0
Opens a file for read access.
virtual bool removeFileArchive(const IFileArchive *archive)=0
Removes an archive from the file system.
virtual bool addFileArchive(IReadFile *file, bool ignoreCase=true, bool ignorePaths=true, E_FILE_ARCHIVE_TYPE archiveType=EFAT_UNKNOWN, const core::stringc &password="", IFileArchive **retArchive=0)=0
Adds an archive to the file system.
virtual void addArchiveLoader(IArchiveLoader *loader)=0
Adds an external archive loader to the engine.
virtual path getFileDir(const path &filename) const =0
Get the directory a file is located in.
virtual IFileList * createEmptyFileList(const io::path &path, bool ignoreCase, bool ignorePaths)=0
Creates an empty filelist.
virtual u32 getArchiveLoaderCount() const =0
Gets the number of archive loaders currently added.
virtual IReadFile * createLimitReadFile(const path &fileName, IReadFile *alreadyOpenedFile, long pos, long areaSize)=0
Creates an IReadFile interface for accessing files inside files.
virtual bool moveFileArchive(u32 sourceIndex, s32 relative)=0
Changes the search order of attached archives.
virtual bool addFileArchive(IFileArchive *archive)=0
Adds an archive to the file system.
virtual _IRR_DEPRECATED_ bool addZipFileArchive(const c8 *filename, bool ignoreCase=true, bool ignorePaths=true)
Adds a zip archive to the file system.
virtual bool addFileArchive(const path &filename, bool ignoreCase=true, bool ignorePaths=true, E_FILE_ARCHIVE_TYPE archiveType=EFAT_UNKNOWN, const core::stringc &password="", IFileArchive **retArchive=0)=0
Adds an archive to the file system.
Interface providing read acess to a file.
Definition IReadFile.h:18
Interface providing write access to a file.
Definition IWriteFile.h:18
Interface providing methods for making it easier to write XML files.
Definition IXMLWriter.h:21
Interface to driver which is able to perform 2d and 3d graphics functions.
#define _IRR_DEPRECATED_
Defines a deprecated macro which generates a warning at compile time.
Definition irrTypes.h:195
string< c8 > stringc
Typedef for character strings.
Definition irrString.h:1358
This namespace provides interfaces for input/output: Reading and writing files, accessing zip archive...
Definition EAttributes.h:11
EFileSystemType
FileSystemType: which Filesystem should be used for e.g. browsing.
IIrrXMLReader< c8, IReferenceCounted > IXMLReaderUTF8
An xml reader for ASCII or UTF-8 characters, derived from IReferenceCounted.
Definition IXMLReader.h:25
IIrrXMLReader< wchar_t, IReferenceCounted > IXMLReader
An xml reader for wide characters, derived from IReferenceCounted.
Definition IXMLReader.h:19
core::string< fschar_t > path
Type used for all file system related strings.
Definition path.h:17
E_FILE_ARCHIVE_TYPE
Contains the different types of archives.
@ EFAT_FOLDER
A virtual directory.
@ EFAT_UNKNOWN
The type of this archive is unknown.
@ EFAT_ZIP
A PKZIP archive.
@ EFAT_PAK
An ID Software PAK archive.
The video namespace contains classes for accessing the video driver. All 2d and 3d rendering is done ...
Everything in the Irrlicht Engine can be found in this namespace.
Definition aabbox3d.h:13
unsigned int u32
32 bit unsigned variable.
Definition irrTypes.h:58
char c8
8 bit character variable.
Definition irrTypes.h:31
signed int s32
32 bit signed variable.
Definition irrTypes.h:66