comparison 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
comparison
equal deleted inserted replaced
1637:e8099be64726 1638:b57a75aa5ae3
255 255
256 return span; 256 return span;
257 } 257 }
258 258
259 EventVector 259 EventVector
260 EventSeries::getEventsStartingWithin(sv_frame_t frame,
261 sv_frame_t duration) const
262 {
263 EventVector span;
264
265 const sv_frame_t start = frame;
266 const sv_frame_t end = frame + duration;
267
268 // because we don't need to "look back" at events that started
269 // earlier than the start of the given range, we can do this
270 // entirely from m_events
271
272 auto pitr = lower_bound(m_events.begin(), m_events.end(),
273 Event(start));
274 while (pitr != m_events.end() && pitr->getFrame() < end) {
275 span.push_back(*pitr);
276 ++pitr;
277 }
278
279 return span;
280 }
281
282 EventVector
260 EventSeries::getEventsCovering(sv_frame_t frame) const 283 EventSeries::getEventsCovering(sv_frame_t frame) const
261 { 284 {
262 EventVector cover; 285 EventVector cover;
263 286
264 // first find any zero-duration events 287 // first find any zero-duration events