discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: Passing Message Input Index to


From: Marcus Müller
Subject: Re: Passing Message Input Index to
Date: Wed, 29 Jun 2022 20:59:56 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0

Hi Merlo,

On 29.06.22 18:53, Merlo, Jason wrote:
A separate function can be registered for each input, however I would need to dynamically generate functions based on the number of inputs a user has configured, which has been giving me trouble. Ideally, the function handler callback would provide auxiliary arguments to pass to the callback function as arguments that can be bound at instantiation (such as index), but I don't think this is possible.

It definitely is! It's what lambdas are for.
I've written a small illustration for you: https://gcc.godbolt.org/z/cssn8hMno

Here, "float divide(int, int)" is your function that takes an extra argument (in case of your universal message handler, that might be the name of the handler).

with [capture](arguments) { return something; } you can write an anonymous function (a lambda) that "knows" its "captured" values, and still takes arguments.


Presently, I've looked into the functools package |partialmethod| to create separate instances of the |process_msg(self, msg, idx)| method with the |ch_idx| argument set, effectively creating |process_msg_idx(self, msg)| dynamically based on the number of inputs the user desires like:

Oh, this is python. Makes it a bit easier;

handler_name = something
lambda argument: underlying_function(argument, handler_name)

curries underlying function to have its second argument already set, i.e. down to a function of a single variable.

Best regards,
Marcus



reply via email to

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