noodles_cram/container/compression_header/
preservation_map.rs

1//! CRAM container compression header preservation map.
2
3pub(crate) mod key;
4pub(crate) mod substitution_matrix;
5pub mod tag_sets;
6
7pub(crate) use {key::Key, substitution_matrix::SubstitutionMatrix, tag_sets::TagSets};
8
9#[derive(Clone, Debug, Eq, PartialEq)]
10pub(crate) struct PreservationMap {
11    pub(crate) records_have_names: bool,
12    pub(crate) alignment_starts_are_deltas: bool,
13    pub(crate) external_reference_sequence_is_required: bool,
14    pub(crate) substitution_matrix: SubstitutionMatrix,
15    pub(crate) tag_sets: TagSets,
16}
17
18impl PreservationMap {
19    pub fn new(
20        records_have_names: bool,
21        alignment_starts_are_deltas: bool,
22        external_reference_sequence_is_required: bool,
23        substitution_matrix: SubstitutionMatrix,
24        tag_sets: TagSets,
25    ) -> Self {
26        Self {
27            records_have_names,
28            alignment_starts_are_deltas,
29            external_reference_sequence_is_required,
30            substitution_matrix,
31            tag_sets,
32        }
33    }
34
35    pub fn records_have_names(&self) -> bool {
36        self.records_have_names
37    }
38
39    pub fn alignment_starts_are_deltas(&self) -> bool {
40        self.alignment_starts_are_deltas
41    }
42
43    pub fn external_reference_sequence_is_required(&self) -> bool {
44        self.external_reference_sequence_is_required
45    }
46
47    pub fn substitution_matrix(&self) -> &SubstitutionMatrix {
48        &self.substitution_matrix
49    }
50
51    pub fn tag_sets(&self) -> &TagSets {
52        &self.tag_sets
53    }
54}
55
56impl Default for PreservationMap {
57    fn default() -> Self {
58        Self {
59            records_have_names: true,
60            alignment_starts_are_deltas: true,
61            external_reference_sequence_is_required: true,
62            substitution_matrix: SubstitutionMatrix::default(),
63            tag_sets: TagSets::default(),
64        }
65    }
66}