X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Fclasses.cpp;h=68124b5a39cd50938a827d10e5154105b5050f0e;hb=d54190a3631250f23c51cd73770e9cfdd9076fe8;hp=f00ff760ced69b140dd011cefbf4df94e22ab149;hpb=59b74d28c94b566f252ffb268314526ce14c3b33;p=libsigrok.git diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp index f00ff760..68124b5a 100644 --- a/bindings/cxx/classes.cpp +++ b/bindings/cxx/classes.cpp @@ -358,6 +358,28 @@ Glib::VariantContainerBase Configurable::config_list(const ConfigKey *key) return Glib::VariantContainerBase(data); } +vector Configurable::config_keys(const ConfigKey *key) +{ + GVariant *gvar_opts; + gsize num_opts; + const int32_t *opts; + vector result; + + check(sr_config_list( + config_driver, config_sdi, config_channel_group, + key->get_id(), &gvar_opts)); + + opts = (const int32_t *) g_variant_get_fixed_array( + gvar_opts, &num_opts, sizeof(int32_t)); + + for (gsize i = 0; i < num_opts; i++) + result.push_back(ConfigKey::get(opts[i])); + + g_variant_unref(gvar_opts); + + return result; +} + Device::Device(struct sr_dev_inst *structure) : Configurable(structure->driver, structure, NULL), structure(structure)