X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Fclasses.cpp;h=f9f79273495026f52c61989b74fca89d1b99e50a;hb=e333a40c1c5a27806b8a6dd2611c54b23d11366b;hp=bf826e3c73b809f07eb7441825eb309b404dc5f2;hpb=092843eb4286885be8801592cfffb449cb23ddea;p=libsigrok.git diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp index bf826e3c..f9f79273 100644 --- a/bindings/cxx/classes.cpp +++ b/bindings/cxx/classes.cpp @@ -32,6 +32,8 @@ namespace sigrok { +using namespace std; + /** Helper function to translate C errors to C++ exceptions. */ static void check(int result) { @@ -239,7 +241,7 @@ static int call_log_callback(void *cb_data, int loglevel, try { (*callback)(LogLevel::get(loglevel), message.get()); - } catch (Error e) { + } catch (Error &e) { return e.result; } @@ -377,6 +379,14 @@ shared_ptr Context::create_analog_packet( return shared_ptr{new Packet{nullptr, packet}, default_delete{}}; } +shared_ptr Context::create_end_packet() +{ + auto packet = g_new(struct sr_datafeed_packet, 1); + packet->type = SR_DF_END; + return shared_ptr{new Packet{nullptr, packet}, + default_delete{}}; +} + shared_ptr Context::load_session(string filename) { return shared_ptr{ @@ -936,6 +946,7 @@ Session::Session(shared_ptr context, string filename) : _owned_devices.emplace(sdi, move(device)); } _context->_session = this; + g_slist_free(dev_list); } Session::~Session() @@ -970,6 +981,7 @@ vector> Session::devices() auto *const sdi = static_cast(dev->data); result.push_back(get_device(sdi)); } + g_slist_free(dev_list); return result; } @@ -1651,6 +1663,11 @@ Output::~Output() check(sr_output_free(_structure)); } +shared_ptr Output::format() +{ + return _format; +} + string Output::receive(shared_ptr packet) { GString *out;