pub struct Trellis {
pub threshold: usize,
pub n_max: usize,
/* private fields */
}Expand description
Trellis is a data structure to hold a bounded trellis
Trellis nodes hold a rug::Integer and are indexed by stage (0..n_max)
and weight_level (one of the accepted weight levels).
weight_levels for each stage are returned by Trellis::get_weight_levels().
Node values can be read and set by using the Trellis::get() and Trellis::set()
methods.
Fields§
§threshold: usize§n_max: usizeImplementations§
Source§impl Trellis
impl Trellis
Sourcepub fn get(&self, stage: usize, weight_level: usize) -> Integer
pub fn get(&self, stage: usize, weight_level: usize) -> Integer
Get function for trellis values
Sourcepub fn get_or_0(&self, stage: usize, weight_level: usize) -> Integer
pub fn get_or_0(&self, stage: usize, weight_level: usize) -> Integer
Get function for trellis values, returns 0 if weight_level is invalid
pub fn get_stage(&self, stage: usize) -> Vec<Integer>
Sourcepub fn set(&mut self, stage: usize, weight_level: usize, value: Integer)
pub fn set(&mut self, stage: usize, weight_level: usize, value: Integer)
Set function for trellis values
Sourcepub fn add(&mut self, stage: usize, weight_level: usize, value: Integer)
pub fn add(&mut self, stage: usize, weight_level: usize, value: Integer)
Function to add a value to an existing trellis value
Sourcepub fn get_weight(&self, weight_index: usize) -> usize
pub fn get_weight(&self, weight_index: usize) -> usize
Returns the weight for the given weight index
Sourcepub fn get_weights(&self) -> Vec<usize>
pub fn get_weights(&self) -> Vec<usize>
Returns the weights of this trellis
Sourcepub fn get_weight_levels(&self) -> Vec<usize>
pub fn get_weight_levels(&self) -> Vec<usize>
Returns the weight levels of this trellis
Sourcepub fn get_num_weight_levels(&self) -> usize
pub fn get_num_weight_levels(&self) -> usize
Returns the number of weight levels used by the stored data
Sourcepub fn get_weight_level_index(&self, weight_level: usize) -> usize
pub fn get_weight_level_index(&self, weight_level: usize) -> usize
Returns the index of the given weight level
pub fn get_storage_dimensions(&self) -> (usize, usize)
Sourcepub fn expand_with(
&mut self,
new_values: &mut Vec<Integer>,
) -> Result<(), &'static str>
pub fn expand_with( &mut self, new_values: &mut Vec<Integer>, ) -> Result<(), &'static str>
Increase the trellis size by one weight level mooving in the provided trellis values
Note: the values are removed from new_values
Sourcepub fn get_successors(&self, weight_level: usize) -> Vec<(usize, usize)>
pub fn get_successors(&self, weight_level: usize) -> Vec<(usize, usize)>
Returns a Vec of (weight_index, weight_level) for each weight level reachable
from weight_level with a single step
The weight levels are sorted in ascending order. Multiple entries with the same weight level are sorted by weight index in ascending order.
Sourcepub fn get_predecessors(&self, weight_level: usize) -> Vec<(usize, usize)>
pub fn get_predecessors(&self, weight_level: usize) -> Vec<(usize, usize)>
Returns a Vec of (weight_index, weight_level) for each weight level which
can reach weight_level with a single step
The tuples are sorted in ascending order wrt. the weight_level values.
Multiple tuples with the same weight_level are sorted in descending order wrt. the
weight_index.