21#if defined(SEQAN3_HAS_BZIP2)
22# include <seqan3/contrib/stream/bz2_ostream.hpp>
24#if defined(SEQAN3_HAS_ZLIB)
25# include <seqan3/contrib/stream/bgzf_ostream.hpp>
26# include <seqan3/contrib/stream/gz_ostream.hpp>
32namespace seqan3::detail
42template <builtin_
character
char_t>
56 if (extension ==
".gz")
58#if defined(SEQAN3_HAS_ZLIB)
59 filename.replace_extension(
"");
60 return {
new contrib::basic_gz_ostream<char_t>{primary_stream}, stream_deleter_default};
62 throw file_open_error{
"Trying to write a gzipped file, but no ZLIB available."};
65 else if ((extension ==
".bgzf") || (extension ==
".bam"))
67#if defined(SEQAN3_HAS_ZLIB)
68 if (extension !=
".bam")
69 filename.replace_extension(
"");
71 return {
new contrib::basic_bgzf_ostream<char_t>{primary_stream}, stream_deleter_default};
73 throw file_open_error{
"Trying to write a bgzf'ed file, but no ZLIB available."};
76 else if (extension ==
".bz2")
78#if defined(SEQAN3_HAS_BZIP2)
79 filename.replace_extension(
"");
80 return {
new contrib::basic_bz2_ostream<char_t>{primary_stream}, stream_deleter_default};
82 throw file_open_error{
"Trying to write a bzipped file, but no libbz2 available."};
85 else if (extension ==
".zst")
87 throw file_open_error{
"Trying to write a zst'ed file, but SeqAn does not yet support this."};
90 return {&primary_stream, stream_deleter_noop};
Provides seqan3::contrib::bgzf_thread_count.
Provides exceptions used in the I/O module.
Provides concepts that do not have equivalents in C++20.