diff --git a/modules/juce_audio_basics/midi/juce_MidiFile.cpp b/modules/juce_audio_basics/midi/juce_MidiFile.cpp index fe5937b2c9..830891ac14 100644 --- a/modules/juce_audio_basics/midi/juce_MidiFile.cpp +++ b/modules/juce_audio_basics/midi/juce_MidiFile.cpp @@ -178,6 +178,21 @@ MidiFile::~MidiFile() { } +MidiFile::MidiFile (const MidiFile& other) + : timeFormat (other.timeFormat) +{ + tracks.addCopiesOf (other.tracks); +} + +MidiFile& MidiFile::operator= (const MidiFile& other) +{ + timeFormat = other.timeFormat; + tracks.clear(); + tracks.addCopiesOf (other.tracks); + + return *this; +} + void MidiFile::clear() { tracks.clear(); diff --git a/modules/juce_audio_basics/midi/juce_MidiFile.h b/modules/juce_audio_basics/midi/juce_MidiFile.h index 7f98fc3217..d653e48e29 100644 --- a/modules/juce_audio_basics/midi/juce_MidiFile.h +++ b/modules/juce_audio_basics/midi/juce_MidiFile.h @@ -50,6 +50,12 @@ public: /** Destructor. */ ~MidiFile(); + /** Creates a copy of another MidiFile. */ + MidiFile (const MidiFile& other); + + /** Copies from another MidiFile object */ + MidiFile& operator= (const MidiFile& other); + //============================================================================== /** Returns the number of tracks in the file. @see getTrack, addTrack @@ -173,7 +179,7 @@ private: void readNextTrack (const uint8*, int size); void writeTrack (OutputStream&, int trackNum); - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MidiFile) + JUCE_LEAK_DETECTOR (MidiFile) };