[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Casting an input value using block() function

From: Jose Torres Diaz
Subject: Re: [Discuss-gnuradio] Casting an input value using block() function
Date: Mon, 5 Nov 2012 11:17:48 +1030


In order to add more information, I found some information here: http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fkeyword_const_cast.htm

As I understand, the issue is with this line in block. h

typedef std::vector<Buffer<const void *> > InputItems;

Because it is casting using const, rather than:

typedef std::vector<Buffer<void *> > OutputItems;

I'm stuck in this point, because I'm not sure how to use the input_items in my work function, if I'm not able to cast it.



On Mon, Nov 5, 2012 at 10:42 AM, Jose Torres Diaz <address@hidden> wrote:

My question is related to the work function using block() as provided in GRExtras. I have a block that input a gr_complex value and output a gr_complex value. I'm trying to cast the input and output, in order to use them in my work function, what I have is:

 int work(
        const InputItems &input_items,
        const OutputItems &output_items
      std::complex<float> * in = input_items[0].cast<std::complex<float> *>();
      std::complex<float> * out = output_items[0].cast<std::complex<float> *>();

     //Processing here

    } //End of work function

I can cast the output without problem, but I cannot do it for the input. I got the following error:

/home/project/grextras/include/gnuradio/block.h: In member function ‘T gnuradio::Buffer<PtrType>::cast() const [with T = std::complex<float>*, PtrType = const void*]’:
/home/project/grextras/lib/s_asrp_st2up_insertcp.cc:76:77:   instantiated from here
/home/project/grextras/include/gnuradio/block.h:43:47: error: reinterpret_cast from type ‘const void*’ to type ‘std::complex<float>*’ casts away qualifiers

So, I checked into the block.h I have the following:

 typedef std::vector<Buffer<const void *> > InputItems;
 typedef std::vector<Buffer<void *> > OutputItems;

Does it mean that I cannot cast my input_items in my work function?
If the answer is no, how can I use the input_items in my work function?, because I have to receive a stream of values.

Thanks for your comments,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]