Merge pull request #890 from YosysHQ/gatecat/ssoarray-move
SSOArray: Implement move and assignment operators
This commit is contained in:
commit
3266c51d85
@ -70,6 +70,26 @@ template <typename T, std::size_t N> class SSOArray
|
||||
std::copy(other.begin(), other.end(), begin());
|
||||
}
|
||||
|
||||
SSOArray(SSOArray &&other) : m_size(other.size())
|
||||
{
|
||||
if (is_heap())
|
||||
data_heap = other.data_heap;
|
||||
else
|
||||
std::copy(other.begin(), other.end(), begin());
|
||||
other.m_size = 0;
|
||||
}
|
||||
SSOArray &operator=(const SSOArray &other)
|
||||
{
|
||||
if (&other == this)
|
||||
return *this;
|
||||
if (is_heap())
|
||||
delete[] data_heap;
|
||||
m_size = other.m_size;
|
||||
alloc();
|
||||
std::copy(other.begin(), other.end(), begin());
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <typename Tother> SSOArray(const Tother &other) : m_size(other.size())
|
||||
{
|
||||
alloc();
|
||||
|
Loading…
Reference in New Issue
Block a user