Thank you so much for your help; I finally got it to work! I think what was happening the first time around was that there was actually a `pmt` runtime issue that I misinterpreted as being an issue with the type conversion when going from Python to C++. But it turns out that it was actually due to me calling `pmt::nth` with a vector, when it is in fact only valid for lists, in a different part of the code. I suppose the compiler has no way of knowing the underlying types when it comes to `pmt`s, so errors like that are not caught during compile time.
Best, Anton ________________________________ From: Anton Ottosson Sent: Friday, July 16, 2021 12:08:42 AM To: discuss-gnuradio@gnu.org Subject: Re: Non-hacky method to take list of keys as parameter? Oh, sorry! I meant Marcus, of course, not "Amrcus". Best, Anton ________________________________ From: Anton Ottosson Sent: Friday, July 16, 2021 12:07:47 AM To: discuss-gnuradio@gnu.org Subject: Re: Non-hacky method to take list of keys as parameter? Hi Amrcus, Your first example would be ideal, but I seem to remember trying that and having issues with it, probably due to the implicit type conversion from Python to C++. I will try again, but is there anywhere one can look up what the conversions are? Best regards, Anton ________________________________ From: Marcus Müller <mmuel...@gnuradio.org> Sent: Thursday, July 15, 2021 11:54:00 PM To: discuss-gnuradio@gnu.org Cc: Anton Ottosson Subject: Re: Non-hacky method to take list of keys as parameter? Just use `dtype: raw` in the YAML file; then anything that's valid python goes! For example `["key1", "key2"]`, but also other things like dicts, `{ "key1": 42, "key2": 1337 }`. Best regards, Marcus On 15.07.21 06:58, Anton Ottosson wrote: > Hi, > > I'm writing a block for an OOT module and I would like to take a list of keys > as one of > the parameters. They will be used to select entries in a pmt dictionary. I > first tried to > use std::vector<std::string> as the parameter type, but there doesn't seem to > exist any > corresponding string_vector dtype to use in the YAML file > (https://wiki.gnuradio.org/index.php/YAML_GRC > <https://wiki.gnuradio.org/index.php/YAML_GRC>). I then switched over to pmt > arguments and > managed to get it to work, but it is very ugly and hacky. This is the kind of > thing I have > to enter into the parameter field on the block: > > > pmt.list2(pmt.intern("key1"), pmt.intern("key2")) > > > Is there a better way? Is there a block that does something similar that I > can take a look > at? Best I could find was PDU Filter, but it only takes a single key, not a > list. > > > Best regards, > > Anton >