Tileson 1.4.0
A helpful json parser for Tiled maps
Loading...
Searching...
No Matches
DecompressorContainer.hpp
Go to the documentation of this file.
1//
2// Created by robin on 30.07.2020.
3//
4
5#ifndef TILESON_DECOMPRESSORCONTAINER_HPP
6#define TILESON_DECOMPRESSORCONTAINER_HPP
7
8#include "../interfaces/IDecompressor.hpp"
9#include <memory>
10#include <vector>
11#include <string_view>
12#include <functional>
13namespace tson
14{
16 {
17 public:
18 inline DecompressorContainer() = default;
19 template <typename T, typename... Args>
20 inline void add(Args &&... args);
21 inline void remove(std::string_view name);
22 inline bool contains(std::string_view name) const;
23 inline bool empty() const;
24 inline size_t size() const;
25 inline void clear();
26
27 inline IDecompressor<std::string_view, std::string> *get(std::string_view name);
28 private:
29 //Key: name,
30 std::vector<std::unique_ptr<IDecompressor<std::string_view, std::string>>> m_decompressors;
31 };
32
33 template<typename T, typename... Args>
34 void DecompressorContainer::add(Args &&... args)
35 {
36 m_decompressors.emplace_back(new T(args...));
37 }
38
44 bool DecompressorContainer::contains(std::string_view name) const
45 {
46 auto iter = std::find_if(m_decompressors.begin(), m_decompressors.end(), [&](const auto &item)
47 {
48 return item->name() == name;
49 });
50
51 return iter != m_decompressors.end();
52 }
53
58 void DecompressorContainer::remove(std::string_view name)
59 {
60 auto iter = std::remove_if(m_decompressors.begin(), m_decompressors.end(), [&](const auto &item)
61 {
62 return item->name() == name;
63 });
64 m_decompressors.erase(iter);
65 }
66
68 {
69 return m_decompressors.size();
70 }
71
78 {
79 auto iter = std::find_if(m_decompressors.begin(), m_decompressors.end(), [&](const auto &item)
80 {
81 return item->name() == name;
82 });
83
84 return (iter != m_decompressors.end()) ? iter->get() : nullptr;
85 }
86
92 {
93 return m_decompressors.empty();
94 }
95
100 {
101 m_decompressors.clear();
102 }
103}
104#endif //TILESON_DECOMPRESSORCONTAINER_HPP
Definition DecompressorContainer.hpp:16
bool contains(std::string_view name) const
Definition DecompressorContainer.hpp:44
void remove(std::string_view name)
Definition DecompressorContainer.hpp:58
void add(Args &&... args)
Definition DecompressorContainer.hpp:34
bool empty() const
Definition DecompressorContainer.hpp:91
IDecompressor< std::string_view, std::string > * get(std::string_view name)
Definition DecompressorContainer.hpp:77
void clear()
Definition DecompressorContainer.hpp:99
size_t size() const
Definition DecompressorContainer.hpp:67
Definition IDecompressor.hpp:14
Definition Base64.hpp:12