]> sigrok.org Git - libsigrok.git/blobdiff - bindings/cxx/classes.cpp
C++: Use sr_input_scan_*() API changes.
[libsigrok.git] / bindings / cxx / classes.cpp
index ed89b8bd60f55d16378e5b0e8cfd6916e3e33e44..2b26f1a88d90f6aa20c614216da9be293d020d6b 100644 (file)
@@ -229,20 +229,21 @@ shared_ptr<Trigger> Context::create_trigger(string name)
 
 shared_ptr<Input> Context::open_file(string filename)
 {
-       auto input = sr_input_scan_file(filename.c_str());
-       if (!input)
-               throw Error(SR_ERR_NA);
+       const struct sr_input *input;
+
+       check( sr_input_scan_file(filename.c_str(), &input));
        return shared_ptr<Input>(
                new Input(shared_from_this(), input), Input::Deleter());
 }
 
 shared_ptr<Input> Context::open_stream(string header)
 {
+       const struct sr_input *input;
+
        auto gstr = g_string_new(header.c_str());
-       auto input = sr_input_scan_buffer(gstr);
-       g_string_free(gstr, false);
-       if (!input)
-               throw Error(SR_ERR_NA);
+       auto ret = sr_input_scan_buffer(gstr, &input);
+       g_string_free(gstr, true);
+       check(ret);
        return shared_ptr<Input>(
                new Input(shared_from_this(), input), Input::Deleter());
 }
@@ -1130,14 +1131,13 @@ string InputFormat::get_description()
 
 map<string, shared_ptr<Option>> InputFormat::get_options()
 {
-       const struct sr_option *option = sr_input_options_get(structure);
-       auto option_array = shared_ptr<const struct sr_option>(
-               option, [=](const struct sr_option *) {
-                       sr_input_options_free(structure); });
+       const struct sr_option **options = sr_input_options_get(structure);
+       auto option_array = shared_ptr<const struct sr_option *>(
+               options, sr_input_options_free);
        map<string, shared_ptr<Option>> result;
-       for (; option->id; option++)
-               result[option->id] = shared_ptr<Option>(
-                       new Option(option, option_array), Option::Deleter());
+       for (int i = 0; options[i]; i++)
+               result[options[i]->id] = shared_ptr<Option>(
+                       new Option(options[i], option_array), Option::Deleter());
        return result;
 }