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 = default; // Default copy constructor
16
17 OpaquePointer& operator=(const OpaquePointer& rhs) = default;
18
19 OpaquePointer(OpaquePointer&& rhs) noexcept : ptr(rhs.ptr)
20 { // Move constructor
21 rhs.ptr = nullptr;
22 }
23
25 { // Move assignment operator
26 if (this != &rhs)
27 { // Prevent self-assignment
28 ptr = rhs.ptr;
29 rhs.ptr = nullptr;
30 }
31 return *this;
32 }
33
34 // Add a destructor to handle cleanup if necessary
35 ~OpaquePointer() = default;
36};
37
38void declare_opaque(py::module& m);
39
40#endif //__PY_OPAQUE_HPP__
Definition import_py.hpp:8
Definition opaque_type.hpp:10
~OpaquePointer()=default
void * ptr
Definition opaque_type.hpp:11
OpaquePointer()=default
OpaquePointer & operator=(OpaquePointer &&rhs) noexcept
Definition opaque_type.hpp:24
OpaquePointer(const OpaquePointer &rhs) noexcept=default
OpaquePointer(OpaquePointer &&rhs) noexcept
Definition opaque_type.hpp:19
OpaquePointer & operator=(const OpaquePointer &rhs)=default