Newer
Older
#pragma once
#include "zip.h"
#include <memory>
#include <string>
#include <vector>
namespace Retro {
class Zip {
public:
class File {
public:
File(zip_t*, const std::string& name, zip_file_t* = nullptr);
File(File&) = delete;
std::string readline();
ssize_t read(void* buffer, size_t size);
ssize_t write(const void* buffer, size_t size);
private:
zip_t* m_zip;
zip_file_t* m_file;
std::vector<char> m_buffer;
std::string m_name;
};
Zip(const std::string& path);
~Zip();
bool open(bool readwrite = false);
void close();
File* openFile(const std::string& name, bool write = false);
private:
std::string m_path;
zip_t* m_zip = nullptr;
std::vector<std::unique_ptr<File>> m_files;
};
}