Zserio C++ runtime library  1.1.0
Built for Zserio 2.15.0
AllocatorHolder.h
Go to the documentation of this file.
1 #ifndef ZSERIO_ALLOCATOR_HOLDER_H_INC
2 #define ZSERIO_ALLOCATOR_HOLDER_H_INC
3 
4 #include <utility>
5 
6 namespace zserio
7 {
8 
13 template <typename ALLOC>
15 {
16 public:
17  using allocator_type = ALLOC;
18 
23  m_allocator(allocator_type())
24  {}
25 
31  explicit AllocatorHolder(const allocator_type& allocator) :
32  m_allocator(allocator)
33  {}
34 
40  explicit AllocatorHolder(allocator_type&& allocator) :
41  m_allocator(std::move(allocator))
42  {}
43 
48  ~AllocatorHolder() = default;
49 
50  AllocatorHolder(const AllocatorHolder& other) = default;
51  AllocatorHolder& operator=(const AllocatorHolder& other) = default;
52 
53  AllocatorHolder(AllocatorHolder&& other) = default;
65  {
66  return get_allocator_ref();
67  }
68 
69 protected:
75  void set_allocator(const allocator_type& allocator)
76  {
77  m_allocator = allocator;
78  }
79 
85  void set_allocator(allocator_type&& allocator)
86  {
87  m_allocator = std::move(allocator);
88  }
89 
96  {
97  return m_allocator;
98  }
99 
106  {
107  return m_allocator;
108  }
109 
110 private:
111  ALLOC m_allocator;
112 };
113 
114 } // namespace zserio
115 
116 #endif // ifndef ZSERIO_ALLOCATOR_HOLDER_H_INC
AllocatorHolder(const allocator_type &allocator)
AllocatorHolder(AllocatorHolder &&other)=default
const allocator_type & get_allocator_ref() const
AllocatorHolder(allocator_type &&allocator)
AllocatorHolder & operator=(const AllocatorHolder &other)=default
allocator_type get_allocator() const
AllocatorHolder(const AllocatorHolder &other)=default
AllocatorHolder & operator=(AllocatorHolder &&other)=default
allocator_type & get_allocator_ref()
void set_allocator(const allocator_type &allocator)
void set_allocator(allocator_type &&allocator)