SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
transform.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
10#pragma once
11
12#include <array>
13
16
17namespace seqan3::detail
18{
19
22template <typename char_type>
24 []() constexpr
25 {
27
28 for (size_t i = 0; i < detail::size_in_values_v<char_type>; ++i)
29 ret[i] = i;
30
31 for (size_t i = char_type{'A'}; i <= char_type{'Z'}; ++i)
32 ret[i] = ret[i] - char_type{'A'} + char_type{'a'};
33
34 return ret;
35 }()};
36
39template <typename char_type>
41 []() constexpr
42 {
44
45 for (size_t i = 0; i < detail::size_in_values_v<char_type>; ++i)
46 ret[i] = i;
47
48 for (size_t i = char_type{'a'}; i <= char_type{'z'}; ++i)
49 ret[i] = ret[i] - char_type{'a'} + char_type{'A'};
50
51 return ret;
52 }()};
53
54} // namespace seqan3::detail
55
56namespace seqan3
57{
58
73template <builtin_character char_type>
74constexpr char_type to_lower(char_type const c) noexcept
75{
77 return detail::to_lower_table<char_type>[static_cast<u_t>(c)];
78}
79
89template <builtin_character char_type>
90constexpr char_type to_upper(char_type const c) noexcept
91{
93 return detail::to_upper_table<char_type>[static_cast<u_t>(c)];
94}
96
97} // namespace seqan3
A "pretty printer" for most SeqAn data structures and related types.
Definition debug_stream_type.hpp:79
Provides metaprogramming utilities for integer types.
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
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:90
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:74
Provides concepts that do not have equivalents in C++20.
Hide me