]> sigrok.org Git - pulseview.git/blobdiff - pv/data/segment.hpp
Implement single sample value getters
[pulseview.git] / pv / data / segment.hpp
index 9ea9629dcbd0d8e294b07f46c81573a9fc2c4681..9bdc17dd6f1c54fa854fd823eb12685e40763c7e 100644 (file)
 
 #include <mutex>
 #include <thread>
-#include <vector>
+#include <deque>
 
 #include <QObject>
 
 using std::recursive_mutex;
-using std::vector;
+using std::deque;
 
 namespace SegmentTest {
 struct SmallSize8Single;
@@ -51,8 +51,7 @@ namespace data {
 typedef struct {
        uint64_t sample_index, chunk_num, chunk_offs;
        uint8_t* chunk;
-       uint8_t* value;
-} SegmentRawDataIterator;
+} SegmentDataIterator;
 
 class Segment : public QObject
 {
@@ -85,15 +84,18 @@ public:
 protected:
        void append_single_sample(void *data);
        void append_samples(void *data, uint64_t samples);
+       const uint8_t* get_raw_sample(uint64_t sample_num) const;
        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<uint8_t*> data_chunks_;
+       deque<uint8_t*> data_chunks_;
        uint8_t* current_chunk_;
        uint64_t used_samples_, unused_samples_;
        uint64_t sample_count_;
@@ -120,4 +122,8 @@ protected:
 } // namespace data
 } // namespace pv
 
+typedef std::shared_ptr<pv::data::Segment> SharedPtrToSegment;
+
+Q_DECLARE_METATYPE(SharedPtrToSegment);
+
 #endif // PULSEVIEW_PV_DATA_SEGMENT_HPP