using std::deque;
using std::map;
using std::mutex;
-using std::pair;
using std::vector;
using std::shared_ptr;
struct DecodeSegment
{
- map<const Row*, RowData> annotation_rows;
+ // Constructor is a no-op
+ DecodeSegment() { };
+ // Copy constructor is a no-op
+ DecodeSegment(DecodeSegment&& ds) { (void)ds; };
+
+ map<const Row*, RowData> annotation_rows; // Note: Row is the same for all segments while RowData is not
pv::util::Timestamp start_time;
double samplerate;
int64_t samples_decoded_incl, samples_decoded_excl;
vector<DecodeBinaryClass> binary_classes;
+ deque<const Annotation*> all_annotations;
};
class DecodeSignal : public SignalBase
void set_initial_pin_state(const uint16_t channel_id, const int init_state);
- double samplerate() const;
+ virtual double get_samplerate() const;
const pv::util::Timestamp start_time() const;
/**
* Note: The annotations may be unsorted and only annotations that fully
* fit into the sample range are considered.
*/
- void get_annotation_subset(vector<Annotation> &dest, const Row* row,
+ void get_annotation_subset(deque<const Annotation*> &dest, const Row* row,
uint32_t segment_id, uint64_t start_sample, uint64_t end_sample) const;
/**
* Note: The annotations may be unsorted and only annotations that fully
* fit into the sample range are considered.
*/
- void get_annotation_subset(vector<Annotation> &dest, uint32_t segment_id,
+ void get_annotation_subset(deque<const Annotation*> &dest, uint32_t segment_id,
uint64_t start_sample, uint64_t end_sample) const;
uint32_t get_binary_data_chunk_count(uint32_t segment_id,
const DecodeBinaryClass* get_binary_data_class(uint32_t segment_id,
const Decoder* dec, uint32_t bin_class_id) const;
+ const deque<const Annotation*>* get_all_annotations_by_segment(uint32_t segment_id) const;
+
virtual void save_settings(QSettings &settings) const;
virtual void restore_settings(QSettings &settings);
void decode_reset();
void decode_finished();
void channels_updated();
+ void annotation_visibility_changed();
private Q_SLOTS:
void on_capture_state_changed(int state);
void on_data_cleared();
void on_data_received();
+ void on_annotation_visibility_changed();
+
private:
pv::Session &session_;