26 template <
typename char_type>
33 for (
size_t i = 0; i < detail::size_in_values_v<char_type>; ++i)
36 for (
size_t i = char_type{
'A'}; i <= char_type{
'Z'}; ++i)
37 ret[i] = ret[i] - char_type{
'A'} + char_type{
'a'};
45 template <
typename char_type>
52 for (
size_t i = 0; i < detail::size_in_values_v<char_type>; ++i)
55 for (
size_t i = char_type{
'a'}; i <= char_type{
'z'}; ++i)
56 ret[i] = ret[i] - char_type{
'a'} + char_type{
'A'};
81 template <Char
char_type>
82 constexpr char_type
to_lower(char_type
const c) noexcept
85 return detail::to_lower_table<char_type>[
static_cast<u_t
>(c)];
97 template <Char
char_type>
98 constexpr char_type
to_upper(char_type
const c) noexcept
101 return detail::to_upper_table<char_type>[
static_cast<u_t
>(c)];
Provides concepts for core language types and relations that don't have concepts in C++20 (yet)...
Provides metaprogramming utilities for integer types.
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:35
constexpr char_type to_upper(char_type const c) noexcept
Converts 'a'-'z' to 'A'-'Z' respectively; other characters are returned as is.
Definition: transform.hpp:98
constexpr char_type to_lower(char_type const c) noexcept
Converts 'A'-'Z' to 'a'-'z' respectively; other characters are returned as is.
Definition: transform.hpp:82