2024-07-31 19:35:12 +12:00
|
|
|
#pragma once
|
2020-05-09 21:05:58 -04:00
|
|
|
|
|
|
|
|
#include "LZSSDecompressor.h"
|
|
|
|
|
#include "IFileReader.h"
|
|
|
|
|
|
|
|
|
|
class XADPrefixCode;
|
|
|
|
|
|
2024-07-31 19:35:12 +12:00
|
|
|
class CompactProLZHDecompressor : public LZSSDecompressor
|
|
|
|
|
{
|
2020-05-09 21:05:58 -04:00
|
|
|
public:
|
2024-07-31 19:35:12 +12:00
|
|
|
explicit CompactProLZHDecompressor(int blocksize);
|
2020-05-09 21:05:58 -04:00
|
|
|
~CompactProLZHDecompressor();
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
bool nextLiteralOrOffset(int *offset, int *length, int &result) override;
|
|
|
|
|
bool resetLZSSHandle() override;
|
|
|
|
|
|
|
|
|
|
XADPrefixCode *allocAndParseCodeOfSize(int size);
|
|
|
|
|
|
|
|
|
|
XADPrefixCode *literalcode, *lengthcode, *offsetcode;
|
|
|
|
|
int blocksize, blockcount;
|
2024-07-31 19:35:12 +12:00
|
|
|
IFileReader::FilePos_t blockstart;
|
|
|
|
|
};
|