core: move process_import_dives() and related functions to divelog

These functions accessed the global divelog make this explicit.

I'm still not happy about the situation, because these functions
access global state, such as the selection. I think these
should be moved up the call-chain.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-06-19 22:45:25 +02:00 committed by bstoeger
parent b34116e2e2
commit 176f544106
14 changed files with 500 additions and 494 deletions

View file

@ -12,6 +12,14 @@
struct device;
/* flags for process_imported_dives() */
struct import_flags {
static constexpr int prefer_imported = 1 << 0;
static constexpr int is_downloaded = 1 << 1;
static constexpr int merge_all_trips = 1 << 2;
static constexpr int add_to_new_trip = 1 << 3;
};
struct divelog {
dive_table dives;
trip_table trips;
@ -29,6 +37,19 @@ struct divelog {
void delete_multiple_dives(const std::vector<dive *> &dives);
void clear();
bool is_trip_before_after(const struct dive *dive, bool before) const;
struct process_imported_dives_result {
dive_table dives_to_add;
std::vector<dive *> dives_to_remove;
trip_table trips_to_add;
dive_site_table sites_to_add;
std::vector<device> devices_to_add;
};
/* divelist core logic functions */
process_imported_dives_result process_imported_dives(struct divelog &import_log, int flags); // import_log will be consumed
void process_loaded_dives();
void add_imported_dives(struct divelog &log, int flags); // log will be consumed
};
extern struct divelog divelog;