mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Cleanup: generate clear_*_table() functions by macro
In analogy to the other table functions, generate these by a macro as well. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
f4ef1c4bc8
commit
3df32044ee
8 changed files with 18 additions and 31 deletions
|
@ -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)
|
||||
{
|
||||
|
@ -1008,23 +1009,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
|
||||
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -342,7 +342,7 @@ void DownloadFromDCWidget::on_downloadCancelRetryButton_clicked()
|
|||
// this means we are retrying - so we better clean out the partial
|
||||
// list of downloaded dives from the last attempt
|
||||
diveImportedModel->clearTable();
|
||||
clear_table(thread.table());
|
||||
clear_dive_table(thread.table());
|
||||
}
|
||||
updateState(DOWNLOADING);
|
||||
|
||||
|
@ -493,7 +493,7 @@ void DownloadFromDCWidget::on_cancel_clicked()
|
|||
return;
|
||||
|
||||
// now discard all the dives
|
||||
clear_table(thread.table());
|
||||
clear_dive_table(thread.table());
|
||||
done(-1);
|
||||
}
|
||||
|
||||
|
|
|
@ -1769,7 +1769,7 @@ void MainWindow::on_actionImportDiveSites_triggered()
|
|||
sites.dive_sites[i]->dives.nr = 0;
|
||||
|
||||
// Now we can clear the imported dives and trips.
|
||||
clear_table(&table);
|
||||
clear_dive_table(&table);
|
||||
clear_trip_table(&trips);
|
||||
|
||||
QString source = fileNames.size() == 1 ? fileNames[0] : tr("multiple files");
|
||||
|
|
Loading…
Reference in a new issue