Mercurial > hg > svcore
diff base/EventSeries.cpp @ 1638:b57a75aa5ae3 single-point
Add getEventsStartingWithin
author | Chris Cannam |
---|---|
date | Wed, 13 Mar 2019 10:55:02 +0000 |
parents | 05e3ea2237f5 |
children | e7f557789f99 |
line wrap: on
line diff
--- a/base/EventSeries.cpp Wed Mar 13 10:54:42 2019 +0000 +++ b/base/EventSeries.cpp Wed Mar 13 10:55:02 2019 +0000 @@ -257,6 +257,29 @@ } EventVector +EventSeries::getEventsStartingWithin(sv_frame_t frame, + sv_frame_t duration) const +{ + EventVector span; + + const sv_frame_t start = frame; + const sv_frame_t end = frame + duration; + + // because we don't need to "look back" at events that started + // earlier than the start of the given range, we can do this + // entirely from m_events + + auto pitr = lower_bound(m_events.begin(), m_events.end(), + Event(start)); + while (pitr != m_events.end() && pitr->getFrame() < end) { + span.push_back(*pitr); + ++pitr; + } + + return span; +} + +EventVector EventSeries::getEventsCovering(sv_frame_t frame) const { EventVector cover;