소스 검색

Plaintext minor improvement

Hovsep Papoyan 9 달 전
부모
커밋
81ad79b5e6
3개의 변경된 파일24개의 추가작업 그리고 12개의 파일을 삭제
  1. 14 6
      src/Plaintext.cc
  2. 5 3
      src/Plaintext.h
  3. 5 3
      src/lib.rs

+ 14 - 6
src/Plaintext.cc

@@ -105,6 +105,10 @@ void Plaintext::SetSlots(const uint32_t s) const
 {
     m_plaintext->SetSlots(s);
 }
+void Plaintext::SetStringValue(const std::string& value) const
+{
+    m_plaintext->SetStringValue(value);
+}
 std::unique_ptr<std::vector<ComplexPair>> Plaintext::GetCopyOfCKKSPackedValue() const
 {
     const std::vector<std::complex<double>>& v = m_plaintext->GetCKKSPackedValue();
@@ -116,17 +120,21 @@ std::unique_ptr<std::vector<ComplexPair>> Plaintext::GetCopyOfCKKSPackedValue()
     }
     return std::make_unique<std::vector<ComplexPair>>(std::move(result));
 }
-std::unique_ptr<std::vector<int64_t>> Plaintext::GetCopyOfPackedValue() const
+const std::vector<int64_t>& Plaintext::GetPackedValue() const
+{
+    return m_plaintext->GetPackedValue();
+}
+std::unique_ptr<std::vector<double>>Plaintext::GetRealPackedValue() const
 {
-    return std::make_unique<std::vector<int64_t>>(m_plaintext->GetPackedValue());
+    return std::make_unique<std::vector<double>>(std::move(m_plaintext->GetRealPackedValue()));
 }
-std::unique_ptr<std::vector<double>> Plaintext::GetCopyOfRealPackedValue() const
+const std::vector<int64_t>& Plaintext::GetCoefPackedValue() const
 {
-    return std::make_unique<std::vector<double>>(m_plaintext->GetRealPackedValue());
+    return m_plaintext->GetCoefPackedValue();
 }
-std::unique_ptr<std::vector<int64_t>> Plaintext::GetCopyOfCoefPackedValue() const
+const std::string& Plaintext::GetStringValue() const
 {
-    return std::make_unique<std::vector<int64_t>>(m_plaintext->GetCoefPackedValue());
+    return m_plaintext->GetStringValue();
 }
 std::unique_ptr<Plaintext> GenEmptyPlainText()
 {

+ 5 - 3
src/Plaintext.h

@@ -48,11 +48,13 @@ public:
     void SetNoiseScaleDeg(const size_t nsd) const;
     void SetScalingFactor(const double sf) const;
     void SetSlots(const uint32_t s) const;
+    void SetStringValue(const std::string& value) const;
 
     [[nodiscard]] std::unique_ptr<std::vector<ComplexPair>> GetCopyOfCKKSPackedValue() const;
-    [[nodiscard]] std::unique_ptr<std::vector<int64_t>> GetCopyOfPackedValue() const;
-    [[nodiscard]] std::unique_ptr<std::vector<double>> GetCopyOfRealPackedValue() const;
-    [[nodiscard]] std::unique_ptr<std::vector<int64_t>> GetCopyOfCoefPackedValue() const;
+    [[nodiscard]] const std::vector<int64_t>& GetPackedValue() const;
+    [[nodiscard]] std::unique_ptr<std::vector<double>> GetRealPackedValue() const;
+    [[nodiscard]] const std::vector<int64_t>& GetCoefPackedValue() const;
+    [[nodiscard]] const std::string& GetStringValue() const;
 };
 [[nodiscard]] std::unique_ptr<Plaintext> GenEmptyPlainText();
 

+ 5 - 3
src/lib.rs

@@ -513,9 +513,11 @@ pub mod ffi
         fn SetNoiseScaleDeg(self: &Plaintext, nsd: usize);
         fn SetScalingFactor(self: &Plaintext, sf: f64);
         fn SetSlots(self: &Plaintext, s: u32);
-        fn GetCopyOfPackedValue(self: &Plaintext) -> UniquePtr<CxxVector<i64>>;
-        fn GetCopyOfRealPackedValue(self: &Plaintext) -> UniquePtr<CxxVector<f64>>;
-        fn GetCopyOfCoefPackedValue(self: &Plaintext) -> UniquePtr<CxxVector<i64>>;
+        fn SetStringValue(self: &Plaintext, value: &CxxString);
+        fn GetPackedValue(self: &Plaintext) -> &CxxVector<i64>;
+        fn GetRealPackedValue(self: &Plaintext) -> UniquePtr<CxxVector<f64>>;
+        fn GetCoefPackedValue(self: &Plaintext) -> &CxxVector<i64>;
+        fn GetStringValue(self: &Plaintext) -> &CxxString;
         fn GetCopyOfCKKSPackedValue(self: &Plaintext) -> UniquePtr<CxxVector<ComplexPair>>;
     }