66 template <
typename Index,
typename GetBufferedRange,
typename ReadFromReservoir,
typename FillReservoir>
68 GetBufferedRange&& getBufferedRange,
69 ReadFromReservoir&& readFromReservoir,
70 FillReservoir&& fillReservoir)
74 const auto bufferedRange = getBufferedRange();
76 if (bufferedRange.contains (rangeToRead.
getStart()))
79 readFromReservoir (rangeToReadInBuffer);
80 rangeToRead.
setStart (rangeToReadInBuffer.getEnd());
84 fillReservoir (rangeToRead.
getStart());
86 const auto newRange = getBufferedRange();
88 if (newRange.isEmpty() || ! newRange.contains (rangeToRead.
getStart()))
Definition juce_Range.h:40
constexpr ValueType getStart() const noexcept
Definition juce_Range.h:80
constexpr bool isEmpty() const noexcept
Definition juce_Range.h:89
JUCE_NODISCARD constexpr Range getIntersectionWith(Range other) const noexcept
Definition juce_Range.h:234
void setStart(const ValueType newStart) noexcept
Definition juce_Range.h:96
Definition carla_juce.cpp:31
Definition juce_Reservoir.h:30
static Range< Index > doBufferedRead(Range< Index > rangeToRead, GetBufferedRange &&getBufferedRange, ReadFromReservoir &&readFromReservoir, FillReservoir &&fillReservoir)
Definition juce_Reservoir.h:67