35template <
typename char_t,
typename traits_t = std::
char_traits<
char_t>>
118 return stream_buf->overflow() == traits_t::eof();
139 template <std::ranges::forward_range range_type>
140 requires std::ranges::borrowed_range<range_type>
143 using sen_t = std::ranges::sentinel_t<range_type>;
144 using it_t = std::ranges::iterator_t<range_type>;
147 sen_t end = std::ranges::end(rng);
153 if constexpr (std::ranges::sized_range<range_type>)
155 size_t const characters_to_write = std::min<size_t>(std::ranges::distance(it, end), buffer_space);
163 for (; it != end && i < buffer_space; ++it, ++i)
172 if (
stream_buf->overflow(*it) == traits_t::eof())
187 template <std::ranges::forward_range range_type>
198 template <
typename number_type>
199 requires std::is_arithmetic_v<number_type>
210 auto res =
std::to_chars(&arithmetic_buffer[0], &arithmetic_buffer[0] +
sizeof(arithmetic_buffer), num);
211 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:37
fast_ostreambuf_iterator & operator*()
no op.
Definition fast_ostreambuf_iterator.hpp:89
char_t value_type
The char type of the stream.
Definition fast_ostreambuf_iterator.hpp:47
fast_ostreambuf_iterator & operator++()
no op.
Definition fast_ostreambuf_iterator.hpp:77
auto write_number(number_type num)
Writes a number to the underlying stream buffer using std::to_chars.
Definition fast_ostreambuf_iterator.hpp:200
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:82
stream_buffer_exposer< char_t, traits_t > * stream_buf
Down-cast pointer to the stream-buffer.
Definition fast_ostreambuf_iterator.hpp:40
char_t reference
The char type of the stream.
Definition fast_ostreambuf_iterator.hpp:48
void pointer
Has no pointer type.
Definition fast_ostreambuf_iterator.hpp:49
bool failed() const noexcept
Returns true if this iterator has encountered the end-of-file condition on output,...
Definition fast_ostreambuf_iterator.hpp:116
ptrdiff_t difference_type
Defaults to ptrdiff_t.
Definition fast_ostreambuf_iterator.hpp:46
fast_ostreambuf_iterator & operator=(char_t const c)
Writes a character to the associated output stream.
Definition fast_ostreambuf_iterator.hpp:95
auto write_range(range_type &&rng)
Writes a range to the associated output.
Definition fast_ostreambuf_iterator.hpp:141
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:219
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