winamp/Src/external_dependencies/openmpt-trunk/include/ancient/src/XPKDecompressor.hpp

49 lines
833 B
C++

/* Copyright (C) Teemu Suutari */
#ifndef XPKDECOMPRESSOR_HPP
#define XPKDECOMPRESSOR_HPP
#include <cstddef>
#include <cstdint>
#include <string>
#include "Decompressor.hpp"
namespace ancient::internal
{
class XPKDecompressor
{
public:
class State
{
public:
State(const State&)=delete;
State& operator=(const State&)=delete;
State()=default;
virtual ~State();
uint32_t getRecursionLevel() const;
};
XPKDecompressor(const XPKDecompressor&)=delete;
XPKDecompressor& operator=(const XPKDecompressor&)=delete;
XPKDecompressor(uint32_t recursionLevel=0);
virtual ~XPKDecompressor();
virtual const std::string &getSubName() const noexcept=0;
// Actual decompression
virtual void decompressImpl(Buffer &rawData,const Buffer &previousData,bool verify)=0;
protected:
uint32_t _recursionLevel;
};
}
#endif