49 lines
769 B
C
49 lines
769 B
C
|
/*
|
||
|
* unrar.h
|
||
|
* -------
|
||
|
* Purpose: Header file for .rar loader
|
||
|
* Notes : (currently none)
|
||
|
* Authors: OpenMPT Devs
|
||
|
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||
|
*/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "openmpt/all/BuildSettings.hpp"
|
||
|
|
||
|
#include "archive.h"
|
||
|
|
||
|
OPENMPT_NAMESPACE_BEGIN
|
||
|
|
||
|
#ifdef MPT_WITH_UNRAR
|
||
|
|
||
|
class CRarArchive
|
||
|
: public ArchiveBase
|
||
|
{
|
||
|
|
||
|
protected:
|
||
|
|
||
|
std::unique_ptr<OnDiskFileWrapper> diskFile;
|
||
|
bool captureCurrentFile = false;
|
||
|
|
||
|
public:
|
||
|
CRarArchive(FileReader &file);
|
||
|
~CRarArchive() override;
|
||
|
|
||
|
bool ExtractFile(std::size_t index) override;
|
||
|
|
||
|
public:
|
||
|
|
||
|
void RARCallbackProcessData(const char * data, std::size_t size);
|
||
|
|
||
|
private:
|
||
|
|
||
|
void Reset();
|
||
|
void ResetFile();
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif // MPT_WITH_UNRAR
|
||
|
|
||
|
OPENMPT_NAMESPACE_END
|