Don't use std:: in the code directly (where possible).
[pulseview.git] / pv / data / segment.hpp
index 513b7dbd9412fdc03883e7c4991083551923df60..b46af4925184fbf3b6bab8c14ef16a6eec2d5dc2 100644 (file)
@@ -27,6 +27,9 @@
 #include <mutex>
 #include <vector>
 
+using std::recursive_mutex;
+using std::vector;
+
 namespace SegmentTest {
 struct SmallSize8Single;
 struct MediumSize8Single;
@@ -51,7 +54,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);
@@ -67,17 +70,19 @@ public:
 
        unsigned int unit_size() const;
 
+       void free_unused_memory();
+
 protected:
        void append_single_sample(void *data);
        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_;
@@ -85,6 +90,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;