A "pretty printer" for most SeqAn data structures and related types. More...
#include <seqan3/core/debug_stream.hpp>
Public Member Functions | |
Constructor, destructor and assignment. | |
The standard functions are explicitly defaulted. | |
| debug_stream_type ()=default | |
| Defaulted. | |
| debug_stream_type (debug_stream_type const &)=default | |
| Defaulted. | |
| debug_stream_type (debug_stream_type &&)=default | |
| Defaulted. | |
| debug_stream_type & | operator= (debug_stream_type const &)=default |
| Defaulted. | |
| debug_stream_type & | operator= (debug_stream_type &&)=default |
| Defaulted. | |
| ~debug_stream_type ()=default | |
| Defaulted. | |
| constexpr | debug_stream_type (std::ostream &out) |
| Construction from an output stream. | |
Miscelleneous | |
| void | set_underlying_stream (std::ostream &out) |
| Change the underlying output stream. More... | |
Formatted output | |
| template<typename t > | |
| debug_stream_type & | operator<< (t &&v) |
| Forwards to the underlying stream object. | |
| debug_stream_type & | operator<< (std::ostream &(*fp)(std::ostream &)) |
| This overloads enables forwarding std::endl and other manipulators. | |
Format flags (std::ios_base::fmtflags) | |
std::ios_base::fmtflags that modify the stream's behaviour. | |
| std::ios_base::fmtflags | flags () const |
| Retrieve the format flags from the stream. | |
| std::ios_base::fmtflags | flags (std::ios_base::fmtflags const flgs) |
| Replace the current flags on the stream with the given argument. | |
| void | setf (std::ios_base::fmtflags const flag) |
| Set the format flag(s) on the stream (current flags are ORed with the argument). | |
| void | unsetf (std::ios_base::fmtflags const flag) |
| Unset the format flag(s) on the stream. | |
| debug_stream_type & | operator<< (std::ios_base::fmtflags const flag) |
| Set the format flag(s) on the stream (current flags are ORed with the argument). | |
Format flags (seqan3::fmtflags2) | |
SeqAn specific debug flags for the debug stream. | |
| fmtflags2 | flags2 () const |
| Retrieve the format flags from the stream. | |
| fmtflags2 | flags2 (fmtflags2 flgs) |
| Replace the current flags on the stream with the given argument. | |
| void | setf (fmtflags2 const flag) |
| Set the format flag(s) on the stream (current flags are ORed with the argument). | |
| void | unsetf (fmtflags2 const flag) |
| Unset the format flag(s) on the stream. | |
| debug_stream_type & | operator<< (fmtflags2 const flag) |
| Set the format flag(s) on the stream (current flags are ORed with the argument). | |
Related Functions | |
(Note that these are not member functions.) | |
| debug_stream_type & | operator<< (debug_stream_type &s, detail::trace_directions const trace) |
| All trace_directions can be printed as ascii or as utf8 to the seqan3::debug_stream. More... | |
| template<typename tuple_t > | |
| debug_stream_type & | operator<< (debug_stream_type &s, tuple_t &&t) |
| All tuples can be printed by printing their elements separately. More... | |
| template<typename variant_type > | |
| debug_stream_type & | operator<< (debug_stream_type &s, variant_type &&v) |
| A std::variant can be printed by visiting the stream operator for the corresponding type. More... | |
| template<typename optional_type > | |
| debug_stream_type & | operator<< (debug_stream_type &s, optional_type &&arg) |
| A std::optional can be printed by printing its value or nothing if valueless. More... | |
| template<std::ranges::InputRange rng_t> | |
| debug_stream_type & | operator<< (debug_stream_type &s, rng_t &&r) |
| All input ranges can be printed to the seqan3::debug_stream element-wise (if their elements are printable). More... | |
| template<typename coordinate_type > | |
| debug_stream_type & | operator<< (debug_stream_type &s, coordinate_type &&c) |
| A seqan3::alignment_coordinate can be printed to the seqan3::debug_stream. More... | |
| template<detail::Matrix alignment_matrix_t> | |
| debug_stream_type & | operator<< (debug_stream_type &s, alignment_matrix_t &&matrix) |
| An alignment matrix can be printed to the seqan3::debug_stream. More... | |
Formatted output overloads | |
| template<Alphabet alphabet_t> | |
| debug_stream_type & | operator<< (debug_stream_type &s, alphabet_t const l) |
| All alphabets can be printed to the seqan3::debug_stream by their char representation. More... | |
A "pretty printer" for most SeqAn data structures and related types.
A global instance of this type exists as seqan3::debug_stream. You can stream to it as you would to std::cout or std::cerr, but the debug stream has special overloads that make certain types streamable (that are not streamable to std::cout). Additionally some data structures are visualised more elaborately via the debug stream and there are extra flags to configure it (seqan3::fmtflags2).
Simple usage:
Changing flags:
See seqan3::fmtflags2 for more details.
|
inline |
Change the underlying output stream.
| out | Reference to the new output stream. |
The actual underlying stream that is printed to defaults to std::cerr, but can be changed via this function. You can set any kind of output stream, e.g. a std::ostringstream or a std::ofstream if you want to write to a file, but please be aware that the debug_stream never takes ownership of the underlying stream so you need to take special care that its object lifetime does not end before the debug_stream's.
In the case where you wish to print to some stream object locally, instead create you own debug stream:
|
related |
All trace_directions can be printed as ascii or as utf8 to the seqan3::debug_stream.
| s | The seqan3::debug_stream. |
| trace | The trace direction. |
|
related |
All alphabets can be printed to the seqan3::debug_stream by their char representation.
| alphabet_t | Type of the alphabet to be printed; must model seqan3::Alphabet. |
| s | The seqan3::debug_stream. |
| l | The alphabet letter. |
|
related |
All tuples can be printed by printing their elements separately.
| tuple_t | Type of the tuple to be printed; must model seqan3::TupleLike. |
| s | The seqan3::debug_stream. |
| t | The tuple. |
|
related |
A std::variant can be printed by visiting the stream operator for the corresponding type.
| variant_type | The underlying type of the variant. |
| [in] | s | The seqan3::debug_stream. |
| [in] | v | The variant. |
Note that in case the variant is valueless(_by_exception), nothing is printed.
|
related |
A std::optional can be printed by printing its value or nothing if valueless.
| optional_type | The underlying type of the optional. |
| [in] | s | The seqan3::debug_stream. |
| [in] | arg | The std::optional. |
|
related |
All input ranges can be printed to the seqan3::debug_stream element-wise (if their elements are printable).
| rng_t | Type of the range to be printed; must model std::ranges::InputRange. |
| s | The seqan3::debug_stream. |
| r | The input range. |
If the element type models seqan3::Alphabet (and is not an unsigned integer), the range is printed just as if it were a string, i.e. std::vector<dna4>{'C'_dna4, 'G'_dna4, 'A'_dna4} is printed as "CGA".
In all other cases the elements are comma separated and the range is enclosed in brackets, i.e. std::vector<int>{3, 1, 33, 7} is printed as "[3,1,33,7]".
|
related |
A seqan3::alignment_coordinate can be printed to the seqan3::debug_stream.
| coordinate_type | The alignment coordinate type. |
| [in] | s | The seqan3::debug_stream. |
| [in] | c | The alignment coordinate to print. |
Prints the alignment coordinate as a tuple.
|
related |
An alignment matrix can be printed to the seqan3::debug_stream.
| alignment_matrix_t | Type of the alignment matrix to be printed; must model seqan3::detail::Matrix. |
| s | The seqan3::debug_stream. |
| matrix | The alignment matrix. |
This prints out an alignment matrix which can be a score matrix or a trace matrix.