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