5#ifndef TILESON_DECOMPRESSORCONTAINER_HPP
6#define TILESON_DECOMPRESSORCONTAINER_HPP
8#include "../interfaces/IDecompressor.hpp"
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;
30 std::vector<std::unique_ptr<IDecompressor<std::string_view, std::string>>> m_decompressors;
33 template<
typename T,
typename... Args>
36 m_decompressors.emplace_back(
new T(args...));
46 auto iter = std::find_if(m_decompressors.begin(), m_decompressors.end(), [&](
const auto &item)
48 return item->name() == name;
51 return iter != m_decompressors.end();
60 auto iter = std::remove_if(m_decompressors.begin(), m_decompressors.end(), [&](
const auto &item)
62 return item->name() == name;
64 m_decompressors.erase(iter);
69 return m_decompressors.size();
79 auto iter = std::find_if(m_decompressors.begin(), m_decompressors.end(), [&](
const auto &item)
81 return item->name() == name;
84 return (iter != m_decompressors.end()) ? iter->get() :
nullptr;
93 return m_decompressors.empty();
101 m_decompressors.clear();
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
DecompressorContainer()=default
void clear()
Definition DecompressorContainer.hpp:99
size_t size() const
Definition DecompressorContainer.hpp:67
Definition IDecompressor.hpp:14