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;
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;
285 ScopedRead read (
int numToRead)
noexcept;
314 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (
AbstractFifo)
318inline void AbstractFifo::ScopedReadWrite<AbstractFifo::ReadOrWrite::read>::finish (AbstractFifo& f,
int num)
noexcept
320 f.finishedRead (num);
324inline void AbstractFifo::ScopedReadWrite<AbstractFifo::ReadOrWrite::write>::finish (AbstractFifo& f,
int num)
noexcept
326 f.finishedWrite (num);
330inline void AbstractFifo::ScopedReadWrite<AbstractFifo::ReadOrWrite::read>::prepare (AbstractFifo& f,
int num)
noexcept
332 f.prepareToRead (num, startIndex1, blockSize1, startIndex2, blockSize2);
336inline void AbstractFifo::ScopedReadWrite<AbstractFifo::ReadOrWrite::write>::prepare (AbstractFifo& f,
int num)
noexcept
338 f.prepareToWrite (num, startIndex1, blockSize1, startIndex2, blockSize2);
ScopedReadWrite(AbstractFifo &f, int num) noexcept
void forEach(FunctionToApply &&func) const
ScopedReadWrite()=default