| 111 | |
| 112 | template <typename T> |
| 113 | void py_dealloc_generic(PyObject* obj) { |
| 114 | reinterpret_cast<T*>(obj)->op.reset(); |
| 115 | Py_TYPE(obj)->tp_free(obj); |
| 116 | } |
| 117 | |
| 118 | template <typename T, typename U, U T::Ty::*attr> |
| 119 | PyObject* py_get_generic_impl(PyObject* obj, void* /* closure */) { |