use crate::algebra::finite_field::GF256;
use crate::data_manager::DataManager;
use crate::types::CodeParams;
pub trait HDPC {
fn mul_data(
&self,
_manager: &mut DataManager,
_params: &CodeParams,
_x_ids: &[usize],
_y_ids: &[usize],
) {
}
#[allow(deprecated)]
fn mul_binary(
&self,
gf: Option<&GF256>,
params: &CodeParams,
n: usize,
v: &dyn Fn(usize) -> Vec<u8>,
) -> Vec<Vec<u8>> {
let s = |i: usize| {
v(i).iter()
.enumerate()
.filter(|&(_, &v)| v == 1)
.map(|(j, _)| j)
.collect::<Vec<_>>()
};
self.mul_sparse(gf, params, n, &s)
}
#[deprecated(since = "1.1.0", note = "use mul_binary instead")]
fn mul_sparse(
&self,
_gf: Option<&GF256>,
_params: &CodeParams,
_n: usize,
_s: &dyn Fn(usize) -> Vec<usize>,
) -> Vec<Vec<u8>> {
vec![]
}
fn mul_sparse_sh(
&self,
_gf: Option<&GF256>,
_params: &CodeParams,
_s: &dyn Fn(usize) -> Vec<usize>,
) -> Vec<Vec<u8>> {
vec![]
}
fn gf_poly(&self) -> u16 {
0x11D_u16
}
}