36template <
typename char_t,
typename traits_t = std::
char_traits<
char_t>>
119 return stream_buf->overflow() == traits_t::eof();
140 template <std::ranges::forward_range range_type>
141 requires std::ranges::borrowed_range<range_type>
144 using sen_t = std::ranges::sentinel_t<range_type>;
145 using it_t = std::ranges::iterator_t<range_type>;
148 sen_t end = std::ranges::end(rng);
154 if constexpr (std::ranges::sized_range<range_type>)
156 size_t const characters_to_write = std::min<size_t>(std::ranges::distance(it, end), buffer_space);
164 for (; it != end && i < buffer_space; ++it, ++i)
173 if (
stream_buf->overflow(*it) == traits_t::eof())
188 template <std::ranges::forward_range range_type>
199 template <
typename number_type>
200 requires std::is_arithmetic_v<number_type>
211 auto res =
std::to_chars(&arithmetic_buffer[0], &arithmetic_buffer[0] +
sizeof(arithmetic_buffer), num);
212 write_range(std::ranges::subrange<char *, char *>(&arithmetic_buffer[0], res.ptr));
The <charconv> header from C++17's standard library.
Functionally the same as std::ostreambuf_iterator, but offers writing a range more efficiently.
Definition fast_ostreambuf_iterator.hpp:38
fast_ostreambuf_iterator & operator*()
no op.
Definition fast_ostreambuf_iterator.hpp:90
char_t value_type
The char type of the stream.
Definition fast_ostreambuf_iterator.hpp:48
fast_ostreambuf_iterator & operator++()
no op.
Definition fast_ostreambuf_iterator.hpp:78
auto write_number(number_type num)
Writes a number to the underlying stream buffer using std::to_chars.
Definition fast_ostreambuf_iterator.hpp:201
fast_ostreambuf_iterator() noexcept=default
Defaulted.
fast_ostreambuf_iterator & operator++(int)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition fast_ostreambuf_iterator.hpp:83
stream_buffer_exposer< char_t, traits_t > * stream_buf
Down-cast pointer to the stream-buffer.
Definition fast_ostreambuf_iterator.hpp:41
char_t reference
The char type of the stream.
Definition fast_ostreambuf_iterator.hpp:49
void pointer
Has no pointer type.
Definition fast_ostreambuf_iterator.hpp:50
bool failed() const noexcept
Returns true if this iterator has encountered the end-of-file condition on output,...
Definition fast_ostreambuf_iterator.hpp:117
ptrdiff_t difference_type
Defaults to ptrdiff_t.
Definition fast_ostreambuf_iterator.hpp:47
fast_ostreambuf_iterator & operator=(char_t const c)
Writes a character to the associated output stream.
Definition fast_ostreambuf_iterator.hpp:96
auto write_range(range_type &&rng)
Writes a range to the associated output.
Definition fast_ostreambuf_iterator.hpp:142
void write_end_of_line(bool const add_cr)
Write "\n" or "\r\n" to the stream buffer, depending on arguments.
Definition fast_ostreambuf_iterator.hpp:220
The internal SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
SeqAn specific customisations in the standard namespace.
Provides seqan3::detail::stream_buffer_exposer.
Functionally the same as std::basic_streambuf<char_t, traits_t_>, but exposes protected members as pu...
Definition stream_buffer_exposer.hpp:32