38template <
typename char_t,
typename traits_t = std::
char_traits<
char_t>>
121 return stream_buf->overflow() == traits_t::eof();
142 template <std::ranges::forward_range range_type>
143 requires std::ranges::borrowed_range<range_type>
146 using sen_t = std::ranges::sentinel_t<range_type>;
147 using it_t = std::ranges::iterator_t<range_type>;
150 sen_t end = std::ranges::end(rng);
156 if constexpr (std::ranges::sized_range<range_type>)
158 size_t const characters_to_write = std::min<size_t>(std::ranges::distance(it, end), buffer_space);
166 for (; it != end && i < buffer_space; ++it, ++i)
175 if (
stream_buf->overflow(*it) == traits_t::eof())
190 template <std::ranges::forward_range range_type>
201 template <
typename number_type>
202 requires std::is_arithmetic_v<number_type>
213 auto res =
std::to_chars(&arithmetic_buffer[0], &arithmetic_buffer[0] +
sizeof(arithmetic_buffer), num);
214 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:40
fast_ostreambuf_iterator & operator*()
no op.
Definition: fast_ostreambuf_iterator.hpp:92
char_t value_type
The char type of the stream.
Definition: fast_ostreambuf_iterator.hpp:50
fast_ostreambuf_iterator & operator++()
no op.
Definition: fast_ostreambuf_iterator.hpp:80
auto write_number(number_type num)
Writes a number to the underlying stream buffer using std::to_chars.
Definition: fast_ostreambuf_iterator.hpp:203
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:85
stream_buffer_exposer< char_t, traits_t > * stream_buf
Down-cast pointer to the stream-buffer.
Definition: fast_ostreambuf_iterator.hpp:43
char_t reference
The char type of the stream.
Definition: fast_ostreambuf_iterator.hpp:51
void pointer
Has no pointer type.
Definition: fast_ostreambuf_iterator.hpp:52
bool failed() const noexcept
Returns true if this iterator has encountered the end-of-file condition on output,...
Definition: fast_ostreambuf_iterator.hpp:119
ptrdiff_t difference_type
Defaults to ptrdiff_t.
Definition: fast_ostreambuf_iterator.hpp:49
fast_ostreambuf_iterator & operator=(char_t const c)
Writes a character to the associated output stream.
Definition: fast_ostreambuf_iterator.hpp:98
auto write_range(range_type &&rng)
Writes a range to the associated output.
Definition: fast_ostreambuf_iterator.hpp:144
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:222
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
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:35