[C++-sig] Python converters for raw pointers: request for help
Michele De Stefano
micdestefano at gmail.com
Mon Oct 26 09:29:50 CET 2009
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 <rfritz333 at 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
> rfritz at u.washington.edu -or- rfritz333 at gmail.com
>
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig at 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
More information about the Cplusplus-sig
mailing list