Re: error: conversion to non-scalar type requested

Sven Berkvens-Matthijsse <[email protected]>
Newsgroups gmane.comp.python.pyrex
Message-ID <[email protected]>
> Now I've not the code to try this, but I think it doesn't solve the
> problem.  func function needs a struct in_addr, not a pointer to
> struct in_addr, so the cast is correct. Maybe the problem is in the
> generated C code. I'll post the original pyrex (and C generated)
> code that originate this error very soon to give you more details.

No, what Lenard said is correct, the cast binds stronger than the []
operator. What you said:

	tmp = <in_addr>tmpinPtr[0]

actually reads as:

	tmp = (<in_addr>tmpinPtr)[0]

which of course does not work. What Lenard says reads as:

	tmp = (<in_addr *>tmpinPtr)[0]

which is correct. Of course, you can write it your way, just be sure
to use parentheses in that case, like this:

	tmp = <in_addr>(tmpinPtr[0])

-- 
Sven



> 2008/4/10, Lenard Lindstrom <[email protected]>:
> >
> > The problems is with <in_addr>. It casts tmpinPtr to an in_addr
> > structure, not a pointer to in_addr (in_addr *). Try this:
> >
> >
> > tmp = <in_addr *>tmpinPtr[0]
> >
> >
> >
> > Lenard
> >
> >
> >
> > Daniele Pianu wrote:
> > > Suppose this code
> > >
> > > # getIstance return a long, that is a pointer to a in_addr struct
> > > cdef in_addr tmp
> > > tmpinPtr = in_.getIstance()
> > > tmp = <in_addr>tmpinPtr[0]
> > >
> > > # in this function gcc gives me an error
> > > func( tmp )
> > >
> > > I take a pointer to a in_addr struct as a python long from the
> > > getIstance method. Then, I need to call a C function and pass a
> > > in_addr struct by value. With pyrex C the pyrex code compiles with no
> > > problems. But gcc gives me the error in mail's subject.
> > >
> > > error: conversion to non-scalar type requested
> > >
> > > How can I pass the structure by value deferencing a python long and
> > > casting it as the struct type I need?
> > >
> > > (I've wrote similiar code for function where I pass the structure by
> > > reference and there's no problems.)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.