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,
const std::string& data) { m_zipArchive->addEntry(name, data); }
112 { m_zipArchive->addEntryFromFile(std::string(name), std::string(filePath)); }
114 inline void deleteEntry(
const std::string& entryName) { m_zipArchive->deleteEntry(entryName); }
116 inline std::string
getEntry(
const std::string& name)
const {
return m_zipArchive->getEntry(name); }
118 inline void*
openEntryStream(std::string_view name)
const {
return m_zipArchive->openEntryStream(name); }
120 {
return m_zipArchive->readEntryStream(stream, buffer, size); }
121 inline void closeEntryStream(
void* stream)
const { m_zipArchive->closeEntryStream(stream); }
123 inline bool hasEntry(
const std::string& entryName)
const {
return m_zipArchive->hasEntry(entryName); }
125 inline std::vector<std::string>
entryNames()
const {
return m_zipArchive->entryNames(); }
145 Concept(
const Concept&) =
default;
150 Concept(Concept&&) noexcept = default;
155 virtual ~Concept() = default;
161 inline Concept& operator=(const Concept&) = default;
167 inline Concept& operator=(Concept&&) noexcept = default;
173 inline virtual
std::unique_ptr<Concept> clone() const = 0;
175 inline virtual
bool isValid() const = 0;
177 inline virtual
bool isOpen() const = 0;
179 inline virtual
void open(const
std::
string& fileName) = 0;
181 inline virtual
void close() const = 0;
183 inline virtual
void save(const
std::
string& path) const = 0;
185 inline virtual
void addEntry(const
std::
string& name, const
std::
string& data) = 0;
187 inline virtual
void addEntryFromFile(
std::string_view name,
std::string_view filePath) = 0;
189 inline virtual
void deleteEntry(const
std::
string& entryName) = 0;
191 inline virtual
std::
string getEntry(const
std::
string& name) const = 0;
193 inline virtual
void* openEntryStream(
std::string_view name) const = 0;
194 inline virtual int64_t readEntryStream(
void* stream,
char* buffer, uint64_t size) const = 0;
195 inline virtual
void closeEntryStream(
void* stream) const = 0;
197 inline virtual
bool hasEntry(const
std::
string& entryName) const = 0;
199 inline virtual
std::vector<
std::
string> entryNames() const = 0;
201 inline virtual
void setCompressionLevel(
int level) = 0;
202 inline virtual
int compressionLevel() const = 0;
210 struct Model : Concept
217 explicit Model(
const T& x) : ZipType(x) {}
223 Model(
const Model& other) =
default;
229 Model(Model&& other)
noexcept =
default;
234 ~Model()
override =
default;
241 inline Model& operator=(
const Model& other) =
default;
248 inline Model& operator=(Model&& other)
noexcept =
default;
254 inline std::unique_ptr<Concept> clone()
const override {
return std::make_unique<Model<T>>(ZipType); }
256 inline bool isValid()
const override {
return ZipType.isValid(); }
258 inline bool isOpen()
const override {
return ZipType.isOpen(); }
260 inline void open(
const std::string& fileName)
override { ZipType.open(fileName); }
262 inline void close()
const override { ZipType.close(); }
264 inline void save(
const std::string& path)
const override { ZipType.save(path); }
266 inline void addEntry(
const std::string& name,
const std::string& data)
override { ZipType.addEntry(name, data); }
268 inline void addEntryFromFile(std::string_view name, std::string_view filePath)
override
269 { ZipType.addEntryFromFile(name, filePath); }
271 inline void deleteEntry(
const std::string& entryName)
override { ZipType.deleteEntry(entryName); }
273 inline std::string getEntry(
const std::string& name)
const override {
return ZipType.getEntry(name); }
275 inline void* openEntryStream(std::string_view name)
const override {
return ZipType.openEntryStream(name); }
276 inline int64_t readEntryStream(
void* stream,
char* buffer, uint64_t size)
const override
277 {
return ZipType.readEntryStream(stream, buffer, size); }
278 inline void closeEntryStream(
void* stream)
const override { ZipType.closeEntryStream(stream); }
280 inline bool hasEntry(
const std::string& entryName)
const override {
return ZipType.hasEntry(entryName); }
282 inline std::vector<std::string> entryNames()
const override {
return ZipType.entryNames(); }
284 inline void setCompressionLevel(
int level)
override { ZipType.setCompressionLevel(level); }
285 inline int compressionLevel()
const override {
return ZipType.compressionLevel(); }
291 std::unique_ptr<Concept> m_zipArchive;