42 #if PY_MAJOR_VERSION == 2 43 template<
typename T,
typename F>
46 std::shared_ptr<NekMatrix<T, F>> *mat =
47 (std::shared_ptr<NekMatrix<T, F>> *)ptr;
51 template<
typename T,
typename F>
54 std::shared_ptr<NekMatrix<T, F>> *mat =
55 (std::shared_ptr<NekMatrix<T, F>> *)PyCapsule_GetPointer(ptr, 0);
69 #if PY_MAJOR_VERSION == 2 71 py::handle<>(PyCObject_FromVoidPtr(
73 NekMatrixCapsuleDestructor<T, StandardMatrixTag>)));
76 py::handle<>(PyCapsule_New(
78 (PyCapsule_Destructor)&NekMatrixCapsuleDestructor<T, StandardMatrixTag>)));
81 int nRows = mat->GetRows(), nCols = mat->GetColumns();
84 ASSERTL0(storage ==
eFULL,
"Only full storage matrices are currently supported.");
88 mat->GetRawPtr(), np::dtype::get_builtin<T>(),
89 py::make_tuple(nRows, nCols),
90 py::make_tuple(
sizeof(T), nRows *
sizeof(T)),
98 py::to_python_converter<std::shared_ptr<NekMatrix<T, StandardMatrixTag>>,
#define ASSERTL0(condition, msg)
static PyObject * convert(std::shared_ptr< NekMatrix< T, StandardMatrixTag >> const &mat)
void NekMatrixCapsuleDestructor(PyObject *ptr)
template void export_NekMatrix< double >()