XPKDecompressor.hpp 833 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* Copyright (C) Teemu Suutari */
  2. #ifndef XPKDECOMPRESSOR_HPP
  3. #define XPKDECOMPRESSOR_HPP
  4. #include <cstddef>
  5. #include <cstdint>
  6. #include <string>
  7. #include "Decompressor.hpp"
  8. namespace ancient::internal
  9. {
  10. class XPKDecompressor
  11. {
  12. public:
  13. class State
  14. {
  15. public:
  16. State(const State&)=delete;
  17. State& operator=(const State&)=delete;
  18. State()=default;
  19. virtual ~State();
  20. uint32_t getRecursionLevel() const;
  21. };
  22. XPKDecompressor(const XPKDecompressor&)=delete;
  23. XPKDecompressor& operator=(const XPKDecompressor&)=delete;
  24. XPKDecompressor(uint32_t recursionLevel=0);
  25. virtual ~XPKDecompressor();
  26. virtual const std::string &getSubName() const noexcept=0;
  27. // Actual decompression
  28. virtual void decompressImpl(Buffer &rawData,const Buffer &previousData,bool verify)=0;
  29. protected:
  30. uint32_t _recursionLevel;
  31. };
  32. }
  33. #endif