SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
|
The class template that file records are based on; behaves like a std::tuple. More...
#include <seqan3/io/record.hpp>
Public Types | |
using | base_type = detail::transfer_template_args_onto_t< field_types, std::tuple > |
A specialisation of std::tuple. | |
Public Member Functions | |
void | clear () noexcept(noexcept(std::apply(expander, std::declval< record & >().as_base()))) |
Clears containers that provide .clear() and (re-)initialises all other elements with = {} . | |
Constructors, destructor and assignment | |
record ()=default | |
Defaulted. | |
record (record const &)=default | |
Defaulted. | |
record & | operator= (record const &)=default |
Defaulted. | |
record (record &&)=default | |
Defaulted. | |
record & | operator= (record &&)=default |
Defaulted. | |
~record ()=default | |
Defaulted. | |
Private Types | |
template<field f> | |
using | field_constant = std::integral_constant< field, f > |
A type alias for std::integral_constant. | |
Private Member Functions | |
base_type & | as_base () noexcept |
Returns the tuple as the underlying std::tuple type. | |
Static Private Member Functions | |
template<typename t > | |
static constexpr void | clear_element (t &v) noexcept(noexcept(std::declval< t & >()=t{})) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
template<typename t > requires requires (t & v) { v.clear(); } | |
static constexpr void | clear_element (t &v) noexcept(noexcept(v.clear())) |
Auxiliary functions for clear(). | |
template<field f, typename tuple_t > | |
static decltype(auto) | get_impl (field_constant< f >, tuple_t &&record_as_tuple) |
This is basically the seqan3::get<f>(static_cast<tuple>(record)) implementation. | |
Static Private Attributes | |
static constexpr auto | expander |
A lambda function that expands a pack and calls clear_element on every argument in the pack. | |
Additional Inherited Members | |
Related Symbols inherited from tuple_like | |
size_t | tuple_size_v |
A unary type trait that holds the number of elements in the tuple. | |
tuple_elment_t | |
A transformation trait that holds the type of elements in the tuple. | |
auto && | get (type &&val) |
Return the i-th element of the tuple. | |
The class template that file records are based on; behaves like a std::tuple.
field_types | The types of the fields in this record as a seqan3::type_list. |
field_ids | A seqan3::fields type with seqan3::field IDs corresponding to field_types. |
This class template behaves just like a std::tuple, with the exception that it provides an additional get-interface that takes a seqan3::field identifier. The traditional get interfaces (via index and via type) are also supported, but discouraged, because accessing via seqan3::field is unambiguous and better readable.
For input files this template is specialised automatically and provided by the file via its record_type
member. For output files you my define it locally and pass instances of this to the output file's push_back()
.
This is how it works:
|
staticconstexprprivate |
A lambda function that expands a pack and calls clear_element
on every argument in the pack.