Concept¶
Adaptions of core concepts from the Ranges TS.
- Author
- Rene Rahn <rene.rahn AT fu-berlin.de>
-
namespace
seqan3¶ The main SeqAn3 namespace.
Helpers for seqan3::semi_alphabet_concept
These functions and metafunctions expose member variables and types so that they satisfy seqan3::semi_alphabet_concept.
Helpers for seqan3::alphabet_concept
These functions and metafunctions expose member variables and types so that they satisfy seqan3::alphabet_concept.
Helpers for seqan3::nucleotide_concept
These functions and metafunctions expose member variables and types so that they satisfy seqan3::nucleotide_concept.
Alphabet aliases
Other names (typedefs) for seqan3::nucl16
Core Language Concepts
-
concept bool seqan3::same_concept= static_cast<bool>(ranges::Same<ts...>()) Resolves to
ranges::Same<types...>()
-
concept bool seqan3::derived_from_conept= static_cast<bool>(ranges::DerivedFrom<t, u>()) Resolves to
ranges::DerivedFrom<type1, type2>()
-
concept bool seqan3::implicitly_convertible_to_concept= static_cast<bool>(ranges::ImplicitlyConvertibleTo<t, u>()) Resolves to
ranges::ImplicitlyConvertibleTo<type1, type2>()
-
concept bool seqan3::explicitly_convertible_to_concept= static_cast<bool>(ranges::ExplicitlyConvertibleTo<t, u>()) Resolves to
ranges::ExplicitlyConvertibleTo<type1, type2>()
-
concept bool seqan3::convertible_to_concept= implicitly_convertible_to_concept<t, u> && explicitly_convertible_to_concept<t, u> Resolves to
ranges::ConvertibleTo<type1, type2>()
-
concept bool seqan3::common_reference_concept= static_cast<bool>(ranges::CommonReference<t, u, rest...>()) Resolves to
ranges::CommonReference<type1, type2, rest...>()
-
concept bool seqan3::common_concept= static_cast<bool>(ranges::Common<t, u, rest...>()) Resolves to
ranges::Common<type1, type2, rest...>()
-
concept bool seqan3::integral_concept= static_cast<bool>(ranges::Integral<t>()) Resolves to
ranges::Integral<type>()
-
concept bool seqan3::signed_integral_concept= integral_concept<t> && static_cast<bool>(ranges::SignedIntegral<t>()) Resolves to
ranges::SignedIntegral<type>()
-
concept bool seqan3::unsigned_integral_concept= integral_concept<t> && static_cast<bool>(ranges::UnsignedIntegral<t>()) Resolves to
ranges::UnsignedIntegral<type>()
-
concept bool seqan3::assignable_concept= static_cast<bool>(ranges::Assignable<t, u>()) Resolves to
ranges::Assignable<type1, type2>()
-
concept bool seqan3::swappable_concept= static_cast<bool>(ranges::Swappable<t, u>()) Resolves to
ranges::Swappable<type1, type2>()
Comparison concepts.
-
concept bool seqan3::weakly_equality_comparable_concept= static_cast<bool>(ranges::WeaklyEqualityComparable<t, u>()) Resolves to
ranges::WeaklyEqualityComparable<type1, type2>()
-
concept bool seqan3::equality_comparable_concept= static_cast<bool>(ranges::EqualityComparable<t, u>()) Resolves to
ranges::EqualityComparable<type1, type2>()
-
concept bool seqan3::weakly_ordered_concept= static_cast<bool>(ranges::WeaklyOrdered<t>()) Resolves to
ranges::WeaklyOrdered<type1, type2>()
-
concept bool seqan3::totally_ordered_concept= equality_comparable_concept<t, u> && weakly_ordered_concept<t, u> && static_cast<bool>(ranges::TotallyOrdered<t, u>()) Resolves to
ranges::TotallyOrdered<type1, type2>()
Object Concepts.
-
concept bool seqan3::destructible_concept= static_cast<bool>(ranges::Destructible<t>()) Resolves to
ranges::Destructible<type>()
-
concept bool seqan3::constructible_concept= destructible_concept<t> && static_cast<bool>(ranges::Constructible<t, args...>()) Resolves to
ranges::Constructible<type, args...>()
-
concept bool seqan3::default_constructible_concept= constructible_concept<t> && static_cast<bool>(ranges::DefaultConstructible<t>()) Resolves to
ranges::DefaultConstructible<type>()
-
concept bool seqan3::move_constructible_concept= static_cast<bool>(ranges::MoveConstructible<t>()) Resolves to
ranges::MoveConstructible<type>()
-
concept bool seqan3::copy_constructible_concept= move_constructible_concept<t> && static_cast<bool>(ranges::CopyConstructible<t>()) Resolves to
ranges::CopyConstructible<type>()
-
concept bool seqan3::movable_concept= move_constructible_concept<t> && static_cast<bool>(ranges::Movable<t>()) Resolves to
ranges::Movable<types...>()
-
concept bool seqan3::copyable_concept= movable_concept<t> && copy_constructible_concept<t> && static_cast<bool>(ranges::Copyable<t>()) Resolves to
ranges::Copyable<type>()
-
concept bool seqan3::semi_regular_concept= copyable_concept<t> && default_constructible_concept<t> Resolves to
ranges::SemiRegular<type>()
-
concept bool seqan3::regular_concept= semi_regular_concept<t> && equality_comparable_concept<t> Resolves to
ranges::Regular<type>()
Callable Concepts.
-
concept bool seqan3::invocable_concept= static_cast<bool>(ranges::Invocable<f, args...>()) Resolves to
ranges::Invocable<func, ...args>()
-
concept bool seqan3::regular_invocable_concept= invocable_concept<f, args...> && static_cast<bool>(ranges::RegularInvocable<f, args...>()) Resolves to
ranges::RegularInvocable<func, ...args>()
-
concept bool seqan3::predicate_concept= regular_invocable_concept<f, args...> && static_cast<bool>(ranges::Predicate<f, args...>()) Resolves to
ranges::Predicate<func, ...args>()
-
concept bool seqan3::relation_concept= static_cast<bool>(ranges::Relation<f, t, u>()) Resolves to
ranges::Relation<func, type1, type2>()
Range concepts
Adapted from the Ranges TS.
Container concepts
Container concepts as defined by the standard library (or very close).
Container-of-container concepts
Shortcuts for multi-dimensional container concepts.
-
Testing the core library concepts.
- Author
- Rene Rahn <rene.rahn AT fu-berlin.de>
-
namespace
test_core_concepts¶ Functions
-
struct
type_a¶ - #include <core/concept/core_detail.hpp>
Helper struct for testing core concepts.
Subclassed by seqan3::detail::test_core_concepts::type_b
-
struct
type_b¶ - #include <core/concept/core_detail.hpp>
Helper struct for testing core concepts.
Inherits from seqan3::detail::test_core_concepts::type_a
Subclassed by seqan3::detail::test_core_concepts::type_d
-
struct
type_c¶ - #include <core/concept/core_detail.hpp>
Helper struct for testing core concepts.
-
struct
type_d¶ - #include <core/concept/core_detail.hpp>
Helper struct for testing core concepts.
Inherits from seqan3::detail::test_core_concepts::type_b
-
struct
Adaptions of Iterator concepts from the Ranges TS.
- Author
- Rene Rahn <rene.rahn AT fu-berlin.de>
-
namespace
seqan3¶ The main SeqAn3 namespace.
Helpers for seqan3::semi_alphabet_concept
These functions and metafunctions expose member variables and types so that they satisfy seqan3::semi_alphabet_concept.
Helpers for seqan3::alphabet_concept
These functions and metafunctions expose member variables and types so that they satisfy seqan3::alphabet_concept.
Helpers for seqan3::nucleotide_concept
These functions and metafunctions expose member variables and types so that they satisfy seqan3::nucleotide_concept.
Alphabet aliases
Other names (typedefs) for seqan3::nucl16
Iterator Concepts
-
concept bool seqan3::readable_concept= static_cast<bool>(ranges::Readable<t>()) Resolves to
ranges::Readable<type>()
-
concept bool seqan3::writable_concept= static_cast<bool>(ranges::Writable<out, t>()) Resolves to
ranges::Writable<out_type, type>()
-
concept bool seqan3::weakly_incrementable_concept= semi_regular_concept<i> && static_cast<bool>(ranges::WeaklyIncrementable<i>()) Resolves to
ranges::WeaklyIncrementable<type>()
-
concept bool seqan3::incrementable_concept= regular_concept<i> && weakly_incrementable_concept<i> && static_cast<bool>(ranges::Incrementable<i>()) Resolves to
ranges::Incrementable<type>()
-
concept bool seqan3::iterator_concept= weakly_incrementable_concept<i> && copyable_concept<i> && static_cast<bool>(ranges::Iterator<i>()) Resolves to
ranges::Iterator<iterator_type>()
-
concept bool seqan3::sentinel_concept= semi_regular_concept<s> && iterator_concept<i> && static_cast<bool>(ranges::Sentinel<s, i>()) Resolves to
ranges::Sentinel<sentinel_type, iterator_type>()
-
concept bool seqan3::sized_sentinel_concept= sentinel_concept<s, i> && static_cast<bool>(ranges::SizedSentinel<s, i>()) Resolves to
ranges::SizedSentinel<sentinel_type, iterator_type>()
-
concept bool seqan3::output_iterator_concept= iterator_concept<out> && writable_concept<out, t> && static_cast<bool>(ranges::OutputIterator<out, t>()) Resolves to
ranges::OutputIterator<iterator_type, type>()
-
concept bool seqan3::input_iterator_concept= iterator_concept<i> && readable_concept<i> && static_cast<bool>(ranges::InputIterator<i>()) Resolves to
ranges::InputIterator<iterator_type>()
-
concept bool seqan3::forward_iterator_concept= input_iterator_concept<i> && incrementable_concept<i> && sentinel_concept<i, i> && static_cast<bool>(ranges::ForwardIterator<i>()) Resolves to
ranges::ForwardIterator<iterator_type>()
-
concept bool seqan3::bidirectional_iterator_concept= forward_iterator_concept<i> && static_cast<bool>(ranges::BidirectionalIterator<i>()) Resolves to
ranges::BidirectionalIterator<iterator_type>()
-
concept bool seqan3::random_access_iterator_concept= bidirectional_iterator_concept<i> && totally_ordered_concept<i> && sized_sentinel_concept<i, i> && static_cast<bool>(ranges::RandomAccessIterator<i>()) Resolves to
ranges::RandomAccessIterator<iterator_type>()
Range concepts
Adapted from the Ranges TS.
Container concepts
Container concepts as defined by the standard library (or very close).
Container-of-container concepts
Shortcuts for multi-dimensional container concepts.
-
Testing the iterator concepts.
- Author
- Rene Rahn <rene.rahn AT fu-berlin.de>
- template <typename value_t, typename... ts>
-
template<>
structvalue<ranges::ostream_iterator<value_t, ts...>>¶ Public Types
-
template<>
usingtype= value_t¶
-
template<>
-
namespace
test_iter_concepts¶ Typedefs
-
using
seqan3::detail::test_iter_concepts::input_iterator = typedef std::istream_iterator<char> Typedef for an input_iterator.
-
using
seqan3::detail::test_iter_concepts::output_iterator = typedef ranges::ostream_iterator<char> Typedef for an output_iterator.
-
using
seqan3::detail::test_iter_concepts::forward_iterator = typedef std::forward_list<char>::iterator Typedef for an forward_iterator.
-
using
seqan3::detail::test_iter_concepts::bidirectional_iterator = typedef std::list<char>::iterator Typedef for an bidirectional_iterator.
-
using
seqan3::detail::test_iter_concepts::random_access_iterator = typedef std::vector<char>::iterator Typedef for an random_access_iterator.
-
using
seqan3::detail::test_iter_concepts::forward_iterator_const = typedef std::forward_list<char>::const_iterator Typedef for an const forward_iterator.
-
using
seqan3::detail::test_iter_concepts::bidirectional_iterator_const = typedef std::list<char>::const_iterator Typedef for an const bidirectional_iterator.
-
using
seqan3::detail::test_iter_concepts::random_access_iterator_const = typedef std::vector<char>::const_iterator Typedef for an const random_access_iterator.
-
using
seqan3::detail::test_iter_concepts::value_type_t = typedef typename value<iterator_type>::type Helper typedef for value_type for testing sized sentinel concept.
Functions
- template <typename iterator_t, typename value_t>
-
bool
operator==(iterator_t const &i, test_sentinel<value_t> const &s)¶ Comparison operator overload for testing sentinel concept.
- template <typename iterator_t, typename value_t>
-
bool
operator!=(iterator_t const &i, test_sentinel<value_t> const &s)¶ Comparison operator overload for testing sentinel concept.
- template <typename value_t, typename iterator_t>
-
bool
operator==(test_sentinel<value_t> const &s, iterator_t const &i)¶ Comparison operator overload for testing sentinel concept.
- template <typename value_t, typename iterator_t>
-
bool
operator!=(test_sentinel<value_t> const &s, iterator_t const &i)¶ Comparison operator overload for testing sentinel concept.
- template <typename iterator_t>
-
requires random_access_iterator_concept<iterator_t> test_sized_sentinel<iterator_t>::difference_type seqan3::detail::test_iter_concepts::operator-(test_sized_sentinel < iterator_t > const & s, iterator_t const & i) Difference operator overload for testing sized sentinel concept.
- template <typename iterator_t>
-
requires random_access_iterator_concept<iterator_t> test_sized_sentinel<iterator_t>::difference_type seqan3::detail::test_iter_concepts::operator-(iterator_t const & i, test_sized_sentinel < iterator_t > const & s) Difference operator overload for testing sized sentinel concept.
- template <typename value_t>
-
struct
test_sentinel¶ - #include <core/concept/iterator_detail.hpp>
Test object for testing sentinels.
Public Members
-
value_type
val= {}¶
-
value_type
- template <typename iterator_type>
-
struct
test_sized_sentinel¶ - #include <core/concept/iterator_detail.hpp>
Helper struct for testing sized sentinel concept.
Inherits from seqan3::detail::test_iter_concepts::test_sentinel< value_type_t< iterator_type > >
- template <typename iterator_type>
-
struct
value¶ - #include <core/concept/iterator_detail.hpp>
Metafunction overload for testing sentinel concept.
Public Types
-
template<>
usingtype= typename std::iterator_traits<iterator_type>::value_type¶
-
template<>
- template <typename value_t, typename... ts>
-
template<>
structvalue<ranges::ostream_iterator<value_t, ts...>> Public Types
-
template<>
usingtype= value_t
-
template<>
-
using