aboutsummaryrefslogtreecommitdiff
path: root/src/irrlicht/RezFileList.h
blob: a5ce07788b2274e36c819df9a82dfe64cbd0c9a0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef REZFILELIST_H
#define REZFILELIST_H

#include <rez.h>
#include <irrlicht.h>
#include <vector>

class RezFileList : public irr::io::IFileList
{
public:
    RezFileList(const rez::ball &rez);
	virtual irr::u32 getFileCount() const;
	virtual const irr::io::path &getFileName(irr::u32 index) const;
	virtual const irr::io::path &getFullFileName(irr::u32 index) const;
	virtual irr::u32 getFileSize(irr::u32 index) const;
	virtual irr::u32 getFileOffset(irr::u32 index) const;
	virtual irr::u32 getID(irr::u32 index) const;
	virtual bool isDirectory(irr::u32 index) const;
	virtual irr::s32 findFile(const irr::io::path &filename, bool isFolder) const;
	virtual const irr::io::path &getPath() const;
	virtual irr::u32 addItem(const irr::io::path& fullPath, irr::u32 offset,
		irr::u32 size, bool isDirectory, irr::u32 id);
	virtual void sort();

protected:
    const rez::ball &rez;

private:
	irr::u32 getFileCount(const rez::dir &dir) const;
	int findFile(const irr::io::path &filename, bool isFolder,
		const rez::dir::direntry *entry) const;
	mutable std::vector<const rez::dir::direntry *> entries;
};

#endif