X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Fclasses.cpp;h=55eba8e486340e274c5b96216cb025d248e4ea24;hb=ba4eac48d4c7277d8b7cbe4036fb64610b8e6c61;hp=403499de31697e6a49db9fe17e8e00b4a2fc6adb;hpb=b31581f8a8fab97004603ba61c16c3758c14c777;p=libsigrok.git diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp index 403499de..55eba8e4 100644 --- a/bindings/cxx/classes.cpp +++ b/bindings/cxx/classes.cpp @@ -248,7 +248,7 @@ shared_ptr Context::open_stream(string header) } Driver::Driver(struct sr_dev_driver *structure) : - StructureWrapper(structure), + StructureWrapper(structure), initialized(false) { } @@ -475,7 +475,7 @@ shared_ptr HardwareDevice::get_driver() } Channel::Channel(struct sr_channel *structure) : - StructureWrapper(structure), + StructureWrapper(structure), type(ChannelType::get(structure->type)) { } @@ -516,7 +516,7 @@ unsigned int Channel::get_index() ChannelGroup::ChannelGroup(Device *device, struct sr_channel_group *structure) : - StructureWrapper(structure), + StructureWrapper(structure), Configurable(device->structure->driver, device->structure, structure) { for (GSList *entry = structure->channels; entry; entry = entry->next) @@ -579,7 +579,7 @@ shared_ptr Trigger::add_stage() } TriggerStage::TriggerStage(struct sr_trigger_stage *structure) : - StructureWrapper(structure) + StructureWrapper(structure) { } @@ -616,7 +616,7 @@ void TriggerStage::add_match(shared_ptr channel, const TriggerMatchType } TriggerMatch::TriggerMatch(struct sr_trigger_match *structure, shared_ptr channel) : - StructureWrapper(structure), channel(channel) + StructureWrapper(structure), channel(channel) { } @@ -973,6 +973,9 @@ Packet::Packet(shared_ptr device, static_cast( structure->payload)); break; + default: + payload = nullptr; + break; } } @@ -989,7 +992,10 @@ const PacketType *Packet::get_type() shared_ptr Packet::get_payload() { - return payload->get_shared_pointer(this); + if (payload) + return payload->get_shared_pointer(this); + else + throw Error(SR_ERR_NA); } PacketPayload::PacketPayload() @@ -1001,8 +1007,8 @@ PacketPayload::~PacketPayload() } Header::Header(const struct sr_datafeed_header *structure) : - PacketPayload(), - StructureWrapper(structure) + StructureWrapper(structure), + PacketPayload() { } @@ -1010,6 +1016,13 @@ Header::~Header() { } +shared_ptr Header::get_shared_pointer(Packet *parent) +{ + return static_pointer_cast( + static_pointer_cast
( + StructureWrapper::get_shared_pointer(parent))); +} + int Header::get_feed_version() { return structure->feed_version; @@ -1023,8 +1036,8 @@ Glib::TimeVal Header::get_start_time() } Meta::Meta(const struct sr_datafeed_meta *structure) : - PacketPayload(), - StructureWrapper(structure) + StructureWrapper(structure), + PacketPayload() { } @@ -1032,6 +1045,13 @@ Meta::~Meta() { } +shared_ptr Meta::get_shared_pointer(Packet *parent) +{ + return static_pointer_cast( + static_pointer_cast( + StructureWrapper::get_shared_pointer(parent))); +} + map Meta::get_config() { map result; @@ -1044,8 +1064,8 @@ map Meta::get_config() } Logic::Logic(const struct sr_datafeed_logic *structure) : - PacketPayload(), - StructureWrapper(structure) + StructureWrapper(structure), + PacketPayload() { } @@ -1053,6 +1073,13 @@ Logic::~Logic() { } +shared_ptr Logic::get_shared_pointer(Packet *parent) +{ + return static_pointer_cast( + static_pointer_cast( + StructureWrapper::get_shared_pointer(parent))); +} + void *Logic::get_data_pointer() { return structure->data; @@ -1069,8 +1096,8 @@ unsigned int Logic::get_unit_size() } Analog::Analog(const struct sr_datafeed_analog *structure) : - PacketPayload(), - StructureWrapper(structure) + StructureWrapper(structure), + PacketPayload() { } @@ -1078,6 +1105,13 @@ Analog::~Analog() { } +shared_ptr Analog::get_shared_pointer(Packet *parent) +{ + return static_pointer_cast( + static_pointer_cast( + StructureWrapper::get_shared_pointer(parent))); +} + float *Analog::get_data_pointer() { return structure->data; @@ -1113,7 +1147,7 @@ vector Analog::get_mq_flags() } InputFormat::InputFormat(const struct sr_input_module *structure) : - StructureWrapper(structure) + StructureWrapper(structure) { } @@ -1247,7 +1281,7 @@ vector Option::get_values() } OutputFormat::OutputFormat(const struct sr_output_module *structure) : - StructureWrapper(structure) + StructureWrapper(structure) { }