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