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 operator=(OpaquePointer&& rhs) noexcept
27 { // Move assignment operator
28 if (this != &rhs)
29 { // Prevent self-assignment
30 ptr = rhs.ptr;
31 rhs.ptr = nullptr;
32 }
33 return *this;
34 }
35
36 // Add a destructor to handle cleanup if necessary
37 ~OpaquePointer() = default;
38};
39
40void declare_opaque(py::module& m);
41
42#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:26
OpaquePointer(const OpaquePointer &rhs) noexcept=default
OpaquePointer(OpaquePointer &&rhs) noexcept
Definition opaque_type.hpp:20
OpaquePointer & operator=(const OpaquePointer &rhs)=default