use super::{HDPC, LDPC};
use crate::types::{
BackSubstitutionMethod, CodeParams, CodeType, DegreeSetFn, InactivationStrategy,
};
pub trait CodeScheme {
fn get_params(&self) -> CodeParams;
fn code_type(&self) -> CodeType;
fn create_degree_set_fn(&self) -> DegreeSetFn;
#[allow(clippy::type_complexity)]
fn create_precode(&self) -> (Option<Box<dyn HDPC>>, Option<Box<dyn LDPC>>);
fn max_inactive_num(&self) -> usize{
self.get_params().h + self.get_params().b
}
fn inac_strategy(&self) -> InactivationStrategy {
InactivationStrategy::ByIndex
}
fn back_substitution_method(&self) -> BackSubstitutionMethod {
BackSubstitutionMethod::Direct
}
}