X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecoderstack.h;h=6391e6a88ceb0b2d4c57e41f85591401446bf531;hb=bdc5c3b09d09781aa50ae3b128b2a7c6e2a53d5b;hp=9d032ad9756080c19fc8a83d5bc6f407260b906e;hpb=9242129958c996f9ff71da7c7b74d7983b5c59f6;p=pulseview.git diff --git a/pv/data/decoderstack.h b/pv/data/decoderstack.h index 9d032ad9..6391e6a8 100644 --- a/pv/data/decoderstack.h +++ b/pv/data/decoderstack.h @@ -31,7 +31,11 @@ #include #include +#include +#include + struct srd_decoder; +struct srd_decoder_annotation_row; struct srd_probe; struct srd_proto_data; @@ -41,6 +45,8 @@ class TwoDecoderStack; namespace pv { +class SigSession; + namespace view { class LogicSignal; } @@ -64,7 +70,8 @@ private: static const int64_t DecodeChunkLength; public: - DecoderStack(const srd_decoder *const decoder); + DecoderStack(pv::SigSession &_session, + const srd_decoder *const decoder); virtual ~DecoderStack(); @@ -74,12 +81,15 @@ public: int64_t samples_decoded() const; + std::vector get_visible_rows() const; + /** * Extracts sorted annotations between two period into a vector. */ void get_annotation_subset( std::vector &dest, - uint64_t start_sample, uint64_t end_sample) const; + const decode::Row &row, uint64_t start_sample, + uint64_t end_sample) const; QString error_message(); @@ -92,20 +102,6 @@ public: private: void decode_proc(boost::shared_ptr data); - bool index_entry_start_sample_gt( - const uint64_t sample, const size_t index) const; - bool index_entry_end_sample_lt( - const size_t index, const uint64_t sample) const; - bool index_entry_end_sample_gt( - const uint64_t sample, const size_t index) const; - - void insert_annotation_into_start_index( - const pv::data::decode::Annotation &a, - const size_t storage_offset); - void insert_annotation_into_end_index( - const pv::data::decode::Annotation &a, - const size_t storage_offset); - static void annotation_callback(srd_proto_data *pdata, void *decoder); @@ -113,6 +109,7 @@ signals: void new_decode_data(); private: + pv::SigSession &_session; /** * This mutex prevents more than one decode operation occuring @@ -126,14 +123,10 @@ private: mutable boost::mutex _mutex; int64_t _samples_decoded; - std::vector _annotations; - /** - * _ann_start_index and _ann_end_index contain lists of annotions - * (represented by offsets in the _annotations vector), sorted in - * ascending ordered by the start_sample and end_sample respectively. - */ - std::vector _ann_start_index, _ann_end_index; + std::map _rows; + + std::map, decode::Row> _class_rows; QString _error_message;