poulpy/backend/src/ffi/svp.rs
backend/src/ffi/svp.rsRaw
1use crate::ffi::module::MODULE;
2use crate::ffi::vec_znx_dft::VEC_ZNX_DFT;
3
4#[repr(C)]
5#[derive(Debug, Copy, Clone)]
6pub struct svp_ppol_t {
7 _unused: [u8; 0],
8}
9pub type SVP_PPOL = svp_ppol_t;
10
11unsafe extern "C" {
12 pub unsafe fn bytes_of_svp_ppol(module: *const MODULE) -> u64;
13}
14unsafe extern "C" {
15 pub unsafe fn new_svp_ppol(module: *const MODULE) -> *mut SVP_PPOL;
16}
17unsafe extern "C" {
18 pub unsafe fn delete_svp_ppol(res: *mut SVP_PPOL);
19}
20
21unsafe extern "C" {
22 pub unsafe fn svp_prepare(module: *const MODULE, ppol: *mut SVP_PPOL, pol: *const i64);
23}
24
25unsafe extern "C" {
26 pub unsafe fn svp_apply_dft(
27 module: *const MODULE,
28 res: *const VEC_ZNX_DFT,
29 res_size: u64,
30 ppol: *const SVP_PPOL,
31 a: *const i64,
32 a_size: u64,
33 a_sl: u64,
34 );
35}
36
37unsafe extern "C" {
38 pub unsafe fn svp_apply_dft_to_dft(
39 module: *const MODULE,
40 res: *const VEC_ZNX_DFT,
41 res_size: u64,
42 res_cols: u64,
43 ppol: *const SVP_PPOL,
44 a: *const VEC_ZNX_DFT,
45 a_size: u64,
46 a_cols: u64,
47 );
48}