RPNX::Compress
Self-contained C++20 compression and ZIP library
 
Loading...
Searching...
No Matches
zip.hpp File Reference

Deterministic ZIP32 archive creation and validated extraction APIs. More...

#include <rpnx/compression/compression.hpp>
#include <rpnx/compression/implementation/io.hpp>
#include <algorithm>
#include <cstddef>
#include <cstdint>
#include <iterator>
#include <limits>
#include <optional>
#include <set>
#include <span>
#include <string>
#include <string_view>
#include <type_traits>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

struct  rpnx::compression::zip_entry
 An owning ZIP archive member. More...
 
struct  rpnx::compression::zip_extraction_options
 Resource limits applied while parsing a ZIP archive. More...
 
struct  rpnx::compression::zip_detail::directory_record
 Directory metadata retained until the central directory is emitted. More...
 
class  rpnx::compression::zip_detail::counting_output_iterator< output_iterator >
 Output iterator that counts bytes while forwarding every assignment. More...
 
class  rpnx::compression::zip_detail::counting_output_iterator< output_iterator >::assignment_proxy
 Assignment proxy returned by operator*. More...
 

Namespaces

namespace  rpnx::compression
 Facilities for creating and decoding supported compressed streams.
 
namespace  rpnx::compression::zip_detail
 Internal ZIP32 parsing and output-iterator support.
 

Enumerations

enum class  rpnx::compression::zip_compression : std::uint8_t { rpnx::compression::stored , rpnx::compression::deflate }
 Compression methods supported for individual ZIP members. More...
 

Functions

std::vector< std::byte > rpnx::compression::create_zip (std::span< zip_entry const > entries)
 Creates a deterministic ZIP32 archive from contiguous entries.
 
std::vector< zip_entryrpnx::compression::extract_zip (std::span< std::byte const > archive, zip_extraction_options const &options={})
 Extracts a contiguous ZIP32 archive into owning entries.
 
bool rpnx::compression::zip_detail::path_is_safe (std::string const &path)
 Tests whether a member path is confined to a relative extraction root.
 
template<typename output_iterator>
output_iterator rpnx::compression::zip_detail::extract_archive (std::span< std::byte const > archive, output_iterator output, zip_extraction_options const &options)
 Extracts an archive that has been materialized for random access.
 
template<std::input_iterator input_iterator, std::sentinel_for< input_iterator > sentinel, typename output_iterator>
output_iterator rpnx::compression::create_zip (input_iterator first, sentinel last, output_iterator output)
 Creates a deterministic ZIP32 archive from an iterator range.
 
template<std::input_iterator input_iterator, std::sentinel_for< input_iterator > sentinel, typename output_iterator>
output_iterator rpnx::compression::extract_zip (input_iterator first, sentinel last, output_iterator output, zip_extraction_options const &options={})
 Extracts validated ZIP members through an STL output iterator.
 

Detailed Description

Deterministic ZIP32 archive creation and validated extraction APIs.

Definition in file zip.hpp.