Inline a couple ring buffer methods

This commit is contained in:
Chris Robinson
2020-01-14 10:17:57 -08:00
parent e889282131
commit 400c768e2f
2 changed files with 14 additions and 17 deletions
-15
View File
@@ -66,21 +66,6 @@ void RingBuffer::reset() noexcept
}
size_t RingBuffer::readSpace() const noexcept
{
size_t w = mWritePtr.load(std::memory_order_acquire);
size_t r = mReadPtr.load(std::memory_order_acquire);
return (w-r) & mSizeMask;
}
size_t RingBuffer::writeSpace() const noexcept
{
size_t w = mWritePtr.load(std::memory_order_acquire);
size_t r = mReadPtr.load(std::memory_order_acquire) + mWriteSize - mSizeMask;
return (r-w-1) & mSizeMask;
}
size_t RingBuffer::read(void *dest, size_t cnt) noexcept
{
const size_t free_cnt{readSpace()};
+14 -2
View File
@@ -57,7 +57,13 @@ public:
* Return the number of elements available for reading. This is the number
* of elements in front of the read pointer and behind the write pointer.
*/
size_t readSpace() const noexcept;
size_t readSpace() const noexcept
{
const size_t w{mWritePtr.load(std::memory_order_acquire)};
const size_t r{mReadPtr.load(std::memory_order_acquire)};
return (w-r) & mSizeMask;
}
/**
* The copying data reader. Copy at most `cnt' elements into `dest'.
* Returns the actual number of elements copied.
@@ -75,7 +81,13 @@ public:
* Return the number of elements available for writing. This is the number
* of elements in front of the write pointer and behind the read pointer.
*/
size_t writeSpace() const noexcept;
size_t writeSpace() const noexcept
{
const size_t w{mWritePtr.load(std::memory_order_acquire)};
const size_t r{mReadPtr.load(std::memory_order_acquire) + mWriteSize - mSizeMask};
return (r-w-1) & mSizeMask;
}
/**
* The copying data writer. Copy at most `cnt' elements from `src'. Returns
* the actual number of elements copied.