diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/divelist.c | 22 | ||||
-rw-r--r-- | core/divelist.h | 2 | ||||
-rw-r--r-- | core/divesite.c | 1 | ||||
-rw-r--r-- | core/downloadfromdcthread.cpp | 2 | ||||
-rw-r--r-- | core/table.h | 8 | ||||
-rw-r--r-- | core/trip.c | 8 |
6 files changed, 15 insertions, 28 deletions
diff --git a/core/divelist.c b/core/divelist.c index 71391d505..af253fb4e 100644 --- a/core/divelist.c +++ b/core/divelist.c @@ -782,6 +782,7 @@ static MAKE_REMOVE_FROM(dive_table, dives) static MAKE_GET_IDX(dive_table, struct dive *, dives) MAKE_SORT(dive_table, struct dive *, dives, comp_dives) MAKE_REMOVE(dive_table, struct dive *, dive) +MAKE_CLEAR_TABLE(dive_table, dives, dive) void insert_dive(struct dive_table *table, struct dive *d) { @@ -1009,23 +1010,6 @@ static void merge_imported_dives(struct dive_table *table) } /* - * Clear a dive_table and dive_site_table. Think about generating these with macros. - */ -void clear_table(struct dive_table *table) -{ - for (int i = 0; i < table->nr; i++) - free_dive(table->dives[i]); - table->nr = 0; -} - -void clear_dive_site_table(struct dive_site_table *ds_table) -{ - for (int i = 0; i < ds_table->nr; i++) - free_dive_site(ds_table->dive_sites[i]); - ds_table->nr = 0; -} - -/* * Try to merge a new dive into the dive at position idx. Return * true on success. On success, the old dive will be added to the * dives_to_remove table and the merged dive to the dives_to_add @@ -1292,8 +1276,8 @@ void process_imported_dives(struct dive_table *import_table, struct trip_table * import_trip_table = &local_trip_table; /* Make sure that output parameters don't contain garbage */ - clear_table(dives_to_add); - clear_table(dives_to_remove); + clear_dive_table(dives_to_add); + clear_dive_table(dives_to_remove); clear_trip_table(trips_to_add); clear_dive_site_table(sites_to_add); diff --git a/core/divelist.h b/core/divelist.h index 7b57b41ac..f363cc336 100644 --- a/core/divelist.h +++ b/core/divelist.h @@ -58,7 +58,7 @@ void reset_min_datafile_version(); void report_datafile_version(int version); int get_dive_id_closest_to(timestamp_t when); void clear_dive_file_data(); -void clear_table(struct dive_table *table); +void clear_dive_table(struct dive_table *table); #ifdef DEBUG_TRIP extern void dump_selection(void); diff --git a/core/divesite.c b/core/divesite.c index 45601537c..db5d87cdf 100644 --- a/core/divesite.c +++ b/core/divesite.c @@ -130,6 +130,7 @@ static MAKE_REMOVE_FROM(dive_site_table, dive_sites) static MAKE_GET_IDX(dive_site_table, struct dive_site *, dive_sites) MAKE_SORT(dive_site_table, struct dive_site *, dive_sites, compare_sites) static MAKE_REMOVE(dive_site_table, struct dive_site *, dive_site) +MAKE_CLEAR_TABLE(dive_site_table, dive_sites, dive_site) int add_dive_site_to_table(struct dive_site *ds, struct dive_site_table *ds_table) { diff --git a/core/downloadfromdcthread.cpp b/core/downloadfromdcthread.cpp index 955431880..1112d6027 100644 --- a/core/downloadfromdcthread.cpp +++ b/core/downloadfromdcthread.cpp @@ -82,7 +82,7 @@ void DownloadThread::run() #endif qDebug() << "Starting download from " << (internalData->bluetooth_mode ? "BT" : internalData->devname); qDebug() << "downloading" << (internalData->force_download ? "all" : "only new") << "dives"; - clear_table(&downloadTable); + clear_dive_table(&downloadTable); clear_dive_site_table(&diveSiteTable); Q_ASSERT(internalData->download_table != nullptr); diff --git a/core/table.h b/core/table.h index 1abfa6be3..da0bc96a5 100644 --- a/core/table.h +++ b/core/table.h @@ -91,4 +91,12 @@ return idx; \ } +#define MAKE_CLEAR_TABLE(table_type, array_name, item_name) \ + void clear_##table_type(struct table_type *table) \ + { \ + for (int i = 0; i < table->nr; i++) \ + free_##item_name(table->array_name[i]); \ + table->nr = 0; \ + } + #endif diff --git a/core/trip.c b/core/trip.c index a864e8dfb..446f153eb 100644 --- a/core/trip.c +++ b/core/trip.c @@ -49,6 +49,7 @@ static MAKE_ADD_TO(trip_table, struct dive_trip *, trips) static MAKE_REMOVE_FROM(trip_table, trips) MAKE_SORT(trip_table, struct dive_trip *, trips, comp_trips) MAKE_REMOVE(trip_table, struct dive_trip *, trip) +MAKE_CLEAR_TABLE(trip_table, trips, trip) timestamp_t trip_date(const struct dive_trip *trip) { @@ -294,13 +295,6 @@ dive_trip_t *combine_trips(struct dive_trip *trip_a, struct dive_trip *trip_b) return trip; } -void clear_trip_table(struct trip_table *table) -{ - for (int i = 0; i < table->nr; i++) - free_trip(table->trips[i]); - table->nr = 0; -} - /* Trips are compared according to the first dive in the trip. */ int comp_trips(const struct dive_trip *a, const struct dive_trip *b) { |