]> sigrok.org Git - pulseview.git/blobdiff - pv/data/segment.hpp
Tests: Add another unit test for Segment class
[pulseview.git] / pv / data / segment.hpp
index ba1db8e42cee554bc5778dba843dfd63713e9db1..7338bd3896f5a055bbe5575b3f06ba514b9cdb90 100644 (file)
 
 #include "pv/util.hpp"
 
-#include <thread>
 #include <mutex>
+#include <thread>
 #include <vector>
 
+using std::recursive_mutex;
+using std::vector;
+
 namespace SegmentTest {
 struct SmallSize8Single;
 struct MediumSize8Single;
@@ -36,8 +39,9 @@ struct MediumSize32Single;
 struct MaxSize32Single;
 struct MediumSize32Multi;
 struct MaxSize32Multi;
+struct MaxSize32MultiAtOnce;
 struct MaxSize32MultiIterated;
-}
+}  // namespace SegmentTest
 
 namespace pv {
 namespace data {
@@ -51,7 +55,7 @@ typedef struct {
 class Segment
 {
 private:
-       static const uint64_t MaxChunkSize = 10*1024*1024;  /* 10MiB */
+       static const uint64_t MaxChunkSize;
 
 public:
        Segment(uint64_t samplerate, unsigned int unit_size);
@@ -74,12 +78,12 @@ protected:
        void append_samples(void *data, uint64_t samples);
        uint8_t* get_raw_samples(uint64_t start, uint64_t count) const;
 
-       SegmentRawDataIterator* begin_raw_sample_iteration(uint64_t start) const;
-       void continue_raw_sample_iteration(SegmentRawDataIterator* it, uint64_t increase) const;
-       void end_raw_sample_iteration(SegmentRawDataIterator* it) 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);
 
-       mutable std::recursive_mutex mutex_;
-       std::vector<uint8_t*> data_chunks_;
+       mutable recursive_mutex mutex_;
+       vector<uint8_t*> data_chunks_;
        uint8_t* current_chunk_;
        uint64_t used_samples_, unused_samples_;
        uint64_t sample_count_;
@@ -87,6 +91,8 @@ protected:
        double samplerate_;
        uint64_t chunk_size_;
        unsigned int unit_size_;
+       int iterator_count_;
+       bool mem_optimization_requested_;
 
        friend struct SegmentTest::SmallSize8Single;
        friend struct SegmentTest::MediumSize8Single;
@@ -96,6 +102,7 @@ protected:
        friend struct SegmentTest::MaxSize32Single;
        friend struct SegmentTest::MediumSize32Multi;
        friend struct SegmentTest::MaxSize32Multi;
+       friend struct SegmentTest::MaxSize32MultiAtOnce;
        friend struct SegmentTest::MaxSize32MultiIterated;
 };