Loading...
Searching...
No Matches
semialphabet Interface Reference
Alphabet

The basis for seqan3::alphabet, but requires only rank interface (not char). More...

`#include <seqan3/alphabet/concept.hpp>`

Inheritance diagram for semialphabet:
[legend]

## Detailed Description

The basis for seqan3::alphabet, but requires only rank interface (not char).

This concept represents the "rank part" of what is considered "an alphabet" in SeqAn. It requires no char representation and corresponding interfaces. It is mostly used internally.

### Requirements

1. t shall model std::totally_ordered ("has all comparison operators")
2. objects of type t shall be efficiently copyable:
   - t shall model std::copy_constructible and be std::is_nothrow_copy_constructible
   - move construction shall not be more efficient than copy construction; this implies no dynamic memory (de-)allocation [this is a semantic requirement that cannot be checked]
3. seqan3::alphabet_size needs to be defined for t
4. seqan3::to_rank needs to be defined for objects of type t

See the documentation pages for the respective requirements. The implications of 2. are that you can always take function arguments of types that model seqan3::semialphabet by value.

It is highly recommended that non-reference types that model this concept, also model:

- std::regular
- std::is_trivially_copyable
- seqan3::standard_layout

All alphabets available in SeqAn (with very few exceptions) do so.

### Related types

If a given type t models this concept, the following types typically do so, as well:

- t &
- t const
- t const &

This entity is stable. Since version 3.1.

The documentation for this interface was generated from the following file:

- alphabet/concept.hpp

Hide me