arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/base2k/src/lib.rs
base2k/src/lib.rsRaw
 1#[allow(
 2    non_camel_case_types,
 3    non_snake_case,
 4    non_upper_case_globals,
 5    dead_code,
 6    improper_ctypes
 7)]
 8pub mod ffi;
 9
10pub mod module;
11#[allow(unused_imports)]
12pub use module::*;
13
14pub mod scalar;
15#[allow(unused_imports)]
16pub use scalar::*;
17
18pub mod vec_znx;
19#[allow(unused_imports)]
20pub use vec_znx::*;
21
22pub mod vec_znx_arithmetic;
23#[allow(unused_imports)]
24pub use vec_znx_arithmetic::*;
25
26pub mod vec_znx_big_arithmetic;
27#[allow(unused_imports)]
28pub use vec_znx_big_arithmetic::*;
29
30pub mod vec_znx_dft;
31#[allow(unused_imports)]
32pub use vec_znx_dft::*;
33
34pub mod svp;
35#[allow(unused_imports)]
36pub use svp::*;
37
38pub mod vmp;
39#[allow(unused_imports)]
40pub use vmp::*;
41
42pub const GALOISGENERATOR: u64 = 5;
43
44#[allow(dead_code)]
45pub fn cast_mut_u64_to_mut_u8_slice(data: &mut [u64]) -> &mut [u8] {
46    let ptr: *mut u8 = data.as_mut_ptr() as *mut u8;
47    let len: usize = data.len() * std::mem::size_of::<u64>();
48    unsafe { std::slice::from_raw_parts_mut(ptr, len) }
49}
50
51pub fn cast_mut_u8_to_mut_i64_slice(data: &mut [u8]) -> &mut [i64] {
52    let ptr: *mut i64 = data.as_mut_ptr() as *mut i64;
53    let len: usize = data.len() / std::mem::size_of::<i64>();
54    unsafe { std::slice::from_raw_parts_mut(ptr, len) }
55}
56
57pub fn cast_mut_u8_to_mut_f64_slice(data: &mut [u8]) -> &mut [f64] {
58    let ptr: *mut f64 = data.as_mut_ptr() as *mut f64;
59    let len: usize = data.len() / std::mem::size_of::<f64>();
60    unsafe { std::slice::from_raw_parts_mut(ptr, len) }
61}
62
63pub fn cast_u8_to_f64_slice(data: &mut [u8]) -> &[f64] {
64    let ptr: *const f64 = data.as_mut_ptr() as *const f64;
65    let len: usize = data.len() / std::mem::size_of::<f64>();
66    unsafe { std::slice::from_raw_parts(ptr, len) }
67}
68
69/// This trait should be implemented by structs that point to
70/// memory allocated through C.
71pub trait Free {
72    // Frees the memory and self destructs.
73    fn free(self);
74}