Fix: add copy assignment functions to Wavetable and Wave
parent
6aa0f72afb
commit
0b2d815509
12
src/wave.h
12
src/wave.h
|
|
@ -37,6 +37,18 @@ public:
|
|||
m_tp = newWave.m_tp;
|
||||
}
|
||||
|
||||
Wave &operator=(const Wave &newWave)
|
||||
{
|
||||
if (this == &newWave) return *this;
|
||||
delete m_tp;
|
||||
m_tp = nullptr;
|
||||
m_tp = new float_t[DEFAULT_N_WAVES];
|
||||
for (uint16_t i = 0; i < DEFAULT_N_WAVES; i++) {
|
||||
*(m_tp + i) = newWave.m_tp[i];
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
~Wave()
|
||||
{
|
||||
delete m_tp;
|
||||
|
|
|
|||
|
|
@ -24,14 +24,35 @@ private:
|
|||
Wave *m_wtp; /*!< Pointer to table of Waves */
|
||||
|
||||
public:
|
||||
const uint16_t m_cid; /*!< Unique ID of wavetable */
|
||||
uint16_t m_cid; /*!< Unique ID of wavetable */
|
||||
Wavetable(std::string name) : m_name{name}, m_cid(m_nid++)
|
||||
{
|
||||
// Allocate Wavetable memory
|
||||
m_wtp = new Wave[DEFAULT_N_WAVES];
|
||||
}
|
||||
|
||||
~Wavetable() {
|
||||
Wavetable(const Wavetable& newWavetable)
|
||||
{
|
||||
m_nid = newWavetable.m_nid;
|
||||
m_cid = newWavetable.m_cid;
|
||||
m_name = newWavetable.m_name;
|
||||
m_wtp = newWavetable.m_wtp;
|
||||
}
|
||||
|
||||
Wavetable& operator=(const Wavetable& newWavetable)
|
||||
{
|
||||
if (this == &newWavetable) return *this;
|
||||
delete m_wtp;
|
||||
m_wtp = nullptr;
|
||||
m_wtp = new Wave[DEFAULT_N_WAVES];
|
||||
for (uint16_t i = 0; i < DEFAULT_N_WAVES; i++) {
|
||||
*(m_wtp + i) = newWavetable.m_wtp[i];
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
~Wavetable()
|
||||
{
|
||||
delete m_wtp;
|
||||
m_wtp = nullptr;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue