X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fsnapshot.h;h=1f1ca3cf0b8539e7387c5211434123ce98ee42f4;hp=7f36ee7886ddaa528633a293701c09cdb94b09de;hb=8bd26d8b9c831b509ee3241ea4dac6f50c023622;hpb=1b1ec774978b65209ce2b454cbf81da499b797d2;ds=sidebyside diff --git a/pv/data/snapshot.h b/pv/data/snapshot.h index 7f36ee78..1f1ca3cf 100644 --- a/pv/data/snapshot.h +++ b/pv/data/snapshot.h @@ -21,9 +21,7 @@ #ifndef PULSEVIEW_PV_DATA_SNAPSHOT_H #define PULSEVIEW_PV_DATA_SNAPSHOT_H -extern "C" { #include -} #include @@ -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; };