discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] How do I use arguments outside of functions


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] How do I use arguments outside of functions
Date: Thu, 8 Dec 2016 15:48:50 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0

Hi Ashley,

welcome to GNU Radio development!

So, yes, you're right, you can't use the arguments of a method/function/constructor anywhere but in the same method/function/constructor. So, your "static int" approach can't work – at the point the ios variable exists, there's no knowing what parameters the constructor will be called with.

So, you'll have to do the gr::io_signature::makev call within the constructor, there's no way around that.

you should *not* be using static here, at all. Static is for things that are common to all /instances/ of a class, and that means that you couldn't have to instances of your MVDL_impl with different ios . That'd be a design error.

Hope that explains things well enough!

Best regards,

Marcus

PS: I like your question because it's a common coding problem encountered by GR developers, so it's very on-topic here! Note that in general, OOP/C++ questions might be less positively received here – please don't hesitate to ask us anything, but please don't be sad if it happens that you ask a question that we'll have to answer with "um, that's a legit question, but it's a C++ programming, not a GNU Radio-specific one, so we might not be the right folks to ask about that" :) Generally, people on here tend to be pretty helpful, because most (all?) of us like GNU Radio and coding :)

On 08.12.2016 06:49, Ashley Neboschick wrote:
I am trying to create an io signature with multiple inputs greater than 3 using makev.  in order to do this, I learned to do it according to the code below.  My issue is that I need to derive the input sizes from the input arguments but I don't know how I would do that.  I imagine using a separate function but I am just learning objects and do not know how I would word it specifically for gnuradio. An example would be extremely helpful. Any help much appreciated.


    //static int ios[] = {sizeof(gr_complex)*nAz*M, sizeof(gr_complex)*M*M, sizeof(gr_complex)*M*L, sizeof(float)}; //but I want to get this line to work instead
    static int ios[] = {sizeof(gr_complex)*121*4, sizeof(gr_complex)*4*4, sizeof(gr_complex)*4*128, sizeof(float)}; //this line already works...^^^
    static std::vector<int> iosig(ios, ios+sizeof(ios)/sizeof(int));

    /*
     * The private constructor
     */
    MVDR_impl::MVDR_impl(int L, int M, int nAz, float InitialLook)
      : gr::sync_block("MVDR",
                gr::io_signature::makev(4, 4, iosig),
                //gr::io_signature::makev(4, 4, sizeof(gr_complex)*nAz*M, sizeof(gr_complex)*M*M, sizeof(gr_complex)*M*L, sizeof(float) ),        
        //steering vectors (all), covariance matrix (RXX),look direction (LookDir), origional MxL IQ Data matrix
       
        gr::io_signature::make(1, 1, sizeof(gr_complex)*L)), //"steered" data
            d_L(L),
                d_M(M),
        d_nAz(nAz),
        d_InitialLook(InitialLook) //not used currently
    {}



_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


reply via email to

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