X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fsegment.hpp;h=f5a00c9581530529044cb33d283f52cbb7c1d162;hp=db75ef710a285ceb75f795667a0826d34f4b8e1b;hb=50e56db003055e96c5a12e675889e4afad07b65c;hpb=b82243f74a175f621af26aabbc0f32e2ecb125fa diff --git a/pv/data/segment.hpp b/pv/data/segment.hpp index db75ef71..f5a00c95 100644 --- a/pv/data/segment.hpp +++ b/pv/data/segment.hpp @@ -27,6 +27,8 @@ #include #include +#include + using std::recursive_mutex; using std::vector; @@ -49,16 +51,17 @@ namespace data { typedef struct { uint64_t sample_index, chunk_num, chunk_offs; uint8_t* chunk; - uint8_t* value; -} SegmentRawDataIterator; +} SegmentDataIterator; -class Segment +class Segment : public QObject { + Q_OBJECT + private: static const uint64_t MaxChunkSize; public: - Segment(uint64_t samplerate, unsigned int unit_size); + Segment(uint32_t segment_id, uint64_t samplerate, unsigned int unit_size); virtual ~Segment(); @@ -71,6 +74,11 @@ public: unsigned int unit_size() const; + uint32_t segment_id() const; + + void set_complete(); + bool is_complete() const; + void free_unused_memory(); protected: @@ -78,10 +86,13 @@ protected: void append_samples(void *data, uint64_t samples); void get_raw_samples(uint64_t start, uint64_t count, uint8_t *dest) const; - SegmentRawDataIterator* begin_raw_sample_iteration(uint64_t start); - void continue_raw_sample_iteration(SegmentRawDataIterator* it, uint64_t increase); - void end_raw_sample_iteration(SegmentRawDataIterator* it); + SegmentDataIterator* begin_sample_iteration(uint64_t start); + void continue_sample_iteration(SegmentDataIterator* it, uint64_t increase); + void end_sample_iteration(SegmentDataIterator* it); + uint8_t* get_iterator_value(SegmentDataIterator* it); + uint64_t get_iterator_valid_length(SegmentDataIterator* it); + uint32_t segment_id_; mutable recursive_mutex mutex_; vector data_chunks_; uint8_t* current_chunk_; @@ -93,6 +104,7 @@ protected: unsigned int unit_size_; int iterator_count_; bool mem_optimization_requested_; + bool is_complete_; friend struct SegmentTest::SmallSize8Single; friend struct SegmentTest::MediumSize8Single;