18 #include <type_traits>
26 namespace seqan3::detail
42 struct bz2_compression
53 struct zstd_compression
64 struct bgzf_compression
72 gz_compression::magic_header[0],
73 gz_compression::magic_header[1],
74 gz_compression::magic_header[2],
97 template <
typename char_t,
size_t extend>
98 static bool validate_header(std::span<char_t, extend> header)
100 static_assert(std::equality_comparable_with<char_t, char>,
101 "The given char type of the span must be comparable with char.");
103 return (header[0] == magic_header[0] &&
104 header[1] == magic_header[1] &&
105 header[2] == magic_header[2] &&
106 (header[3] & magic_header[3]) != 0 &&
107 to_little_endian(*
reinterpret_cast<uint16_t
const *
>(&header[10])) == magic_header[10] &&
108 header[12] == magic_header[12] &&
109 header[13] == magic_header[13] &&
110 to_little_endian(*
reinterpret_cast<uint16_t
const *
>(&header[14])) == magic_header[14]);
117 using compression_formats = pack_traits::drop_front<
void
118 #if defined(SEQAN3_HAS_ZLIB)
123 #if defined(SEQAN3_HAS_BZIP2)
Provides std::span from the C++20 standard library.
Provides type traits for working with templates.
Provides utility functions for bit twiddling.
Provides various traits for template packs.
Provides concepts that do not have equivalents in C++20.