SeqAn3 3.1.0
The Modern C++ library for sequence analysis.
alignment_trace_matrix_base.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 <vector>
16
22
23namespace seqan3::detail
24{
25
37template <typename trace_t>
38struct alignment_trace_matrix_base
39{
40protected:
41 static_assert(std::same_as<trace_t, trace_directions> || simd_concept<trace_t>,
42 "Value type must either be a trace_directions object or a simd vector.");
43
45 using coordinate_type = advanceable_alignment_coordinate<advanceable_alignment_coordinate_state::row>;
47 using element_type = trace_t;
50 aligned_allocator<element_type, sizeof(element_type)>,
53 using pool_type = two_dimensional_matrix<element_type, allocator_type, matrix_major_order::column>;
55 using size_type = size_t;
56
57public:
59 pool_type data{};
63 element_type cache_up{};
65 size_type num_cols{};
67 size_type num_rows{};
68};
69
70} // 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.
Provides seqan3::simd::simd_concept.