Skylicht Engine
Loading...
Searching...
No Matches
IFileArchive.h
1// Copyright (C) 2002-2012 Nikolaus Gebhardt/ Thomas Alten
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_ARCHIVE_H_INCLUDED__
6#define __I_FILE_ARCHIVE_H_INCLUDED__
7
8#include "IReadFile.h"
9#include "IFileList.h"
10
11namespace irr
12{
13
14namespace io
15{
16
19{
20 FILESYSTEM_NATIVE = 0, // Native OS FileSystem
21 FILESYSTEM_VIRTUAL // Virtual FileSystem
22};
23
26{
28 EFAT_ZIP = MAKE_IRR_ID('Z','I','P', 0),
29
31 EFAT_GZIP = MAKE_IRR_ID('g','z','i','p'),
32
34 EFAT_FOLDER = MAKE_IRR_ID('f','l','d','r'),
35
37 EFAT_PAK = MAKE_IRR_ID('P','A','K', 0),
38
40 EFAT_NPK = MAKE_IRR_ID('N','P','K', 0),
41
43 EFAT_TAR = MAKE_IRR_ID('T','A','R', 0),
44
46 EFAT_WAD = MAKE_IRR_ID('W','A','D', 0),
47
49 EFAT_UNKNOWN = MAKE_IRR_ID('u','n','k','n')
50};
51
53class IFileArchive : public virtual IReferenceCounted
54{
55public:
56
58
62 virtual IReadFile* createAndOpenFile(const path& filename) =0;
63
65
68 virtual IReadFile* createAndOpenFile(u32 index) =0;
69
71
73 virtual const IFileList* getFileList() const =0;
74
76 virtual E_FILE_ARCHIVE_TYPE getType() const { return EFAT_UNKNOWN; }
77
79 virtual const io::path& getArchiveName() const =0;
80
82
87};
88
90
94class IArchiveLoader : public virtual IReferenceCounted
95{
96public:
98
101 virtual bool isALoadableFileFormat(const path& filename) const =0;
102
104
107 virtual bool isALoadableFileFormat(io::IReadFile* file) const =0;
108
110
113 virtual bool isALoadableFileFormat(E_FILE_ARCHIVE_TYPE fileType) const =0;
114
116
120 virtual IFileArchive* createArchive(const path& filename, bool ignoreCase, bool ignorePaths) const =0;
121
123
127 virtual IFileArchive* createArchive(io::IReadFile* file, bool ignoreCase, bool ignorePaths) const =0;
128};
129
130
131} // end namespace io
132} // end namespace irr
133
134#endif
135
IReferenceCounted()
Constructor.
Definition IReferenceCounted.h:50
Class which is able to create an archive from a file.
Definition IFileArchive.h:95
virtual IFileArchive * createArchive(const path &filename, bool ignoreCase, bool ignorePaths) const =0
Creates an archive from the filename.
virtual IFileArchive * createArchive(io::IReadFile *file, bool ignoreCase, bool ignorePaths) const =0
Creates an archive from the file.
virtual bool isALoadableFileFormat(const path &filename) const =0
Check if the file might be loaded by this class.
virtual bool isALoadableFileFormat(io::IReadFile *file) const =0
Check if the file might be loaded by this class.
virtual bool isALoadableFileFormat(E_FILE_ARCHIVE_TYPE fileType) const =0
Check to see if the loader can create archives of this type.
The FileArchive manages archives and provides access to files inside them.
Definition IFileArchive.h:54
virtual const io::path & getArchiveName() const =0
return the name (id) of the file Archive
virtual IReadFile * createAndOpenFile(u32 index)=0
Opens a file based on its position in the file list.
virtual IReadFile * createAndOpenFile(const path &filename)=0
Opens a file based on its name.
virtual const IFileList * getFileList() const =0
Returns the complete file tree.
core::stringc Password
An optionally used password string.
Definition IFileArchive.h:86
virtual E_FILE_ARCHIVE_TYPE getType() const
get the archive type
Definition IFileArchive.h:76
Provides a list of files and folders.
Definition IFileList.h:20
Interface providing read acess to a file.
Definition IReadFile.h:18
string< c8 > stringc
Typedef for character strings.
Definition irrString.h:1373
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.
Definition IFileArchive.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.
Definition IFileArchive.h:26
@ EFAT_TAR
A Tape ARchive.
Definition IFileArchive.h:43
@ EFAT_FOLDER
A virtual directory.
Definition IFileArchive.h:34
@ EFAT_UNKNOWN
The type of this archive is unknown.
Definition IFileArchive.h:49
@ EFAT_WAD
A wad Archive, Quake2, Halflife.
Definition IFileArchive.h:46
@ EFAT_ZIP
A PKZIP archive.
Definition IFileArchive.h:28
@ EFAT_GZIP
A gzip archive.
Definition IFileArchive.h:31
@ EFAT_PAK
An ID Software PAK archive.
Definition IFileArchive.h:37
@ EFAT_NPK
A Nebula Device archive.
Definition IFileArchive.h:40
Everything in the Irrlicht Engine can be found in this namespace.
Definition Skylicht.h:33
unsigned int u32
32 bit unsigned variable.
Definition irrTypes.h:58