#include "MidiSequencer.h" #include "MidiEditor.h" #include "UndoRedoStack.h" int _mdb = 0; // global instance counter MidiSequencer::MidiSequencer(std::shared_ptr sng) : selection(std::make_shared()), song(sng), context(std::make_shared(sng) ) { undo = std::make_shared(); ++_mdb; } void MidiSequencer::makeEditor() { MidiSequencerPtr seq = shared_from_this(); editor = std::make_shared(seq); } MidiSequencer::~MidiSequencer() { --_mdb; } void MidiSequencer::assertValid() const { assert(editor); assert(undo); assert(song); assert(context); assert(selection); context->assertValid(); song->assertValid(); assertSelectionInTrack(); } void MidiSequencer::assertSelectionInTrack() const { MidiTrackPtr track = context->getTrack(); for (auto it : *selection) { #if 1 auto foundPtr = track->findEventPointer(it); assert(foundPtr != track->end()); auto x = *foundPtr; MidiEventPtrC y = x.second; // MidiEventPtrC x = track->findEventPointer(it);; #else MidiEventPtrC foundPtr = track->findEventPointer(it)->second; assert(foundPtr); #endif } }