cleanup: Init always allocates, ctors always zero

This commit is contained in:
Glenn Maynard
2002-10-12 00:22:04 +00:00
parent 73188fab68
commit d0c7a7e303
+14 -7
View File
@@ -24,18 +24,22 @@
NoteData::NoteData() NoteData::NoteData()
{ {
for(int t = 0; t < MAX_NOTE_TRACKS; ++t) memset(m_TapNotes, 0, sizeof(m_TapNotes));
m_TapNotes[t] = new TapNote[MAX_TAP_NOTE_ROWS];
Init(); Init();
} }
NoteData::NoteData(const NoteData &cpy) { *this = cpy; } NoteData::NoteData(const NoteData &cpy)
{
memset(m_TapNotes, 0, sizeof(m_TapNotes));
*this = cpy;
}
NoteData &NoteData::operator= (const NoteData &cpy) NoteData &NoteData::operator= (const NoteData &cpy)
{ {
for(int t = 0; t < MAX_NOTE_TRACKS; ++t) { Init();
m_TapNotes[t] = new TapNote[MAX_TAP_NOTE_ROWS]; for(int t = 0; t < MAX_NOTE_TRACKS; ++t)
memmove( m_TapNotes[t], cpy.m_TapNotes[t], sizeof(TapNote) * MAX_TAP_NOTE_ROWS ); memmove( m_TapNotes[t], cpy.m_TapNotes[t], sizeof(TapNote) * MAX_TAP_NOTE_ROWS );
}
m_iNumTracks = cpy.m_iNumTracks; m_iNumTracks = cpy.m_iNumTracks;
m_iNumHoldNotes = cpy.m_iNumHoldNotes; m_iNumHoldNotes = cpy.m_iNumHoldNotes;
return *this; return *this;
@@ -43,8 +47,11 @@ NoteData &NoteData::operator= (const NoteData &cpy)
void NoteData::Init() void NoteData::Init()
{ {
for(int t = 0; t < MAX_NOTE_TRACKS; ++t) for(int t = 0; t < MAX_NOTE_TRACKS; ++t) {
if(!m_TapNotes[t])
m_TapNotes[t] = new TapNote[MAX_TAP_NOTE_ROWS];
memset( m_TapNotes[t], '0', sizeof(TapNote) * MAX_TAP_NOTE_ROWS ); memset( m_TapNotes[t], '0', sizeof(TapNote) * MAX_TAP_NOTE_ROWS );
}
m_iNumTracks = 0; m_iNumTracks = 0;
m_iNumHoldNotes = 0; m_iNumHoldNotes = 0;
} }