]> sigrok.org Git - pulseview.git/blobdiff - pv/data/snapshot.h
Replaced boost::thread/mutex etc. with std equivalents
[pulseview.git] / pv / data / snapshot.h
index 5fb79198eb2b6efe64f0e3cd1f0995d4d8ca14cf..499164400014d20001ae1e130c177bfcefe990be 100644 (file)
@@ -23,7 +23,8 @@
 
 #include <libsigrok/libsigrok.h>
 
-#include <boost/thread.hpp>
+#include <thread>
+#include <mutex>
 
 namespace pv {
 namespace data {
@@ -37,13 +38,43 @@ public:
 
        uint64_t get_sample_count() const;
 
+       int unit_size() const;
+
+       /**
+        * @brief Increase the capacity of the snapshot.
+        *
+        * Increasing the capacity allows samples to be appended without needing
+        * to reallocate memory.
+        *
+        * For the best efficiency @c set_capacity() should be called once before
+        * @c append_data() is called to set up the snapshot with the expected number
+        * of samples that will be appended in total.
+        *
+        * @note The capacity will automatically be increased when @c append_data()
+        * is called if there is not enough capacity in the buffer to store the samples.
+        *
+        * @param[in] new_capacity The new capacity of the snapshot. If this value is
+        *      smaller or equal than the current capacity then the method has no effect.
+        */
+       void set_capacity(uint64_t new_capacity);
+
+       /**
+        * @brief Get the current capacity of the snapshot.
+        *
+        * The capacity can be increased by calling @c set_capacity().
+        *
+        * @return The current capacity of the snapshot.
+        */
+       uint64_t capacity() const;
+
 protected:
        void append_data(void *data, uint64_t samples);
 
 protected:
-       mutable boost::recursive_mutex _mutex;
+       mutable std::recursive_mutex _mutex;
        void *_data;
        uint64_t _sample_count;
+       uint64_t _capacity;
        int _unit_size;
 };