arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/rlwe/src/plaintext.rs
rlwe/src/plaintext.rsRaw
 1use crate::ciphertext::Ciphertext;
 2use crate::elem::Elem;
 3use base2k::VecZnx;
 4
 5pub struct Plaintext(pub Elem);
 6
 7/*
 8impl Parameters {
 9    pub fn new_plaintext(&self, log_q: usize) -> Plaintext {
10        Plaintext(self.new_elem(0, log_q))
11    }
12}
13*/
14
15impl Plaintext {
16    pub fn new(n: usize, log_base2k: usize, log_q: usize) -> Self {
17        Self(Elem::new(n, log_base2k, log_q, 0))
18    }
19
20    pub fn n(&self) -> usize {
21        self.0.n()
22    }
23
24    pub fn degree(&self) -> usize {
25        self.0.degree()
26    }
27
28    pub fn log_q(&self) -> usize {
29        self.0.log_q()
30    }
31
32    pub fn limbs(&self) -> usize {
33        self.0.limbs()
34    }
35
36    pub fn at(&self, i: usize) -> &VecZnx {
37        self.0.at(i)
38    }
39
40    pub fn at_mut(&mut self, i: usize) -> &mut VecZnx {
41        self.0.at_mut(i)
42    }
43
44    pub fn log_base2k(&self) -> usize {
45        self.0.log_base2k()
46    }
47
48    pub fn as_ciphertext(&self) -> Ciphertext {
49        unsafe { Ciphertext(std::ptr::read(&self.0)) }
50    }
51}