aboutsummaryrefslogtreecommitdiff
path: root/src/irrlicht/RezArchive.cpp
blob: 8b9ff056b8b3b49ed2d369fdce995fdc3819f135 (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
36
37
38
39
40
41
42
43
44
#include <RezArchive.h>
#include <RezReadFile.h>
#include <rez.h>
#include <memory>

irr::io::IReadFile *RezArchive::createAndOpenFile(const irr::io::path &filename)
{
    std::unique_ptr<rez::file> f = rez.open(filename.c_str());

    if (!f)
        return nullptr;

    return new RezReadFile(std::move(f), filename);
}

irr::io::IReadFile *RezArchive::createAndOpenFile(irr::u32 index)
{
    return nullptr;
}

const irr::io::IFileList *RezArchive::getFileList() const
{
    return filelist.get();
}

irr::io::E_FILE_ARCHIVE_TYPE RezArchive::getType() const
{
    return static_cast<irr::io::E_FILE_ARCHIVE_TYPE>
        (MAKE_IRR_ID('r', 'e', 'z', 0));
}

int RezArchive::parse()
{
    if (rez.parse())
        return -1;

    filelist = std::make_unique<RezFileList>(rez);
    return 0;
}

RezArchive::RezArchive(const irr::io::path &filename) :
    rez(filename.c_str())
{
}