Swig and pointers
Java and Swing
codecraig at gmail.com
Thu Oct 6 12:22:22 EDT 2005
(reposting, i was just told how I should properly reply via
groups.google.com)
im sorry, why would it be md_ptr? what is md_ptr?
i tried..
%include cpointer.i
%pointer_functions(MY_DIGIT, digit_ptr)
ptr = new_digit_ptr()
doIt("a message", ptr)
...doesnt work..still needs a DIGIT **
Miki Tebeka wrote:
> Hello Java,
>
> > ...
> > extern int doIt(char *a, MY_DIGIT **digit);
> > %include cpointer.i
> > %pointer_functions(MY_DIGIT, md_prt);
> Don't you mean md_ptr?
>
> > %typemap(in) (char *a, MY_DIGIT **argv) {
> > /* Check if is a list */
> > if (PyList_Check($input)) {
> > int i;
> > $1 = PyList_Size($input);
> > $2 = (MY_DIGIT **) malloc(($1+1)*sizeof(long *));
> > for (i = 0; i < $1; i++) {
> > PyObject *o = PyList_GetItem($input,i);
> > if (PyString_Check(o))
> > $2[i] = PyString_AsString(PyList_GetItem($input,i));
> > else {
> > PyErr_SetString(PyExc_TypeError,"list must contain strings");
> > free($2);
> > return NULL;
> > }
> > }
> > $2[i] = 0;
> > } else {
> > PyErr_SetString(PyExc_TypeError,"not a list");
> > return NULL;
> > }
> > }
> >
> > %typemap(freearg) (char *a, MY_DIGIT **argv) {
> > free((MY_DIGIT *) $2);
> > }
> >
> >
> > ..from Python I am trying
> >
> > >> ptr = []
> > >> doIt("blah", ptr)
> >
> > I thought this was the correct approach as described here:
> > http://www.swig.org/Doc1.3/SWIGDocumentation.html#Python_nn59
> >
> > However, python comes back and says "TypeError: argument number 2: a
> > 'MY_DIGIT **' is expected, 'list([])' is received"
> >
> > ..any ideas?
> Didn't check it but from http://www.swig.org/Doc1.3/Library.html it looks
> like you need to do:
> ptr = new_md_prt()
>
> HTH.
> --
> ------------------------------------------------------------------------
> Miki Tebeka <mtebeka at qualcomm.com>
> http://tebeka.bizhat.com
> The only difference between children and adults is the price of the toys
More information about the Python-list
mailing list