90 void reset()
noexcept;
138 void prepareToWrite (
int numToWrite,
int& startIndex1,
int& blockSize1,
int& startIndex2,
int& blockSize2)
const noexcept;
183 void prepareToRead (
int numWanted,
int& startIndex1,
int& blockSize1,
int& startIndex2,
int& blockSize2)
const noexcept;
193 enum class ReadOrWrite
201 template <ReadOrWrite mode>
215 prepare (*fifo, num);
230 finish (*fifo, blockSize1 + blockSize2);
236 template <
typename FunctionToApply>
239 for (
auto i = startIndex1, e = startIndex1 + blockSize1; i != e; ++i) func (i);
240 for (
auto i = startIndex2, e = startIndex2 + blockSize2; i != e; ++i) func (i);
243 int startIndex1, blockSize1, startIndex2, blockSize2;
253 using ScopedRead = ScopedReadWrite<ReadOrWrite::read>;
254 using ScopedWrite = ScopedReadWrite<ReadOrWrite::write>;
276 ScopedRead read (
int numToRead)
noexcept;
298 ScopedWrite write (
int numToWrite)
noexcept;
305 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (
AbstractFifo)
309inline void AbstractFifo::ScopedReadWrite<AbstractFifo::ReadOrWrite::read>::finish (AbstractFifo& f,
int num)
noexcept
311 f.finishedRead (num);
315inline void AbstractFifo::ScopedReadWrite<AbstractFifo::ReadOrWrite::write>::finish (
AbstractFifo& f,
int num)
noexcept
317 f.finishedWrite (num);
321inline void AbstractFifo::ScopedReadWrite<AbstractFifo::ReadOrWrite::read>::prepare (
AbstractFifo& f,
int num)
noexcept
323 f.prepareToRead (num, startIndex1, blockSize1, startIndex2, blockSize2);
327inline void AbstractFifo::ScopedReadWrite<AbstractFifo::ReadOrWrite::write>::prepare (
AbstractFifo& f,
int num)
noexcept
329 f.prepareToWrite (num, startIndex1, blockSize1, startIndex2, blockSize2);
ScopedReadWrite(AbstractFifo &f, int num) noexcept
void forEach(FunctionToApply &&func) const
ScopedReadWrite()=default
void prepareToWrite(int numToWrite, int &startIndex1, int &blockSize1, int &startIndex2, int &blockSize2) const noexcept
int getTotalSize() const noexcept
ScopedRead read(int numToRead) noexcept
void prepareToRead(int numWanted, int &startIndex1, int &blockSize1, int &startIndex2, int &blockSize2) const noexcept
AbstractFifo(int capacity) noexcept
void finishedRead(int numRead) noexcept
int getFreeSpace() const noexcept
void finishedWrite(int numWritten) noexcept
ScopedWrite write(int numToWrite) noexcept
int getNumReady() const noexcept
void setTotalSize(int newSize) noexcept