gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit 9c5f90f849ea12ee02569cb7778cb1013ea60a29
parent 79505b1f5d3afc118e9c59d8d25e4ebc8d6ce20e
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Wed,  6 Nov 2024 08:19:24 +0100

more hybridcontainer improvements

Diffstat:
Msource/baseLib/hybridcontainer.h | 18+++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/source/baseLib/hybridcontainer.h b/source/baseLib/hybridcontainer.h @@ -8,6 +8,8 @@ namespace baseLib template <typename T, size_t MaxFixedSize> class HybridContainer { + static_assert(MaxFixedSize > 0, "MaxFixedSize must be greater than 0"); + public: HybridContainer() {} @@ -28,6 +30,14 @@ namespace baseLib { } + HybridContainer(std::initializer_list<T> _list) : m_size(_list.size()), m_useArray(_list.size() <= MaxFixedSize) + { + if(m_useArray) + std::copy(_list.begin(), _list.end(), m_array.begin()); + else + m_vector.assign(_list); + } + ~HybridContainer() = default; template<typename U> @@ -129,16 +139,14 @@ namespace baseLib auto begin() const { if (m_useArray) - return m_array.begin(); + return &m_array[0]; - return m_vector.begin(); + return &m_vector[0]; } auto end() const { - if (m_useArray) - return m_array.begin() + m_size; - return m_vector.end(); + return begin() + m_size; } HybridContainer& operator=(const HybridContainer& _source)