]> git.sesse.net Git - nageru/commitdiff
Add versions of the binary search utilities that take in const references.
authorSteinar H. Gunderson <steinar+nageru@gunderson.no>
Sat, 14 Mar 2020 16:14:34 +0000 (17:14 +0100)
committerSteinar H. Gunderson <steinar+nageru@gunderson.no>
Sat, 14 Mar 2020 22:44:17 +0000 (23:44 +0100)
futatabi/frame_on_disk.h

index 35f375bb78ef37a6522b351cea981e4a0643bf4e..c8a74a758ffdc19e6fad72c34a9246408893971f 100644 (file)
@@ -61,6 +61,13 @@ find_last_frame_before(std::vector<FrameOnDisk> &frames, int64_t pts_origin)
                                [](const FrameOnDisk &frame, int64_t pts) { return frame.pts < pts; });
 }
 
+inline std::vector<FrameOnDisk>::const_iterator
+find_last_frame_before(const std::vector<FrameOnDisk> &frames, int64_t pts_origin)
+{
+       return std::lower_bound(frames.begin(), frames.end(), pts_origin,
+                               [](const FrameOnDisk &frame, int64_t pts) { return frame.pts < pts; });
+}
+
 inline std::vector<FrameOnDisk>::iterator
 find_first_frame_at_or_after(std::vector<FrameOnDisk> &frames, int64_t pts_origin)
 {
@@ -68,4 +75,11 @@ find_first_frame_at_or_after(std::vector<FrameOnDisk> &frames, int64_t pts_origi
                                [](int64_t pts, const FrameOnDisk &frame) { return pts < frame.pts; });
 }
 
+inline std::vector<FrameOnDisk>::const_iterator
+find_first_frame_at_or_after(const std::vector<FrameOnDisk> &frames, int64_t pts_origin)
+{
+       return std::upper_bound(frames.begin(), frames.end(), pts_origin - 1,
+                               [](int64_t pts, const FrameOnDisk &frame) { return pts < frame.pts; });
+}
+
 #endif  // !defined(_FRAME_ON_DISK_H)