Concepts
Concepts are a sort of 'interfaces' in generic programming.
They are not formulated as C++ constructs, but they are part of the documentation.
A concept is defined by a set of functions and metafunctions, and
a class implements a concept if it implements the functions and metafunctions of this concept.
Note: The list of concepts is not complete yet. Completing it is ongoing work.
Concepts
| Aggregate types contain a fixed number of fixed-size values. | |
| Object that manages memory allocation. | |
| Object that contains other objects. | |
| Concept for mutable containers. | |
| Object that stores information about the haystack of a search and the current search position. | |
| Concept for types that have a host. | |
| Object that stores information about the needle of a search. | |
| Concept for sequences. | |
| Object that does not need constructors, destructors or copy assignment operators. | |
| Concept for I/O streams. |
Alphabets
| Natural container value. | |
| An alphabet that includes a specific gap character. | |
| An alphabet where qualities can be attached to the characters. | |
| An alphabet which includes a specific "unknown" character. | |
| An type that is of finite domain and totally ordered and thus has a minimum and maximum value. | |
| Totally strict ordered alphabet. |
Basic
| A type with an assignment operator. | |
| A type with a copy-constructor. | |
| A type with a default constructor. | |
| A type with a destructor. | |
| An integral type. | |
| An integral type with a sign. | |
| An integral type without a sign. |
Comparisons
| A type that can be compared. | |
| A type that can be equality compared. | |
| A type that can be less-than compared. |
Iterators
| Iterator that allows dereferenced writing. | |
| Iterator that can be both incremented and decremented. | |
| Iterator that allows passing over a linear sequence multiple times. | |
| Iterator that allows dereferenced reading. | |
| Requires metafunctions for the associated types used in the iterator concepts. | |
| A Bidirectional Iterator that allows dereferenced assignment | |
| A Forward Iterator that allows dereferenced assignment. | |
| A RandomAccessIteratorConcept that allows assignable derefentiation. | |
| A Rooted Iterator that allows dereferenced assignment. | |
| A Rooted Iterator that allows dereferenced assignment. | |
| An iterator allowing random access. | |
| Iterator that knows its container. | |
| An iterator that is both rooted and random access, allowing to implement position. |
SeqAn - Sequence Analysis Library - www.seqan.de