SeqAn3 3.1.0
The Modern C++ library for sequence analysis.
transform.hpp
Go to the documentation of this file.
1// -----------------------------------------------------------------------------------------------------
2// Copyright (c) 2006-2021, Knut Reinert & Freie Universität Berlin
3// Copyright (c) 2016-2021, Knut Reinert & MPI für molekulare Genetik
4// This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5// shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6// -----------------------------------------------------------------------------------------------------
7
13#pragma once
14
15#include <array>
16
19
20namespace seqan3::detail
21{
22
25template <typename char_type>
27{
28 [] () constexpr
29 {
31
32 for (size_t i = 0; i < detail::size_in_values_v<char_type>; ++i)
33 ret[i] = i;
34
35 for (size_t i = char_type{'A'}; i <= char_type{'Z'}; ++i)
36 ret[i] = ret[i] - char_type{'A'} + char_type{'a'};
37
38 return ret;
39 } ()
40};
41
44template <typename char_type>
46{
47 [] () constexpr
48 {
50
51 for (size_t i = 0; i < detail::size_in_values_v<char_type>; ++i)
52 ret[i] = i;
53
54 for (size_t i = char_type{'a'}; i <= char_type{'z'}; ++i)
55 ret[i] = ret[i] - char_type{'a'} + char_type{'A'};
56
57 return ret;
58 } ()
59};
60
61} // namespace seqan3::detail
62
63namespace seqan3
64{
65
80template <builtin_character char_type>
81constexpr char_type to_lower(char_type const c) noexcept
82{
84 return detail::to_lower_table<char_type>[static_cast<u_t>(c)];
85}
86
96template <builtin_character char_type>
97constexpr char_type to_upper(char_type const c) noexcept
98{
100 return detail::to_upper_table<char_type>[static_cast<u_t>(c)];
101}
103
104} // namespace seqan3
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: cigar_operation_table.hpp:2
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:97
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:81