poulpy/poulpy-hal/src/oep/svp_ppol.rs
poulpy-hal/src/oep/svp_ppol.rsRaw
1use crate::layouts::{Backend, Module, ScalarZnxToRef, SvpPPolOwned, SvpPPolToMut, SvpPPolToRef, VecZnxDftToMut, VecZnxDftToRef};
2
3/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
4/// * See TODO for reference code.
5/// * See TODO for corresponding public API.
6/// # Safety [crate::doc::backend_safety] for safety contract.
7pub unsafe trait SvpPPolFromBytesImpl<B: Backend> {
8 fn svp_ppol_from_bytes_impl(n: usize, cols: usize, bytes: Vec<u8>) -> SvpPPolOwned<B>;
9}
10
11/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
12/// * See TODO for reference code.
13/// * See TODO for corresponding public API.
14/// # Safety [crate::doc::backend_safety] for safety contract.
15pub unsafe trait SvpPPolAllocImpl<B: Backend> {
16 fn svp_ppol_alloc_impl(n: usize, cols: usize) -> SvpPPolOwned<B>;
17}
18
19/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
20/// * See TODO for reference code.
21/// * See TODO for corresponding public API.
22/// # Safety [crate::doc::backend_safety] for safety contract.
23pub unsafe trait SvpPPolAllocBytesImpl<B: Backend> {
24 fn svp_ppol_alloc_bytes_impl(n: usize, cols: usize) -> usize;
25}
26
27/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
28/// * See TODO for reference code.
29/// * See TODO for corresponding public API.
30/// # Safety [crate::doc::backend_safety] for safety contract.
31pub unsafe trait SvpPrepareImpl<B: Backend> {
32 fn svp_prepare_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
33 where
34 R: SvpPPolToMut<B>,
35 A: ScalarZnxToRef;
36}
37
38/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
39/// * See TODO for reference code.
40/// * See TODO for corresponding public API.
41/// # Safety [crate::doc::backend_safety] for safety contract.
42pub unsafe trait SvpApplyImpl<B: Backend> {
43 fn svp_apply_impl<R, A, C>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize, b: &C, b_col: usize)
44 where
45 R: VecZnxDftToMut<B>,
46 A: SvpPPolToRef<B>,
47 C: VecZnxDftToRef<B>;
48}
49
50/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
51/// * See TODO for reference code.
52/// * See TODO for corresponding public API.
53/// # Safety [crate::doc::backend_safety] for safety contract.
54pub unsafe trait SvpApplyInplaceImpl: Backend {
55 fn svp_apply_inplace_impl<R, A>(module: &Module<Self>, res: &mut R, res_col: usize, a: &A, a_col: usize)
56 where
57 R: VecZnxDftToMut<Self>,
58 A: SvpPPolToRef<Self>;
59}