SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
alignment_trace_matrix_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 <vector>
13
18#include <seqan3/utility/simd/concept.hpp>
19
20namespace seqan3::detail
21{
22
34template <typename trace_t>
35struct alignment_trace_matrix_base
36{
37protected:
38 static_assert(std::same_as<trace_t, trace_directions> || simd_concept<trace_t>,
39 "Value type must either be a trace_directions object or a simd vector.");
40
42 using coordinate_type = advanceable_alignment_coordinate<advanceable_alignment_coordinate_state::row>;
44 using element_type = trace_t;
47 aligned_allocator<element_type, sizeof(element_type)>,
50 using pool_type = two_dimensional_matrix<element_type, allocator_type, matrix_major_order::column>;
52 using size_type = size_t;
53
54public:
56 pool_type data{};
60 element_type cache_up{};
62 size_type num_cols{};
64 size_type num_rows{};
65};
66
67} // namespace seqan3::detail
Provides seqan3::detail::advanceable_alignment_coordinate.
Provides seqan3::aligned_allocator.
T data(T... args)
Provides the declaration of seqan3::detail::trace_directions.
Provides seqan3::detail::two_dimensional_matrix.
Hide me