HEaaN
Crypto Lab's great homomorphic encryption library
Pointer.hpp
Go to the documentation of this file.
1 // //
3 // Copyright (C) 2021-2023 Crypto Lab Inc. //
4 // //
5 // - This file is part of HEaaN homomorphic encryption library. //
6 // - HEaaN cannot be copied and/or distributed without the express permission //
7 // of Crypto Lab Inc. //
8 // //
10 
11 #pragma once
12 
13 #include "HEaaN/HEaaNExport.hpp"
14 #include <memory>
15 
16 namespace HEaaN {
23 template <class T> class HEAAN_API Pointer {
24 
25 private:
26  std::unique_ptr<T> ptr_;
27 
28 public:
29  template <class... U> Pointer(U &&...args);
30 
31  ~Pointer();
32 
33  Pointer(Pointer const &other);
34  Pointer(Pointer &&other) noexcept;
35 
36  Pointer &operator=(const Pointer &other);
37  Pointer &operator=(Pointer &&other) noexcept;
38 
39  T &operator*();
40  T *operator->();
41 
42  T const &operator*() const;
43  T const *operator->() const;
44 };
45 
46 class PlaintextImpl;
47 extern template class HEAAN_API Pointer<PlaintextImpl>;
48 
49 class CiphertextImpl;
50 extern template class HEAAN_API Pointer<CiphertextImpl>;
51 
52 class MessageImpl;
53 extern template class HEAAN_API Pointer<MessageImpl>;
54 
55 class SecretKeyImpl;
56 extern template class HEAAN_API Pointer<SecretKeyImpl>;
57 
58 class CollectiveKeyGenDataImpl;
59 extern template class HEAAN_API Pointer<CollectiveKeyGenDataImpl>;
60 
61 } // namespace HEaaN
HEaaN::Pointer
A class holding unique_ptr but is copied with deepcopy.
Definition: Pointer.hpp:23
HEaaN::Pointer::ptr_
std::unique_ptr< T > ptr_
Definition: Pointer.hpp:26
HEaaNExport.hpp
HEAAN_API
#define HEAAN_API
Definition: HEaaNExport.hpp:26
HEaaN
Definition: Bootstrapper.hpp:16