]> sigrok.org Git - pulseview.git/blobdiff - pv/data/snapshot.h
Rename 'probe' to 'channel' (libsigrokdecode change).
[pulseview.git] / pv / data / snapshot.h
index 7f36ee7886ddaa528633a293701c09cdb94b09de..1f1ca3cf0b8539e7387c5211434123ce98ee42f4 100644 (file)
@@ -21,9 +21,7 @@
 #ifndef PULSEVIEW_PV_DATA_SNAPSHOT_H
 #define PULSEVIEW_PV_DATA_SNAPSHOT_H
 
-extern "C" {
 #include <libsigrok/libsigrok.h>
-}
 
 #include <boost/thread.hpp>
 
@@ -37,7 +35,36 @@ public:
 
        virtual ~Snapshot();
 
-       uint64_t get_sample_count();
+       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);
@@ -46,6 +73,7 @@ protected:
        mutable boost::recursive_mutex _mutex;
        void *_data;
        uint64_t _sample_count;
+       uint64_t _capacity;
        int _unit_size;
 };