X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Fclasses.cpp;h=2b26f1a88d90f6aa20c614216da9be293d020d6b;hb=f88c73732cbef5dad58788d1555bd66742001192;hp=ed89b8bd60f55d16378e5b0e8cfd6916e3e33e44;hpb=43942280bb42a1dd82957aa582fd43d6e2e5dc96;p=libsigrok.git diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp index ed89b8bd..2b26f1a8 100644 --- a/bindings/cxx/classes.cpp +++ b/bindings/cxx/classes.cpp @@ -229,20 +229,21 @@ shared_ptr Context::create_trigger(string name) shared_ptr 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( new Input(shared_from_this(), input), Input::Deleter()); } shared_ptr 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( new Input(shared_from_this(), input), Input::Deleter()); } @@ -1130,14 +1131,13 @@ string InputFormat::get_description() map> InputFormat::get_options() { - const struct sr_option *option = sr_input_options_get(structure); - auto option_array = shared_ptr( - 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( + options, sr_input_options_free); map> result; - for (; option->id; option++) - result[option->id] = shared_ptr