zip_archive.h
1/*
2** ClanLib SDK
3** Copyright (c) 1997-2020 The ClanLib Team
4**
5** This software is provided 'as-is', without any express or implied
6** warranty. In no event will the authors be held liable for any damages
7** arising from the use of this software.
8**
9** Permission is granted to anyone to use this software for any purpose,
10** including commercial applications, and to alter it and redistribute it
11** freely, subject to the following restrictions:
12**
13** 1. The origin of this software must not be misrepresented; you must not
14** claim that you wrote the original software. If you use this software
15** in a product, an acknowledgment in the product documentation would be
16** appreciated but is not required.
17** 2. Altered source versions must be plainly marked as such, and must not be
18** misrepresented as being the original software.
19** 3. This notice may not be removed or altered from any source distribution.
20**
21** Note: Some of the libraries ClanLib may link to may have additional
22** requirements or restrictions.
23**
24** File Author(s):
25**
26** Magnus Norddahl
27** Harry Storbacka
28*/
29
30#pragma once
31
32#include <memory>
33#include "zip_file_entry.h"
34#include <vector>
35
36namespace clan
37{
40
41 class IODevice;
42 class ZipArchive_Impl;
43
46 {
47 public:
52
57
61 ZipArchive(const std::string &filename);
62
66 ZipArchive(const ZipArchive &copy);
67
69
71 std::vector<ZipFileEntry> get_file_list();
72
73 std::vector<ZipFileEntry> get_file_list(const std::string &path);
74
76 IODevice open_file(const std::string &filename);
77
79 std::string get_pathname(const std::string &filename);
80
82 IODevice create_file(const std::string &filename, bool compress = true);
83
85
87 void add_file(const std::string &input_filename, const std::string &filename_in_archive);
88
101 void save();
102
106 void save(const std::string &filename);
107
111 void save(IODevice iodev);
112
114 void load(IODevice &input);
115
116 private:
117 std::shared_ptr<ZipArchive_Impl> impl;
118 };
119
121}
I/O Device interface.
Definition iodevice.h:50
Zip archive.
Definition zip_archive.h:46
std::string get_pathname(const std::string &filename)
Get full path to source:
void add_file(const std::string &input_filename, const std::string &filename_in_archive)
Adds a file to zip archive.
void save()
Saves zip archive.
ZipArchive(IODevice &input)
Constructs a ZipArchive.
std::vector< ZipFileEntry > get_file_list(const std::string &path)
IODevice open_file(const std::string &filename)
Opens a file in the archive.
void save(const std::string &filename)
Save.
void load(IODevice &input)
Loads the zip archive from a input device (done automatically at construction).
std::vector< ZipFileEntry > get_file_list()
List of file entries in archive.
ZipArchive(const std::string &filename)
Constructs a ZipArchive.
ZipArchive()
Constructs or loads a ZIP archive.
void save(IODevice iodev)
Save.
IODevice create_file(const std::string &filename, bool compress=true)
Creates a new file entry.
ZipArchive(const ZipArchive &copy)
Constructs a ZipArchive.
Definition clanapp.h:36