use base2k::{Backend, Module, VecZnx, VecZnxAlloc, VecZnxToMut, VecZnxToRef}; use crate::{elem::Infos, utils::derive_size}; pub struct GLWEPlaintext { pub data: VecZnx, pub basek: usize, pub k: usize, } impl Infos for GLWEPlaintext { type Inner = VecZnx; fn inner(&self) -> &Self::Inner { &self.data } fn basek(&self) -> usize { self.basek } fn k(&self) -> usize { self.k } } impl VecZnxToMut for GLWEPlaintext where VecZnx: VecZnxToMut, { fn to_mut(&mut self) -> VecZnx<&mut [u8]> { self.data.to_mut() } } impl VecZnxToRef for GLWEPlaintext where VecZnx: VecZnxToRef, { fn to_ref(&self) -> VecZnx<&[u8]> { self.data.to_ref() } } impl GLWEPlaintext> { pub fn new(module: &Module, base2k: usize, k: usize) -> Self { Self { data: module.new_vec_znx(1, derive_size(base2k, k)), basek: base2k, k, } } }