logo       

Re: typemap for overloaded contructor: msg#00120

programming.swig

Subject: Re: typemap for overloaded contructor

> Sebastian Haase writes:
> > Hi,
> > I get
> > TypeError: No matching function for overloaded 'new_PriismFile'
> >
> > I have these constructors:
> > PriismFile(float *img3DStack, int nx, int ny, int nz);
> > PriismFile(unsigned short *img3DStack, int nx, int ny, int nz);
> >
> > and these typemaps
> > %typemap(python,in) (unsigned short *img3DStack, int nx, int ny, int
nz)
> > <...>
> > %typemap(python,in) (float *img3DStack, int nx, int ny, int nz)
<...>
> >
> > If I comment out any one of the two contructors it recognizes it
fine,
> > but as soon as I have more than one contructor I get the error.
> >
>
> I'm not sure why you are defining typemaps like that. You do realize
> that by defining a typemap in the way shown, you are collapsing all of
> those arguments down so a single scripting language object. Yes?
> In any event, the only way to make overloaded methods work with
> typemaps is to write a bunch of typecheck rules that disambiguate
> arguments. To see how to do that, look at the perl5.swg file in the
> SWIG library.

I convert (float *img3DStack, int nx, int ny, int nz) into one 3D-numarray
(Numerical Python!)
object representing the whole data stack of size nx x ny x nz.
I am looking at python.swg right now, and I found the "Typechecking rules"
section.
But what is the actual syntax of "%typecheck" ? Is it documented anywhere ?
I was trying :
%typecheck(SWIG_TYPECHECK_SEB_PYARRAY) float * {
$1 = PyArray_Check( $input ) ? 1 : 0;
}
But no success yet. ( SWIG actually complains about a syntax error)
Can I put "(float *img3DStack, int nx, int ny, int nz)" instead of just
"float *" ?

Thanks for your help,
Sebastian



_______________________________________________
Swig maillist - Swig@xxxxxxxxxxxxxxx
http://mailman.cs.uchicago.edu/mailman/listinfo/swig



<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise