1
Fork 0

DRY Model

This commit is contained in:
gvnnz 2023-06-12 23:08:37 +02:00
parent 833e0aaabf
commit 37637ff544
1 changed files with 5 additions and 18 deletions

View File

@ -63,8 +63,9 @@ auto* get_(S& source, ID id)
/* -------------------------------------------------------------------------- */
template <typename T>
typename T::element_type& add_(std::vector<T>& dest, T obj)
typename T::element_type& add_(std::vector<T>& dest, T obj, Model& model)
{
DataLock lock = model.lockData(SwapType::NONE);
dest.push_back(std::move(obj));
return *dest.back().get();
}
@ -411,23 +412,9 @@ Wave* Model::findWave(ID id) { return get_(m_shared.waves, id); }
/* -------------------------------------------------------------------------- */
Wave& Model::addWave(std::unique_ptr<Wave> w)
{
DataLock lock = lockData(SwapType::NONE);
return add_(m_shared.waves, std::move(w));
}
Plugin& Model::addPlugin(std::unique_ptr<Plugin> p)
{
DataLock lock = lockData(SwapType::NONE);
return add_(m_shared.plugins, std::move(p));
}
ChannelShared& Model::addChannelShared(std::unique_ptr<ChannelShared> cs)
{
DataLock lock = lockData(SwapType::NONE);
return add_(m_shared.channelsShared, std::move(cs));
}
Wave& Model::addWave(std::unique_ptr<Wave> w) { return add_(m_shared.waves, std::move(w), *this); }
Plugin& Model::addPlugin(std::unique_ptr<Plugin> p) { return add_(m_shared.plugins, std::move(p), *this); }
ChannelShared& Model::addChannelShared(std::unique_ptr<ChannelShared> cs) { return add_(m_shared.channelsShared, std::move(cs), *this); }
/* -------------------------------------------------------------------------- */