owning_wrapper.hpp
1 
6 #pragma once
7 
8 #include <memory>
9 
10 namespace rapidsmpf {
11 
41  public:
43  using deleter_type = void (*)(void*);
44 
45  OwningWrapper() = default;
46 
53  explicit OwningWrapper(void* obj, deleter_type deleter)
54  : obj_{owning_type(obj, deleter)} {}
55 
61  [[nodiscard]] void* release() noexcept {
62  return obj_.release();
63  }
64 
68  [[nodiscard]] void* get() const noexcept {
69  return obj_.get();
70  }
71 
72  private:
73  using owning_type = std::unique_ptr<void, deleter_type>;
74  owning_type obj_{nullptr, [](void*) {}};
75 };
76 } // namespace rapidsmpf
Utility class to store an arbitrary type-erased object while another object is alive.
void * release() noexcept
Release ownership of the underlying pointer.
void * get() const noexcept
void(*)(void *) deleter_type
Callback used to delete the owned object.
OwningWrapper(void *obj, deleter_type deleter)
Take ownership and responsibility for the destruction of an object.
RAPIDS Multi-Processor interfaces.
Definition: backend.hpp:14