diff options
Diffstat (limited to 'muse2/muse/midievent.cpp')
-rw-r--r-- | muse2/muse/midievent.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/muse2/muse/midievent.cpp b/muse2/muse/midievent.cpp index 9fd47eaf..fb6517cd 100644 --- a/muse2/muse/midievent.cpp +++ b/muse2/muse/midievent.cpp @@ -41,11 +41,26 @@ MidiEventBase::MidiEventBase(EventType t) c = 0; } +bool MidiEventBase::isSimilarTo(const EventBase& other_) const +{ + const MidiEventBase* other = dynamic_cast<const MidiEventBase*>(&other_); + if (other==NULL) // dynamic cast hsa failed: "other_" is not of type MidiEventBase. + return false; + + if ((a==other->a && b==other->b && c==other->c && edata.dataLen==other->edata.dataLen && this->PosLen::operator==(*other)) == false) + return false; + + if (edata.dataLen > 0) + return (memcmp(edata.data, other->edata.data, edata.dataLen) == 0); + else + return true; // no data equals no data. +} + //--------------------------------------------------------- // MidiEventBase::mid //--------------------------------------------------------- -EventBase* MidiEventBase::mid(unsigned b, unsigned e) +EventBase* MidiEventBase::mid(unsigned b, unsigned e) const { if (tick() < b || tick() >= e) return 0; |