]> sigrok.org Git - libsigrok.git/blobdiff - bindings/cxx/ConfigKey_methods.cpp
bindings: Fix doc extraction for enums
[libsigrok.git] / bindings / cxx / ConfigKey_methods.cpp
index ceeea02588e9fdbf4ef8bb394748a630d25404a9..54af62e804e76f2d8b3c7c0d628b9e17cc3a747c 100644 (file)
@@ -1,36 +1,36 @@
-const DataType *ConfigKey::get_data_type() const
+const DataType *ConfigKey::data_type() const
 {
-       const struct sr_config_info *info = sr_config_info_get(id);
+       const struct sr_key_info *info = sr_key_info_get(SR_KEY_CONFIG, id());
        if (!info)
                throw Error(SR_ERR_NA);
        return DataType::get(info->datatype);
 }
 
-string ConfigKey::get_identifier() const
+string ConfigKey::identifier() const
 {
-       const struct sr_config_info *info = sr_config_info_get(id);
+       const struct sr_key_info *info = sr_key_info_get(SR_KEY_CONFIG, id());
        if (!info)
                throw Error(SR_ERR_NA);
        return valid_string(info->id);
 }
 
-string ConfigKey::get_description() const
+string ConfigKey::description() const
 {
-       const struct sr_config_info *info = sr_config_info_get(id);
+       const struct sr_key_info *info = sr_key_info_get(SR_KEY_CONFIG, id());
        if (!info)
                throw Error(SR_ERR_NA);
        return valid_string(info->name);
 }
 
-const ConfigKey *ConfigKey::get(string identifier)
+const ConfigKey *ConfigKey::get_by_identifier(string identifier)
 {
-       const struct sr_config_info *info = sr_config_info_name_get(identifier.c_str());
+       const struct sr_key_info *info = sr_key_info_name_get(SR_KEY_CONFIG, identifier.c_str());
        if (!info)
                throw Error(SR_ERR_ARG);
        return get(info->key);
 }
 
-#include "config.h"
+#include <config.h>
 
 #ifndef HAVE_STOI_STOD
 
@@ -75,7 +75,7 @@ Glib::VariantBase ConfigKey::parse_string(string value) const
        GVariant *variant;
        uint64_t p, q;
 
-       switch (get_data_type()->get_id())
+       switch (data_type()->id())
        {
                case SR_T_UINT64:
                        check(sr_parse_sizestring(value.c_str(), &p));
@@ -88,7 +88,11 @@ Glib::VariantBase ConfigKey::parse_string(string value) const
                        variant = g_variant_new_boolean(sr_parse_boolstring(value.c_str()));
                        break;
                case SR_T_FLOAT:
-                       variant = g_variant_new_double(stod(value));
+                       try {
+                               variant = g_variant_new_double(stod(value));
+                       } catch (invalid_argument) {
+                               throw Error(SR_ERR_ARG);
+                       }
                        break;
                case SR_T_RATIONAL_PERIOD:
                        check(sr_parse_period(value.c_str(), &p, &q));
@@ -99,7 +103,11 @@ Glib::VariantBase ConfigKey::parse_string(string value) const
                        variant = g_variant_new("(tt)", p, q);
                        break;
                case SR_T_INT32:
-                       variant = g_variant_new_int32(stoi(value));
+                       try {
+                               variant = g_variant_new_int32(stoi(value));
+                       } catch (invalid_argument) {
+                               throw Error(SR_ERR_ARG);
+                       }
                        break;
                default:
                        throw Error(SR_ERR_BUG);