Tileson 1.4.0
A helpful json parser for Tiled maps
Loading...
Searching...
No Matches
Lzma.hpp
Go to the documentation of this file.
1//
2// Created by robin on 16.01.2021.
3//
4//#include "../../extras/pocketlzma.hpp"
5#ifdef POCKETLZMA_POCKETLZMA_H
6
7#ifndef TILESON_LZMA_HPP
8#define TILESON_LZMA_HPP
9
10namespace tson
11{
12 class Lzma : public IDecompressor<std::vector<uint8_t>, std::vector<uint8_t>>
13 {
14 public:
15 inline const std::string &name() const override
16 {
17 return NAME;
18 }
19
20 inline std::vector<uint8_t> decompress(const std::vector<uint8_t> &input) override
21 {
22 std::vector<uint8_t> out;
23
24 plz::PocketLzma p;
25 plz::StatusCode status = p.decompress(input, out);
26
27 if(status != plz::StatusCode::Ok)
28 return std::vector<uint8_t>();
29
30 return out;
31 }
32
33 inline std::vector<uint8_t> decompressFile(const fs::path &path) override
34 {
35 std::vector<uint8_t> in;
36 std::vector<uint8_t> out;
37
38 plz::PocketLzma p;
39 plz::FileStatus fileStatus = plz::File::FromFile(path.generic_string(), in);
40 if(fileStatus.status() != plz::FileStatus::Code::Ok)
41 return std::vector<uint8_t>();
42
43 plz::StatusCode status = p.decompress(in, out);
44
45 if(status != plz::StatusCode::Ok)
46 return std::vector<uint8_t>();
47
48 return out;
49 }
50
51 inline std::vector<uint8_t> decompress(const void *data, size_t size) override
52 {
53 std::vector<uint8_t> out;
54
55 plz::PocketLzma p;
56 plz::StatusCode status = p.decompress((uint8_t*) data, size, out);
57
58 if(status != plz::StatusCode::Ok)
59 return std::vector<uint8_t>();
60
61 return out;
62 }
63
64 private:
65 inline static const std::string NAME {"lzma"};
66 };
67}
68
69#endif //TILESON_LZMA_HPP
70
71#endif
Definition Base64.hpp:12