/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #pragma once #include "ArchiveBase.hpp" #include "ArchiveConfiguration.hpp" #include "IArchiveWriter.hpp" namespace openVulkanoCpp { class MultiPartArchiveWriter; class ArchiveWriter final : public ArchiveBase, public IArchiveWriter { friend MultiPartArchiveWriter; size_t m_bytesWritten = 0; public: ArchiveWriter(const char* fileName, const std::shared_ptr& logger = nullptr); ArchiveWriter(const char* fileName, ArchiveConfiguration archiveConfiguration, const std::shared_ptr& logger = nullptr); ~ArchiveWriter() override; [[nodiscard]] size_t GetTotalWrittenBytes() const { return m_bytesWritten; } bool AddFile(const FileDescription& description, const void* buffer) override; bool AddFile(const FileDescription& description, const std::vector>& buffers) override; bool AddFile(const char* fileName, const char* inArchiveName) override; private: void WriteHeader(const FileDescription& fileDescription); }; }