I was forgetting to give an example of the Python code I would like to write:
>>> from petsc4py import PETSc ... now some uninteresting code for building a PETSc.Mat python object ... ... the result will be a PETSc.Mat m object .... ... once created, if I write "m" and press RETURN, this is the output ... >>> m <petsc4py.PETSc.Mat object at 0xb7bea548> ... so, basically, I already have a PETSc Mat in Python, because it is exposed by the petsc4py package ... ... Now I want to pass this Python object to my "print_Mat" function ... ... What I'd like to write is ... >>> form my_extension import * >>> print_Mat(m) I hope now it's all clear. Thank you in advance. Michele 2009/10/26 Michele De Stefano <micdestef...@gmail.com>: > Ok. Let me clarify (I looked at the link you suggested, but I've not > found the answers I was looking for). > > There exist a "petsc4py" package, which can be extended using its C > API. This package, already exposes PETSc types (and also the Mat > type). petsc4py is not programmed using Boost Python. > > Now, assume I already have a C++ function that takes a Mat parameter; > to make it simple, let's take > > void print_Mat(Mat m) { > ... // The implementation is not interesting > }; > > I'd like to expose this function to Python, with a seamless > integration mechanism, using Boost Python. > > Unfortunately, if I use the petsc4py API, I have to expose a wrapper > for "print_Mat", in this way: > > void print_Mat_Wrap(const object& mat_obj) { > Mat m( PyPetscMat_Get(mat_obj.ptr()) ); > ... // The rest is not important > } > > I don't know anything of the petsc4py implementation, but I know that > it already exposes PETSc Mat to Python. I know also that, using the > petsc4py C API, the only way to retrieve a Mat from a > PyObject* is through the PyPetscMat_Get function, whose signature is this one: > > Mat (*PyPetscMat_Get)(PyObject *); > > I know for sure that Mat objects are not allocated with the C++ new > operator (I don't know if this is a useful information for you). > > What I'd really like to do, would be to write a from-Python-converter > from a PyObject* (containing a petsc4py exposed Mat) into a Mat, in > order to be able to directly expose my "void print_Mat(Mat m)" without > writing any wrapper ... but I didn't manage to properly make it ... > > Is this possible ? > > > 2009/10/26 Randolph Fritz <rfritz...@gmail.com>: >> Additional thought. Take a look at: >> <http://wiki.python.org/moin/boost.python/PointersAndSmartPointers#OSGexample> >> & see if it helps clarify some of the problems. >> >> -- >> Randolph Fritz >> design machine group, architecture department, university of washington >> rfr...@u.washington.edu -or- rfritz...@gmail.com >> >> _______________________________________________ >> Cplusplus-sig mailing list >> Cplusplus-sig@python.org >> http://mail.python.org/mailman/listinfo/cplusplus-sig >> > > > > -- > Michele De Stefano > http://www.linkedin.com/in/micdestefano > http://xoomer.virgilio.it/michele_de_stefano > -- Michele De Stefano http://www.linkedin.com/in/micdestefano http://xoomer.virgilio.it/michele_de_stefano _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig