diff --git a/include/amuse/Studio.hpp b/include/amuse/Studio.hpp index 9f853f7..798fdba 100644 --- a/include/amuse/Studio.hpp +++ b/include/amuse/Studio.hpp @@ -18,7 +18,7 @@ class Studio { std::list m_studiosOut; #ifndef NDEBUG - bool _cyclicCheck(Studio* leaf); + bool _cyclicCheck(const Studio* leaf) const; #endif public: diff --git a/lib/Studio.cpp b/lib/Studio.cpp index c0e03cd..f94f3a9 100644 --- a/lib/Studio.cpp +++ b/lib/Studio.cpp @@ -1,16 +1,16 @@ #include "amuse/Studio.hpp" + +#include + #include "amuse/Engine.hpp" namespace amuse { #ifndef NDEBUG -bool Studio::_cyclicCheck(Studio* leaf) { - for (auto it = m_studiosOut.begin(); it != m_studiosOut.end();) { - if (leaf == it->m_targetStudio.get() || it->m_targetStudio->_cyclicCheck(leaf)) - return true; - ++it; - } - return false; +bool Studio::_cyclicCheck(const Studio* leaf) const { + return std::any_of(m_studiosOut.cbegin(), m_studiosOut.cend(), [leaf](const auto& studio) { + return leaf == studio.m_targetStudio.get() || studio.m_targetStudio->_cyclicCheck(leaf); + }); } #endif @@ -20,7 +20,7 @@ Studio::Studio(Engine& engine, bool mainOut) : m_engine(engine), m_master(engine } void Studio::addStudioSend(ObjToken studio, float dry, float auxA, float auxB) { - m_studiosOut.emplace_back(studio, dry, auxA, auxB); + m_studiosOut.emplace_back(std::move(studio), dry, auxA, auxB); /* Cyclic check */ assert(!_cyclicCheck(this));