On Wed, Jan 21, 2015 at 3:13 AM, Ludwig Stephan (CR/AEH4) <
[email protected]> wrote:

> Thank you, Tom, for your enlightening answer. Please let me ask two
> additional questions:
>
> 1) If I understood your explanation correctly, as a consequence of this,
> one could not use the decision_maker method within a block, which is coded
> solely in python. Right?
>

Correct.


> 2) Isn't "const gr_complex*" a type, which is used very often in the block
> I/O interfaces, and shouldn't, thus, the GR configuration of SWIG already
> let it know how to translate python/complex to gr_complex?


No. That type is almost never used. What is often used is "const
std::vector<gr_complex>". But again, this class was designed to be called
from within a block's work function, so the data structure would have
already been a "const gr_complex*" (casting the input_items argument).

Tom



>
> Best regards
>
> Stephan Ludwig
>
> Robert Bosch GmbH
> Corporate Sector Research & Advance Engineering, Communication Technology
> (CR/AEH4)
> Renningen
> 70465 Stuttgart
> GERMANY
> www.bosch.com
>
> Tel. +49(711)811-8809
> Fax +49(711)811-1052
> Mobile +49(172)5630639
> [email protected]
>
> Registered Office: Stuttgart, Registration Court: Amtsgericht Stuttgart,
> HRB 14000;
> Chairman of the Supervisory Board: Franz Fehrenbach; Managing Directors:
> Dr. Volkmar Denner,
> Dr. Stefan Asenkerschbaumer, Dr. Rolf Bulander, Dr. Stefan Hartung, Dr.
> Dirk Hoheisel, Christoph Kübel,
> Uwe Raschke, Wolf-Henning Scheider, Dr. Werner Struth, Peter Tyroller
> Von: [email protected] [mailto:[email protected]] Im Auftrag von
> Tom Rondeau
> Gesendet: Dienstag, 20. Januar 2015 15:57
> An: Ludwig Stephan (CR/AEH4)
> Cc: [email protected]
> Betreff: Re: [Discuss-gnuradio] Python pass parameter as const *gr_complex?
>
> On Wed, Jan 7, 2015 at 7:57 AM, Ludwig Stephan (CR/AEH4) <
> [email protected]> wrote:
> Hi list,
>
> I am trying to use the gr::digital::constellation::decision_maker(.)
> method from python, but I get an error message.
> In order to reproduce call in python:
>
> import gnuradio.digital
> a = gnuradio.digital.constellation_qpsk()
> b = complex(1+1j)
> a.decision_maker(b)
> => TypeError [..] argument 2 of type ‘gr_complex const*’
> The C++-implementation is wrapped by SWIG, where the error occurs.
>
> This might be a silly question, but what am I doing wrong?
>
> Thanks for any help.
>
> Best regards
>
> Stephan Ludwig
>
> Hi Stephan,
>
> You're not doing anything wrong per se, but the block isn't really meant
> to be used that way. SWIG needs to be told how to handle some types of
> argument formats, and it hasn't been told how to handle this one.
>
> The post 3.7 way we've been handling SWIG is to just include the public .h
> file as the interface, so all methods are exported into SWIG. A class like
> this needs that method to be public for use as a contained object in the
> block that calls it, but it's not really meant for use outside like this.
> Not that it couldn't be, but you'd have to work with SWIG to let it
> understand how to call that function with the proper input type.
>
> Tom
>
> _______________________________________________
> Discuss-gnuradio mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to