Re: [Pyobjc-dev] VTK bindings
Brought to you by:
ronaldoussoren
From: Ronald O. <ous...@ci...> - 2003-12-06 20:27:15
|
On 6 dec 2003, at 20:40, Carlos Phillips wrote: >> Do you parse the method arguments using PyArg_ParseTuple? See one of >> the method mappings in the Foundation and AppKit wrappers for an >> example of argument parsing. > > > I have included my call_VTKView_renderer function below. I simply > ignore the arguments since the method renderer does not take any > arguments. > > Carlos > > static PyObject* > call_VTKView_renderer( > PyObject* method, PyObject* self, PyObject* arguments) > { > PyObject *result = 0; > VTKView *objc_self = 0; > vtkRenderer *renderer = 0; > const char *rendererAddr = 0; > > // Get objc representation of self. > objc_self = PyObjC_PythonToId(self); > > // Get the renderer > renderer = [objc_self renderer]; > > // Convert pointer to mangled form > rendererAddr = vtkPythonManglePointer(renderer, "p_vtkRenderer"); > > // Import the VTK module and get the vtkRenderer class > PyObject *vtk_module = PyImport_ImportModule("vtk"); > PyObject *vtkRendererPyClass = > PyObject_GetAttrString(vtk_module, "vtkRenderer"); > > // Create a python object for renderer. If renderer has > // already been wrapped in python, then the existing python object > // is returned. > result = PyObject_CallObject(vtkRendererPyClass, Py_None); This is the problem: Use PyObject_CallFunction(vtkRenderPyClass, "O", Py_None) instead, CallObject expects an argument tuple (hence the error message you were getting). BTW. The code below doesn't seem to use ``rendererAddr``. Ronald |