noodles_cram/container/
compression_header.rs

1//! CRAM container compression header.
2
3pub mod data_series_encodings;
4pub(crate) mod encoding;
5pub mod preservation_map;
6mod tag_encodings;
7
8pub(crate) use self::{
9    data_series_encodings::DataSeriesEncodings, encoding::Encoding,
10    preservation_map::PreservationMap, tag_encodings::TagEncodings,
11};
12
13/// A CRAM container compression header.
14///
15/// The compression header has three maps with information about how the data is compressed: a
16/// preservation map, a data series encodings, and a tag encoding map.
17#[derive(Clone, Debug, Default, Eq, PartialEq)]
18pub struct CompressionHeader {
19    pub(crate) preservation_map: PreservationMap,
20    pub(crate) data_series_encodings: DataSeriesEncodings,
21    pub(crate) tag_encodings: TagEncodings,
22}
23
24impl CompressionHeader {
25    pub(crate) fn new(
26        preservation_map: PreservationMap,
27        data_series_encodings: DataSeriesEncodings,
28        tag_encodings: TagEncodings,
29    ) -> Self {
30        Self {
31            preservation_map,
32            data_series_encodings,
33            tag_encodings,
34        }
35    }
36
37    pub(crate) fn preservation_map(&self) -> &PreservationMap {
38        &self.preservation_map
39    }
40
41    pub(crate) fn data_series_encodings(&self) -> &DataSeriesEncodings {
42        &self.data_series_encodings
43    }
44
45    pub(crate) fn tag_encodings(&self) -> &TagEncodings {
46        &self.tag_encodings
47    }
48}