class EE::System::Pak

Overview

Quake 2 PAK handler. More…

#include <pak.hpp>

class Pak: public EE::System::Pack {
public:
    // structs

    struct pakEntry;
    struct pakFile;
    struct pakHeader;

    // construction

    ~Pak();

    // methods

    static Pak* New();
    virtual bool create(const std::string& path);
    virtual bool open(const std::string& path);
    virtual bool close();
    virtual bool addFile(const std::string& path, const std::string& inpack);
    virtual bool addFile(std::vector<Uint8>& data, const std::string& inpack);
    virtual bool addFile(const Uint8* data, const Uint32& dataSize, const std::string& inpack);
    virtual bool addFiles(std::map<std::string, std::string> paths);
    virtual bool eraseFile(const std::string& path);
    virtual bool eraseFiles(const std::vector<std::string>& paths);
    virtual bool extractFile(const std::string& path, const std::string& dest);
    virtual bool extractFileToMemory(const std::string& path, std::vector<Uint8>& data);
    virtual bool extractFileToMemory(const std::string& path, ScopedBuffer& data);
    virtual Int32 exists(const std::string& path);
    virtual Int8 checkPack();
    virtual std::vector<std::string> getFileList();
    virtual bool isOpen() const;
    virtual std::string getPackPath();
    virtual IOStream* getFileStream(const std::string& path);
};

Inherited Members

public:
    // methods

    void lock();
    void unlock();
    int tryLock();
    virtual bool create(const std::string& path) = 0;
    virtual bool open(const std::string& path) = 0;
    virtual bool close() = 0;
    virtual bool addFile(const std::string& path, const std::string& inpack) = 0;
    virtual bool addFile(std::vector<Uint8>& data, const std::string& inpack) = 0;
    virtual bool addFile(const Uint8* data, const Uint32& dataSize, const std::string& inpack) = 0;
    virtual bool addFiles(std::map<std::string, std::string> paths) = 0;
    virtual bool eraseFile(const std::string& path) = 0;
    virtual bool eraseFiles(const std::vector<std::string>& paths) = 0;
    virtual bool extractFile(const std::string& path, const std::string& dest) = 0;
    virtual bool extractFileToMemory(const std::string& path, std::vector<Uint8>& data) = 0;
    virtual bool extractFileToMemory(const std::string& path, ScopedBuffer& data) = 0;
    virtual Int32 exists(const std::string& path) = 0;
    virtual Int8 checkPack() = 0;
    virtual std::vector<std::string> getFileList() = 0;
    virtual bool isOpen() const;
    virtual std::string getPackPath() = 0;
    virtual IOStream* getFileStream(const std::string& path) = 0;

Detailed Documentation

Quake 2 PAK handler.

Methods

virtual bool create(const std::string& path)

Creates a new pakFile

virtual bool open(const std::string& path)

Open a pakFile

virtual bool close()

Close the pakFile

virtual bool addFile(const std::string& path, const std::string& inpack)

Add a file to the pakFile

Parameters:

path

Path to the file in the disk

inpack

Path that will have the file inside the pak

Returns:

True if success

virtual bool addFile(std::vector<Uint8>& data, const std::string& inpack)

Add a new file from memory

virtual bool addFile(const Uint8* data, const Uint32& dataSize, const std::string& inpack)

Add a new file from memory

virtual bool addFiles(std::map<std::string, std::string> paths)

Add a map of files to the pakFile ( myMap[ myFilepath ] = myInPakFilepath )

virtual bool eraseFile(const std::string& path)

Erase a file from the pakFile. ( This will create a new pakFile without that file, so, can be slow )

virtual bool eraseFiles(const std::vector<std::string>& paths)

Erase all passed files from the pakFile. ( This will create a new pakFile without that file, so, can be slow )

virtual bool extractFile(const std::string& path, const std::string& dest)

Extract a file from the pakFile

virtual bool extractFileToMemory(const std::string& path, std::vector<Uint8>& data)

Extract a file to memory from the pakFile

virtual bool extractFileToMemory(const std::string& path, ScopedBuffer& data)

Extract a file to memory from the pakFile

virtual Int32 exists(const std::string& path)

Check if a file exists in the pakFile and return the number of the file, otherwise return -1.

virtual Int8 checkPack()

Check the integrity of the pakFile.

If return 0 integrity OK. -1 wrong indentifier. -2 wrong header.

virtual std::vector<std::string> getFileList()

Returns:

a vector with all the files inside the pakFile

virtual bool isOpen() const

Returns:

If the PAK file is open

virtual std::string getPackPath()

Returns:

The file path of the opened package

virtual IOStream* getFileStream(const std::string& path)

Open a file stream for reading