}
Driver::Driver(struct sr_dev_driver *structure) :
- StructureWrapper<Context, struct sr_dev_driver>(structure),
+ StructureWrapper(structure),
initialized(false)
{
}
}
Channel::Channel(struct sr_channel *structure) :
- StructureWrapper<Device, struct sr_channel>(structure),
+ StructureWrapper(structure),
type(ChannelType::get(structure->type))
{
}
ChannelGroup::ChannelGroup(Device *device,
struct sr_channel_group *structure) :
- StructureWrapper<Device, struct sr_channel_group>(structure),
+ StructureWrapper(structure),
Configurable(device->structure->driver, device->structure, structure)
{
for (GSList *entry = structure->channels; entry; entry = entry->next)
}
TriggerStage::TriggerStage(struct sr_trigger_stage *structure) :
- StructureWrapper<Trigger, struct sr_trigger_stage>(structure)
+ StructureWrapper(structure)
{
}
}
TriggerMatch::TriggerMatch(struct sr_trigger_match *structure, shared_ptr<Channel> channel) :
- StructureWrapper<TriggerStage, struct sr_trigger_match>(structure), channel(channel)
+ StructureWrapper(structure), channel(channel)
{
}
static_cast<const struct sr_datafeed_analog *>(
structure->payload));
break;
+ default:
+ payload = nullptr;
+ break;
}
}
shared_ptr<PacketPayload> 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()
}
Header::Header(const struct sr_datafeed_header *structure) :
- PacketPayload(),
- StructureWrapper<Packet, const struct sr_datafeed_header>(structure)
+ StructureWrapper(structure),
+ PacketPayload()
{
}
{
}
+shared_ptr<PacketPayload> Header::get_shared_pointer(Packet *parent)
+{
+ return static_pointer_cast<PacketPayload>(
+ static_pointer_cast<Header>(
+ StructureWrapper::get_shared_pointer(parent)));
+}
+
int Header::get_feed_version()
{
return structure->feed_version;
}
Meta::Meta(const struct sr_datafeed_meta *structure) :
- PacketPayload(),
- StructureWrapper<Packet, const struct sr_datafeed_meta>(structure)
+ StructureWrapper(structure),
+ PacketPayload()
{
}
{
}
+shared_ptr<PacketPayload> Meta::get_shared_pointer(Packet *parent)
+{
+ return static_pointer_cast<PacketPayload>(
+ static_pointer_cast<Meta>(
+ StructureWrapper::get_shared_pointer(parent)));
+}
+
map<const ConfigKey *, Glib::VariantBase> Meta::get_config()
{
map<const ConfigKey *, Glib::VariantBase> result;
}
Logic::Logic(const struct sr_datafeed_logic *structure) :
- PacketPayload(),
- StructureWrapper<Packet, const struct sr_datafeed_logic>(structure)
+ StructureWrapper(structure),
+ PacketPayload()
{
}
{
}
+shared_ptr<PacketPayload> Logic::get_shared_pointer(Packet *parent)
+{
+ return static_pointer_cast<PacketPayload>(
+ static_pointer_cast<Logic>(
+ StructureWrapper::get_shared_pointer(parent)));
+}
+
void *Logic::get_data_pointer()
{
return structure->data;
}
Analog::Analog(const struct sr_datafeed_analog *structure) :
- PacketPayload(),
- StructureWrapper<Packet, const struct sr_datafeed_analog>(structure)
+ StructureWrapper(structure),
+ PacketPayload()
{
}
{
}
+shared_ptr<PacketPayload> Analog::get_shared_pointer(Packet *parent)
+{
+ return static_pointer_cast<PacketPayload>(
+ static_pointer_cast<Analog>(
+ StructureWrapper::get_shared_pointer(parent)));
+}
+
float *Analog::get_data_pointer()
{
return structure->data;
}
InputFormat::InputFormat(const struct sr_input_module *structure) :
- StructureWrapper<Context, const struct sr_input_module>(structure)
+ StructureWrapper(structure)
{
}
}
OutputFormat::OutputFormat(const struct sr_output_module *structure) :
- StructureWrapper<Context, const struct sr_output_module>(structure)
+ StructureWrapper(structure)
{
}