90 int getTotalSize()
const noexcept;
93 int getFreeSpace()
const noexcept;
96 int getNumReady()
const noexcept;
99 void reset() noexcept;
105 void setTotalSize (
int newSize) noexcept;
147 void prepareToWrite (
int numToWrite,
int& startIndex1,
int& blockSize1,
int& startIndex2,
int& blockSize2)
const noexcept;
152 void finishedWrite (
int numWritten) noexcept;
192 void prepareToRead (
int numWanted,
int& startIndex1,
int& blockSize1,
int& startIndex2,
int& blockSize2)
const noexcept;
197 void finishedRead (
int numRead) noexcept;
202 enum class ReadOrWrite
210 template <ReadOrWrite mode>
224 prepare (*fifo, num);
239 finish (*fifo, blockSize1 + blockSize2);
245 template <
typename FunctionToApply>
248 for (
auto i = startIndex1, e = startIndex1 + blockSize1; i != e; ++i) func (i);
249 for (
auto i = startIndex2, e = startIndex2 + blockSize2; i != e; ++i) func (i);
252 int startIndex1, blockSize1, startIndex2, blockSize2;
314 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (
AbstractFifo)
332 f.
prepareToRead (num, startIndex1, blockSize1, startIndex2, blockSize2);
338 f.
prepareToWrite (num, startIndex1, blockSize1, startIndex2, blockSize2);
void finishedRead(int numRead) noexcept
~ScopedReadWrite() noexcept
void prepareToWrite(int numToWrite, int &startIndex1, int &blockSize1, int &startIndex2, int &blockSize2) const noexcept
void forEach(FunctionToApply &&func) const
ScopedReadWrite(AbstractFifo &f, int num) noexcept
void finishedWrite(int numWritten) noexcept
void prepareToRead(int numWanted, int &startIndex1, int &blockSize1, int &startIndex2, int &blockSize2) const noexcept