Stricter c++11 compliance
This commit is contained in:
parent
5f9bbbede5
commit
becdff5969
5 changed files with 29 additions and 27 deletions
|
|
@ -7,16 +7,18 @@
|
||||||
template<typename F>
|
template<typename F>
|
||||||
struct deferred
|
struct deferred
|
||||||
{
|
{
|
||||||
std::decay_t<F> f;
|
F f;
|
||||||
template<typename G>
|
deferred(F f) : f(f) {}
|
||||||
deferred(G&& g) : f{std::forward<G>(g)} {}
|
|
||||||
~deferred() { f(); }
|
~deferred() { f(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename G>
|
|
||||||
deferred(G&&) -> deferred<G>;
|
template <typename F>
|
||||||
|
deferred<F> deferred_func(F f) {
|
||||||
|
return deferred<F>(f);
|
||||||
|
}
|
||||||
|
|
||||||
#define CAT_(x, y) x##y
|
#define CAT_(x, y) x##y
|
||||||
#define CAT(x, y) CAT_(x, y)
|
#define CAT(x, y) CAT_(x, y)
|
||||||
#define ANONYMOUS_VAR(x) CAT(x, __LINE__)
|
#define ANONYMOUS_VAR(x) CAT(x, __LINE__)
|
||||||
#define DEFER deferred ANONYMOUS_VAR(defer_variable) = [&]
|
#define DEFER(code) auto ANONYMOUS_VAR(defer_variable) = deferred_func([&] { code ; })
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,7 @@ sfz::EQHolderPtr sfz::EQPool::getEQ(const EQDescription& description, unsigned n
|
||||||
{
|
{
|
||||||
if (!eqGuard.try_lock())
|
if (!eqGuard.try_lock())
|
||||||
return {};
|
return {};
|
||||||
DEFER { eqGuard.unlock(); };
|
DEFER(eqGuard.unlock());
|
||||||
|
|
||||||
auto eq = absl::c_find_if(eqs, [](const EQHolderPtr& holder) {
|
auto eq = absl::c_find_if(eqs, [](const EQHolderPtr& holder) {
|
||||||
return holder.use_count() == 1;
|
return holder.use_count() == 1;
|
||||||
|
|
@ -132,7 +132,7 @@ size_t sfz::EQPool::getActiveEQs() const
|
||||||
|
|
||||||
size_t sfz::EQPool::setnumEQs(size_t numEQs)
|
size_t sfz::EQPool::setnumEQs(size_t numEQs)
|
||||||
{
|
{
|
||||||
const std::lock_guard eqLock { eqGuard };
|
const std::lock_guard<std::mutex> eqLock { eqGuard };
|
||||||
|
|
||||||
auto eqIterator = eqs.begin();
|
auto eqIterator = eqs.begin();
|
||||||
auto eqSentinel = eqs.rbegin();
|
auto eqSentinel = eqs.rbegin();
|
||||||
|
|
|
||||||
|
|
@ -306,7 +306,7 @@ void sfz::FilePool::setPreloadSize(uint32_t preloadSize) noexcept
|
||||||
|
|
||||||
void sfz::FilePool::tryToClearPromises()
|
void sfz::FilePool::tryToClearPromises()
|
||||||
{
|
{
|
||||||
const std::lock_guard promiseLock { promiseGuard };
|
const std::lock_guard<std::mutex> promiseLock { promiseGuard };
|
||||||
|
|
||||||
for (auto& promise: promisesToClear) {
|
for (auto& promise: promisesToClear) {
|
||||||
if (promise->dataStatus != FilePromise::DataStatus::Wait)
|
if (promise->dataStatus != FilePromise::DataStatus::Wait)
|
||||||
|
|
@ -381,7 +381,7 @@ void sfz::FilePool::cleanupPromises() noexcept
|
||||||
{
|
{
|
||||||
if (!promiseGuard.try_lock())
|
if (!promiseGuard.try_lock())
|
||||||
return;
|
return;
|
||||||
DEFER { promiseGuard.unlock(); };
|
DEFER(promiseGuard.unlock());
|
||||||
|
|
||||||
// The garbage collection cleared the data from these so we can move them
|
// The garbage collection cleared the data from these so we can move them
|
||||||
// back to the empty queue
|
// back to the empty queue
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ sfz::FilterHolderPtr sfz::FilterPool::getFilter(const FilterDescription& descrip
|
||||||
{
|
{
|
||||||
if (!filterGuard.try_lock())
|
if (!filterGuard.try_lock())
|
||||||
return {};
|
return {};
|
||||||
DEFER { filterGuard.unlock(); };
|
DEFER(filterGuard.unlock());
|
||||||
|
|
||||||
auto filter = absl::c_find_if(filters, [](const FilterHolderPtr& holder) {
|
auto filter = absl::c_find_if(filters, [](const FilterHolderPtr& holder) {
|
||||||
return holder.use_count() == 1;
|
return holder.use_count() == 1;
|
||||||
|
|
@ -133,7 +133,7 @@ size_t sfz::FilterPool::getActiveFilters() const
|
||||||
|
|
||||||
size_t sfz::FilterPool::setNumFilters(size_t numFilters)
|
size_t sfz::FilterPool::setNumFilters(size_t numFilters)
|
||||||
{
|
{
|
||||||
const std::lock_guard filterLock { filterGuard };
|
const std::lock_guard<std::mutex> filterLock { filterGuard };
|
||||||
|
|
||||||
auto filterIterator = filters.begin();
|
auto filterIterator = filters.begin();
|
||||||
auto filterSentinel = filters.rbegin();
|
auto filterSentinel = filters.rbegin();
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ sfz::Synth::Synth()
|
||||||
|
|
||||||
sfz::Synth::Synth(int numVoices)
|
sfz::Synth::Synth(int numVoices)
|
||||||
{
|
{
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
parser.setListener(this);
|
parser.setListener(this);
|
||||||
effectFactory.registerStandardEffectTypes();
|
effectFactory.registerStandardEffectTypes();
|
||||||
effectBuses.reserve(5); // sufficient room for main and fx1-4
|
effectBuses.reserve(5); // sufficient room for main and fx1-4
|
||||||
|
|
@ -37,7 +37,7 @@ sfz::Synth::Synth(int numVoices)
|
||||||
|
|
||||||
sfz::Synth::~Synth()
|
sfz::Synth::~Synth()
|
||||||
{
|
{
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
|
|
||||||
for (auto& voice : voices)
|
for (auto& voice : voices)
|
||||||
voice->reset();
|
voice->reset();
|
||||||
|
|
@ -123,7 +123,7 @@ void sfz::Synth::buildRegion(const std::vector<Opcode>& regionOpcodes)
|
||||||
|
|
||||||
void sfz::Synth::clear()
|
void sfz::Synth::clear()
|
||||||
{
|
{
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
|
|
||||||
for (auto& voice : voices)
|
for (auto& voice : voices)
|
||||||
voice->reset();
|
voice->reset();
|
||||||
|
|
@ -321,7 +321,7 @@ bool sfz::Synth::loadSfzFile(const fs::path& file)
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
parser.parseFile(file);
|
parser.parseFile(file);
|
||||||
if (parser.getErrorCount() > 0)
|
if (parser.getErrorCount() > 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -496,7 +496,7 @@ void sfz::Synth::setSamplesPerBlock(int samplesPerBlock) noexcept
|
||||||
{
|
{
|
||||||
ASSERT(samplesPerBlock < config::maxBlockSize);
|
ASSERT(samplesPerBlock < config::maxBlockSize);
|
||||||
|
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
|
|
||||||
this->samplesPerBlock = samplesPerBlock;
|
this->samplesPerBlock = samplesPerBlock;
|
||||||
for (auto& voice : voices)
|
for (auto& voice : voices)
|
||||||
|
|
@ -512,7 +512,7 @@ void sfz::Synth::setSamplesPerBlock(int samplesPerBlock) noexcept
|
||||||
|
|
||||||
void sfz::Synth::setSampleRate(float sampleRate) noexcept
|
void sfz::Synth::setSampleRate(float sampleRate) noexcept
|
||||||
{
|
{
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
|
|
||||||
this->sampleRate = sampleRate;
|
this->sampleRate = sampleRate;
|
||||||
for (auto& voice : voices)
|
for (auto& voice : voices)
|
||||||
|
|
@ -541,7 +541,7 @@ void sfz::Synth::renderBlock(AudioSpan<float> buffer) noexcept
|
||||||
|
|
||||||
if (!callbackGuard.try_lock())
|
if (!callbackGuard.try_lock())
|
||||||
return;
|
return;
|
||||||
DEFER { callbackGuard.unlock(); };
|
DEFER(callbackGuard.unlock());
|
||||||
|
|
||||||
|
|
||||||
size_t numFrames = buffer.getNumFrames();
|
size_t numFrames = buffer.getNumFrames();
|
||||||
|
|
@ -637,7 +637,7 @@ void sfz::Synth::noteOn(int delay, int noteNumber, uint8_t velocity) noexcept
|
||||||
|
|
||||||
if (!callbackGuard.try_lock())
|
if (!callbackGuard.try_lock())
|
||||||
return;
|
return;
|
||||||
DEFER { callbackGuard.unlock(); };
|
DEFER(callbackGuard.unlock());
|
||||||
|
|
||||||
noteOnDispatch(delay, noteNumber, normalizedVelocity);
|
noteOnDispatch(delay, noteNumber, normalizedVelocity);
|
||||||
}
|
}
|
||||||
|
|
@ -653,7 +653,7 @@ void sfz::Synth::noteOff(int delay, int noteNumber, uint8_t velocity) noexcept
|
||||||
|
|
||||||
if (!callbackGuard.try_lock())
|
if (!callbackGuard.try_lock())
|
||||||
return;
|
return;
|
||||||
DEFER { callbackGuard.unlock(); };
|
DEFER(callbackGuard.unlock());
|
||||||
|
|
||||||
// FIXME: Some keyboards (e.g. Casio PX5S) can send a real note-off velocity. In this case, do we have a
|
// FIXME: Some keyboards (e.g. Casio PX5S) can send a real note-off velocity. In this case, do we have a
|
||||||
// way in sfz to specify that a release trigger should NOT use the note-on velocity?
|
// way in sfz to specify that a release trigger should NOT use the note-on velocity?
|
||||||
|
|
@ -749,7 +749,7 @@ void sfz::Synth::cc(int delay, int ccNumber, uint8_t ccValue) noexcept
|
||||||
|
|
||||||
if (!callbackGuard.try_lock())
|
if (!callbackGuard.try_lock())
|
||||||
return;
|
return;
|
||||||
DEFER { callbackGuard.unlock(); };
|
DEFER(callbackGuard.unlock());
|
||||||
|
|
||||||
if (ccNumber == config::resetCC) {
|
if (ccNumber == config::resetCC) {
|
||||||
resetAllControllers(delay);
|
resetAllControllers(delay);
|
||||||
|
|
@ -941,7 +941,7 @@ int sfz::Synth::getNumVoices() const noexcept
|
||||||
void sfz::Synth::setNumVoices(int numVoices) noexcept
|
void sfz::Synth::setNumVoices(int numVoices) noexcept
|
||||||
{
|
{
|
||||||
ASSERT(numVoices > 0);
|
ASSERT(numVoices > 0);
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
resetVoices(numVoices);
|
resetVoices(numVoices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -962,7 +962,7 @@ void sfz::Synth::resetVoices(int numVoices)
|
||||||
|
|
||||||
void sfz::Synth::setOversamplingFactor(sfz::Oversampling factor) noexcept
|
void sfz::Synth::setOversamplingFactor(sfz::Oversampling factor) noexcept
|
||||||
{
|
{
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
|
|
||||||
for (auto& voice : voices)
|
for (auto& voice : voices)
|
||||||
voice->reset();
|
voice->reset();
|
||||||
|
|
@ -979,7 +979,7 @@ sfz::Oversampling sfz::Synth::getOversamplingFactor() const noexcept
|
||||||
|
|
||||||
void sfz::Synth::setPreloadSize(uint32_t preloadSize) noexcept
|
void sfz::Synth::setPreloadSize(uint32_t preloadSize) noexcept
|
||||||
{
|
{
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
|
|
||||||
resources.filePool.setPreloadSize(preloadSize);
|
resources.filePool.setPreloadSize(preloadSize);
|
||||||
}
|
}
|
||||||
|
|
@ -1010,7 +1010,7 @@ void sfz::Synth::resetAllControllers(int delay) noexcept
|
||||||
|
|
||||||
if (!callbackGuard.try_lock())
|
if (!callbackGuard.try_lock())
|
||||||
return;
|
return;
|
||||||
DEFER { callbackGuard.unlock(); };
|
DEFER(callbackGuard.unlock());
|
||||||
|
|
||||||
for (auto& voice : voices) {
|
for (auto& voice : voices) {
|
||||||
voice->registerPitchWheel(delay, 0);
|
voice->registerPitchWheel(delay, 0);
|
||||||
|
|
@ -1057,7 +1057,7 @@ void sfz::Synth::disableLogging() noexcept
|
||||||
|
|
||||||
void sfz::Synth::allSoundOff() noexcept
|
void sfz::Synth::allSoundOff() noexcept
|
||||||
{
|
{
|
||||||
const std::lock_guard disableCallback { callbackGuard };
|
const std::lock_guard<std::mutex> disableCallback { callbackGuard };
|
||||||
|
|
||||||
for (auto& voice : voices)
|
for (auto& voice : voices)
|
||||||
voice->reset();
|
voice->reset();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue