BioCMAMC-ST
opaque_type.hpp
1#ifndef __PY_OPAQUE_HPP__
2#define __PY_OPAQUE_HPP__
3
4#include <pybind11/pybind11.h>
5#include <pybind11/pytypes.h>
6#include <pybind11/stl.h>
7
8namespace py = pybind11;
10{
11 void* ptr{nullptr}; // Ensure ptr is initialized to nullptr by default
12
13 OpaquePointer() = default; // Default constructor
14
15 OpaquePointer(const OpaquePointer& rhs) noexcept =
16 default; // Default copy constructor
17
18 OpaquePointer& operator=(const OpaquePointer& rhs) = default;
19
20 OpaquePointer(OpaquePointer&& rhs) noexcept : ptr(rhs.ptr)
21 { // Move constructor
22 rhs.ptr = nullptr;
23 }
24
26 { // Move assignment operator
27 if (this != &rhs)
28 { // Prevent self-assignment
29 ptr = rhs.ptr;
30 rhs.ptr = nullptr;
31 }
32 return *this;
33 }
34
35 // Add a destructor to handle cleanup if necessary
36 ~OpaquePointer() = default;
37};
38
39void declare_opaque(py::module& m);
40
41#endif //__PY_OPAQUE_HPP__
Definition import_py.hpp:8
~OpaquePointer()=default
void * ptr
Definition opaque_type.hpp:11
OpaquePointer()=default
OpaquePointer & operator=(OpaquePointer &&rhs) noexcept
Definition opaque_type.hpp:25
OpaquePointer(const OpaquePointer &rhs) noexcept=default
OpaquePointer(OpaquePointer &&rhs) noexcept
Definition opaque_type.hpp:20
OpaquePointer & operator=(const OpaquePointer &rhs)=default