X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fsnapshot.h;h=1f1ca3cf0b8539e7387c5211434123ce98ee42f4;hb=8cb717055ce13a6d6568ff384b3cd3932c41d1b0;hp=1758d4cddaa7720f35a02449d344b311274cfcc1;hpb=6fd14a32c76a8d4548223eba546d1805d2725df0;p=pulseview.git diff --git a/pv/data/snapshot.h b/pv/data/snapshot.h index 1758d4cd..1f1ca3cf 100644 --- a/pv/data/snapshot.h +++ b/pv/data/snapshot.h @@ -39,6 +39,33 @@ public: 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; };