Loading...
Searching...
No Matches
alignment_score_matrix_one_column_base.hpp
Go to the documentation of this file.
// SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin
// SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik
// SPDX-License-Identifier: BSD-3-Clause
#pragma once
#include <array>
#include <utility>
#include <vector>
#include <seqan3/utility/concept.hpp>
#include <seqan3/utility/container/aligned_allocator.hpp>
#include <seqan3/utility/simd/concept.hpp>
namespace seqan3::detail
{
template <typename score_t>
struct alignment_score_matrix_one_column_base
{
protected:
static_assert(arithmetic<score_t> || simd_concept<score_t>,
"Score type must either be either an arithmetic type or a simd vector type.");
using underlying_type = score_t;
using element_type = std::tuple<underlying_type, underlying_type>;
using allocator_type = aligned_allocator<element_type, sizeof(element_type)>;
using pool_type = std::vector<element_type, allocator_type>;
using size_type = size_t;
public:
pool_type pool{};
std::array<underlying_type, 3> cache{}; // Third argument is used to cache next diagonal value in non-banded case.
size_type num_cols{};
size_type num_rows{};
};
} // namespace seqan3::detail
aligned_allocator.hpp
Provides seqan3::aligned_allocator.
array
concept.hpp
Provides concepts that do not have equivalents in C++20.
utility
vector
Hide me