41 IZipArchive(
const T& zipArchive) : m_zipArchive{
std::make_unique<Model<T>>(zipArchive)}
70 m_zipArchive = std::make_unique<Model<T>>(zipArchive);
82 *
this = std::move(copy);
97 inline explicit operator bool()
const {
return isValid(); }
99 inline bool isValid()
const {
return m_zipArchive->isValid(); }
101 inline bool isOpen()
const {
return m_zipArchive->isOpen(); }
103 inline void open(
const std::string& fileName) { m_zipArchive->open(fileName); }
105 inline void close()
const { m_zipArchive->close(); }
107 inline void save(
const std::string& path) { m_zipArchive->save(path); }
109 inline void addEntry(
const std::string& name, std::string data) { m_zipArchive->addEntry(name, std::move(data)); }
112 { m_zipArchive->addEntryAllocated(name, data, size); }
115 { m_zipArchive->addEntryFromFile(std::string(name), std::string(filePath)); }
117 inline void deleteEntry(
const std::string& entryName) { m_zipArchive->deleteEntry(entryName); }
119 inline std::string
getEntry(
const std::string& name)
const {
return m_zipArchive->getEntry(name); }
121 inline void*
openEntryStream(std::string_view name)
const {
return m_zipArchive->openEntryStream(name); }
123 {
return m_zipArchive->readEntryStream(stream, buffer, size); }
124 inline void closeEntryStream(
void* stream)
const { m_zipArchive->closeEntryStream(stream); }
126 inline bool hasEntry(
const std::string& entryName)
const {
return m_zipArchive->hasEntry(entryName); }
128 inline std::vector<std::string>
entryNames()
const {
return m_zipArchive->entryNames(); }
148 Concept(
const Concept&) =
default;
153 Concept(Concept&&) noexcept = default;
158 virtual ~Concept() = default;
164 inline Concept& operator=(const Concept&) = default;
170 inline Concept& operator=(Concept&&) noexcept = default;
176 inline virtual
std::unique_ptr<Concept> clone() const = 0;
178 inline virtual
bool isValid() const = 0;
180 inline virtual
bool isOpen() const = 0;
182 inline virtual
void open(const
std::
string& fileName) = 0;
184 inline virtual
void close() const = 0;
186 inline virtual
void save(const
std::
string& path) const = 0;
188 inline virtual
void addEntry(const
std::
string& name,
std::
string data) = 0;
190 inline virtual
void addEntryAllocated(
std::string_view name,
void* data,
size_t size) = 0;
192 inline virtual
void addEntryFromFile(
std::string_view name,
std::string_view filePath) = 0;
194 inline virtual
void deleteEntry(const
std::
string& entryName) = 0;
196 inline virtual
std::
string getEntry(const
std::
string& name) const = 0;
198 inline virtual
void* openEntryStream(
std::string_view name) const = 0;
199 inline virtual int64_t readEntryStream(
void* stream,
char* buffer, uint64_t size) const = 0;
200 inline virtual
void closeEntryStream(
void* stream) const = 0;
202 inline virtual
bool hasEntry(const
std::
string& entryName) const = 0;
204 inline virtual
std::vector<
std::
string> entryNames() const = 0;
206 inline virtual
void setCompressionLevel(
int level) = 0;
207 inline virtual
int compressionLevel() const = 0;
215 struct Model : Concept
222 explicit Model(
const T& x) : ZipType(x) {}
228 Model(
const Model& other) =
default;
234 Model(Model&& other)
noexcept =
default;
239 ~Model()
override =
default;
246 inline Model& operator=(
const Model& other) =
default;
253 inline Model& operator=(Model&& other)
noexcept =
default;
259 inline std::unique_ptr<Concept> clone()
const override {
return std::make_unique<Model<T>>(ZipType); }
261 inline bool isValid()
const override {
return ZipType.isValid(); }
263 inline bool isOpen()
const override {
return ZipType.isOpen(); }
265 inline void open(
const std::string& fileName)
override { ZipType.open(fileName); }
267 inline void close()
const override { ZipType.close(); }
269 inline void save(
const std::string& path)
const override { ZipType.save(path); }
271 inline void addEntry(
const std::string& name, std::string data)
override { ZipType.addEntry(name, std::move(data)); }
273 inline void addEntryAllocated(std::string_view name,
void* data,
size_t size)
override
274 { ZipType.addEntryAllocated(name, data, size); }
276 inline void addEntryFromFile(std::string_view name, std::string_view filePath)
override
277 { ZipType.addEntryFromFile(name, filePath); }
279 inline void deleteEntry(
const std::string& entryName)
override { ZipType.deleteEntry(entryName); }
281 inline std::string getEntry(
const std::string& name)
const override {
return ZipType.getEntry(name); }
283 inline void* openEntryStream(std::string_view name)
const override {
return ZipType.openEntryStream(name); }
284 inline int64_t readEntryStream(
void* stream,
char* buffer, uint64_t size)
const override
285 {
return ZipType.readEntryStream(stream, buffer, size); }
286 inline void closeEntryStream(
void* stream)
const override { ZipType.closeEntryStream(stream); }
288 inline bool hasEntry(
const std::string& entryName)
const override {
return ZipType.hasEntry(entryName); }
290 inline std::vector<std::string> entryNames()
const override {
return ZipType.entryNames(); }
292 inline void setCompressionLevel(
int level)
override { ZipType.setCompressionLevel(level); }
293 inline int compressionLevel()
const override {
return ZipType.compressionLevel(); }
299 std::unique_ptr<Concept> m_zipArchive;