From dc22d81f89a0eeb13e8e760ff9c84c22135a7ce4 Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Thu, 16 Aug 2018 00:30:15 +0200 Subject: Add C++ wrapper --- src/cppc4group.hpp | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/cppc4group.hpp (limited to 'src/cppc4group.hpp') diff --git a/src/cppc4group.hpp b/src/cppc4group.hpp new file mode 100644 index 0000000..fc46592 --- /dev/null +++ b/src/cppc4group.hpp @@ -0,0 +1,74 @@ +#pragma once + +#include +#include +#include + +class CppC4Group { + struct Private; + + std::unique_ptr p; + +public: + struct Data { + const void* data; + size_t size; + + Data(); + Data(const void* data, size_t size); + }; + + struct EntryInfo { + std::string fileName; + int32_t modified; + std::string author; + size_t size; + size_t totalSize; + bool executable; + bool directory; + bool official; + }; + +public: + enum TmpMemoryStrategy { + Memory, + File, + Auto + }; + + static void setTmpMemoryStrategy(const TmpMemoryStrategy strategy); + +public: + CppC4Group(); + ~CppC4Group(); + + void create(); + bool openExisting(const std::string& path); + bool save(const std::string& path, const bool overwrite = false); + + bool extractAll(const std::string& path); + bool extractSingle(const std::string& entryPath, const std::string& targetPath); + + std::optional getEntryData(const std::string& path); + std::string getErrorMessage(); + int32_t getErrorCode(); + std::string getErrorMethod(); + std::string getErrorCauser(); + + bool setMaker(const std::string& maker, const std::string& path = "", const bool recursive = false); + bool setCreation(const int32_t creation, const std::string& path = "", const bool recursive = false); + bool setOfficial(const bool official, const std::string& path = "", const bool recursive = false); + bool setExecutable(const bool executable, const std::string& path); + + std::optional getEntryInfo(const std::string& path = ""); + std::optional> getEntryInfos(const std::string& path = ""); + + bool deleteEntry(const std::string& path, const bool recursive); + bool renameEntry(const std::string& oldPath, const std::string& newPath); + + bool createDirectory(const std::string& path); + + bool createFile(const std::string& path, void* data = nullptr, size_t size = 0); + + bool setEntryData(const std::string& path, void* data = nullptr, size_t size = 0); +}; -- cgit v1.2.3-54-g00ecf