| /* File : example.cxx */ | |
| #include <Python.h> | |
| #include <stdio.h> | |
| #include "example.h" | |
| #include "swig_runtime.hxx" | |
| MeshCaller::MeshCaller(PyObject *pyCallable) : pyObj_(pyCallable) { | |
| if (pyObj_) { | |
| PyObject *pyMesh = PyObject_CallMethod(pyObj_, const_cast<char *>("mesh"), const_cast<char *>("()")); | |
| if (!pyMesh) | |
| throw std::runtime_error("null pyMesh"); | |
| void *ptr = 0; | |
| // Use SWIG_ConvertPtr and SWIG_TypeQuery in the SWIG external runtime | |
| if (SWIG_IsOK(SWIG_ConvertPtr(pyMesh, &ptr, SWIG_TypeQuery("Mesh *"), 0))) { | |
| Mesh *mesh = reinterpret_cast<Mesh *>(ptr); | |
| if (!mesh) | |
| throw std::runtime_error("null mesh"); | |
| const int value = mesh->value(); | |
| std::cout << "value = "<<value<<std::endl; | |
| if (value != 42) | |
| throw std::runtime_error("wrong value"); | |
| } else { | |
| throw std::runtime_error("SWIG_ConvertPtr failed"); | |
| } | |
| } | |
| } |