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;