MinecraftConsoles/Minecraft.Client/Common/libs/bit7z/include/bitabstractarchiveopener.hpp

59 lines
1.8 KiB
C++

/*
* bit7z - A C++ static library to interface with the 7-zip shared libraries.
* Copyright (c) 2014-2023 Riccardo Ostani - All Rights Reserved.
*
* 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/.
*/
#ifndef BITABSTRACTARCHIVEOPENER_HPP
#define BITABSTRACTARCHIVEOPENER_HPP
#include <vector>
#include <map>
#include "bitabstractarchivehandler.hpp"
#include "bitformat.hpp"
namespace bit7z {
using std::ostream;
/**
* @brief The BitAbstractArchiveOpener abstract class represents a generic archive opener.
*/
class BitAbstractArchiveOpener : public BitAbstractArchiveHandler {
public:
BitAbstractArchiveOpener( const BitAbstractArchiveOpener& ) = delete;
BitAbstractArchiveOpener( BitAbstractArchiveOpener&& ) = delete;
auto operator=( const BitAbstractArchiveOpener& ) -> BitAbstractArchiveOpener& = delete;
auto operator=( BitAbstractArchiveOpener&& ) -> BitAbstractArchiveOpener& = delete;
~BitAbstractArchiveOpener() override = default;
/**
* @return the archive format used by the archive opener.
*/
BIT7Z_NODISCARD auto format() const noexcept -> const BitInFormat& override;
/**
* @return the archive format used by the archive opener.
*/
BIT7Z_NODISCARD auto extractionFormat() const noexcept -> const BitInFormat&;
protected:
BitAbstractArchiveOpener( const Bit7zLibrary& lib,
const BitInFormat& format,
const tstring& password = {} );
private:
const BitInFormat& mFormat;
};
} // namespace bit7z
#endif // BITABSTRACTARCHIVEOPENER_HPP