76 jassert (isPowerOfTwo (sizeIn));
93 std::array<Range<int>, 2>
write (
int num)
95 const auto startPos = (readPos + numReadable) & (size - 1);
97 const auto firstBlockSize = jmin (maxToWrite, size - startPos);
99 numReadable += maxToWrite;
101 return { { { startPos, startPos + firstBlockSize }, { 0, maxToWrite - firstBlockSize } } };
109 std::array<Range<int>, 2>
read (
int num)
111 const auto startPos = readPos;
112 const auto maxToRead = jmin (numReadable, num);
113 const auto firstBlockSize = jmin (maxToRead, size - startPos);
115 readPos = (startPos + maxToRead) & (size - 1);
116 numReadable -= maxToRead;
118 return { { { startPos, startPos + firstBlockSize }, { 0, maxToRead - firstBlockSize } } };
122 int size = 0, readPos = 0, numReadable = 0;
SingleThreadedAbstractFifo(int sizeIn)
SingleThreadedAbstractFifo()=default
int getRemainingSpace() const
std::array< Range< int >, 2 > read(int num)
std::array< Range< int >, 2 > write(int num)
int getNumReadable() const