SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
alignment_score_matrix_one_column_base.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#include <utility>
14#include <vector>
15
18#include <seqan3/utility/simd/concept.hpp>
19
20namespace seqan3::detail
21{
22
32template <typename score_t>
33struct alignment_score_matrix_one_column_base
34{
35protected:
36 static_assert(arithmetic<score_t> || simd_concept<score_t>,
37 "Score type must either be either an arithmetic type or a simd vector type.");
38
40 using underlying_type = score_t;
44 using allocator_type = aligned_allocator<element_type, sizeof(element_type)>;
48 using size_type = size_t;
49
50public:
52 pool_type pool{};
54 std::array<underlying_type, 3> cache{}; // Third argument is used to cache next diagonal value in non-banded case.
56 size_type num_cols{};
58 size_type num_rows{};
59};
60
61} // namespace seqan3::detail
Provides seqan3::aligned_allocator.
A type that satisfies std::is_arithmetic_v<t>.
Provides concepts that do not have equivalents in C++20.
Hide me