LV2_Evbuf_Iterator lv2_evbuf_end(LV2_Evbuf* evbuf) { const uint32_t size = lv2_evbuf_get_size(evbuf); const LV2_Evbuf_Iterator iter = { evbuf, lv2_evbuf_pad_size(size) }; return iter; }
static LV2_Evbuf_Iterator findEventAfter (LV2Evbuf& buf, uint32 frame, uint32 subframe) { if (lv2_evbuf_get_size (buf) == 0) return lv2_evbuf_begin (buf); uint32 f, sf, t, sz; uint8_t* data = nullptr; LV2_EVBUF_FOREACH (buf, iter) { lv2_evbuf_get (iter, &f, &sf, &t, &sz, &data); if (f > frame) return iter; }
bool lv2_evbuf_is_valid(LV2_Evbuf_Iterator iter) { return iter.offset < lv2_evbuf_get_size(iter.evbuf); }