Andrew Dalke <[EMAIL PROTECTED]> writes: > Glenn Pierce wrote: >> if (!PyArg_ParseTuple(args, "isi", &format, filename, &flags)) >> return NULL; > > Shouldn't that be &filename ? See > http://docs.python.org/ext/parseTuple.html > for examples. > > >> dib = FreeImage_Load(format, filename, flags); > >> Also I have little Idea what to return from the function. FIBITMAP * is >> an opaque pointer >> that I pass to other FreeImage functions, I pretty certain >> Py_BuildValue("o", dib) is wrong. > > If it's truly opaque and you trust your use of the code you can > cast it to an integer, use the integer in the Python code, and > at the Python/C interface cast the integer back to a pointer. > Of course if it no longer exists you'll get a segfault. > > If you want more type safety you can use the SWIG approach and > encode the pointers as a string, with type information and > pointer included.
Better yet, use a CObject. That way, a destructor can be added so as to not leak memory. Type info could be included in the desc field. return PyCObject_FromVoidPtr(dib, NULL) (the NULL can be replaced with a routine that will free the image.) -- |>|\/|< /--------------------------------------------------------------------------\ |David M. Cooke |cookedm(at)physics(dot)mcmaster(dot)ca -- http://mail.python.org/mailman/listinfo/python-list