arnaucube
arnaucube/poulpyPublic Self-hosted repository
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}