From def5a08b4d360f6035ad4c420f0206ad6f96e0bd Mon Sep 17 00:00:00 2001 From: Kitsune Ral Date: Mon, 11 Apr 2016 12:43:32 +0900 Subject: Factor out the code that searches an insertion point in a timeline. This is used once in the library and, I guess, twice more in the Quaternion. Implemented as a template function that is equally suitable for Event and Message, and any container that supports STL-style iterators (QList and other Qt containers do). --- events/event.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'events/event.h') diff --git a/events/event.h b/events/event.h index b25b1378..6a8d0e89 100644 --- a/events/event.h +++ b/events/event.h @@ -19,6 +19,8 @@ #ifndef QMATRIXCLIENT_EVENT_H #define QMATRIXCLIENT_EVENT_H +#include + #include #include #include @@ -53,6 +55,22 @@ namespace QMatrixClient class Private; Private* d; }; + + /** + * Finds a place in the timeline where a new event/message could be inserted. + * @return an iterator to an item with the earliest timestamp after + * the one of 'item'; or timeline.end(), if all events are earlier + */ + template class ContT> + typename ContT::iterator + findInsertionPos(ContT & timeline, const ItemT *item) + { + return std::lower_bound (timeline.begin(), timeline.end(), item, + [](const ItemT * a, const ItemT * b) { + return a->timestamp() < b->timestamp(); + } + ); + } } #endif // QMATRIXCLIENT_EVENT_H -- cgit v1.2.3