core: make find_next_visible_dive() member of dive_table

This function implicitely accessed the global divelog. To make
that explicit make it a member of dive_table, such that the
caller must access it via the global variable.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-06-18 20:57:10 +02:00 committed by bstoeger
parent 4afefb1b9b
commit e9a57ac5f5
4 changed files with 8 additions and 10 deletions

View file

@ -1288,21 +1288,18 @@ timestamp_t get_surface_interval(timestamp_t when)
/* Find visible dive close to given date. First search towards older,
* then newer dives. */
struct dive *find_next_visible_dive(timestamp_t when)
struct dive *dive_table::find_next_visible_dive(timestamp_t when)
{
if (divelog.dives.empty())
return nullptr;
/* we might want to use binary search here */
auto it = std::find_if(divelog.dives.begin(), divelog.dives.end(),
auto it = std::find_if(begin(), end(),
[when] (auto &d) { return d->when <= when; });
for (auto it2 = it; it2 != divelog.dives.begin(); --it2) {
for (auto it2 = it; it2 != begin(); --it2) {
if (!(*std::prev(it2))->hidden_by_filter)
return it2->get();
}
for (auto it2 = it; it2 != divelog.dives.end(); ++it2) {
for (auto it2 = it; it2 != end(); ++it2) {
if (!(*it2)->hidden_by_filter)
return it2->get();
}