core: replace same_location by operator==()

And operator!=() in the negative case.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-05-04 23:20:53 +02:00 committed by bstoeger
parent 2df30a4144
commit db4b972897
8 changed files with 15 additions and 35 deletions

View file

@ -281,7 +281,7 @@ bool EditDiveSiteLocation::workToBeDone()
bool old_ok = has_location(&ds->location);
if (ok != old_ok)
return true;
return ok && !same_location(&value, &ds->location);
return ok && value != ds->location;
}
void EditDiveSiteLocation::redo()

View file

@ -57,7 +57,7 @@ struct dive_site *get_dive_site_by_gps(const location_t *loc, struct dive_site_t
int i;
struct dive_site *ds;
for_each_dive_site (i, ds, ds_table) {
if (same_location(loc, &ds->location))
if (*loc == ds->location)
return ds;
}
return NULL;
@ -71,7 +71,7 @@ struct dive_site *get_dive_site_by_gps_and_name(const std::string &name, const l
int i;
struct dive_site *ds;
for_each_dive_site (i, ds, ds_table) {
if (same_location(loc, &ds->location) && ds->name == name)
if (*loc == ds->location && ds->name == name)
return ds;
}
return NULL;
@ -273,7 +273,7 @@ static void merge_string(std::string &a, const std::string &b)
static bool same_dive_site(const struct dive_site *a, const struct dive_site *b)
{
return a->name == b->name
&& same_location(&a->location, &b->location)
&& a->location == b->location
&& a->description == b->description
&& a->notes == b->notes;
}

View file

@ -180,7 +180,7 @@ static void parse_dive_gps(char *line, struct git_parser_state *state)
ds = create_dive_site_with_gps(std::string(), &location, state->log->sites);
add_dive_to_dive_site(state->active_dive, ds);
} else {
if (dive_site_has_gps_location(ds) && !same_location(&ds->location, &location)) {
if (dive_site_has_gps_location(ds) && ds->location != location) {
std::string coords = printGPSCoordsC(&location);
// we have a dive site that already has GPS coordinates
// note 1: there will be much less copying once the core

View file

@ -1209,7 +1209,7 @@ static void gps_in_dive(const char *buffer, struct dive *dive, struct parser_sta
add_dive_to_dive_site(dive, ds);
} else {
if (dive_site_has_gps_location(ds) &&
has_location(&location) && !same_location(&ds->location, &location)) {
has_location(&location) && ds->location != location) {
// Houston, we have a problem
report_info("dive site uuid in dive, but gps location (%10.6f/%10.6f) different from dive location (%10.6f/%10.6f)",
ds->location.lat.udeg / 1000000.0, ds->location.lon.udeg / 1000000.0,

View file

@ -268,31 +268,6 @@ bool parseGpsText(const QString &gps_text, double *latitude, double *longitude)
pos == normalized.size();
}
#if 0 // we'll need something like this for the dive site management, eventually
bool gpsHasChanged(struct dive *dive, struct dive *master, const QString &gps_text, bool *parsed_out)
{
location_t location;
bool ignore;
bool *parsed = parsed_out ?: &ignore;
*parsed = true;
/* if we have a master and the dive's gps address is different from it,
* don't change the dive */
if (master && !same_location(&master->location, &dive->location))
return false;
if (!(*parsed = parseGpsText(gps_text, location)))
return false;
/* if dive gps didn't change, nothing changed */
if (same_location(&dive->location, location))
return false;
/* ok, update the dive and mark things changed */
dive->location = location;
return true;
}
#endif
static xmlDocPtr get_stylesheet_doc(const xmlChar *uri, xmlDictPtr, int, void *, xsltLoadType)
{
std::string filename = std::string(":/xslt/") + (const char *)uri;

View file

@ -138,9 +138,14 @@ static inline bool has_location(const location_t *loc)
return loc->lat.udeg || loc->lon.udeg;
}
static inline bool same_location(const location_t *a, const location_t *b)
static inline bool operator==(const location_t &a, const location_t &b)
{
return (a->lat.udeg == b->lat.udeg) && (a->lon.udeg == b->lon.udeg);
return (a.lat.udeg == b.lat.udeg) && (a.lon.udeg == b.lon.udeg);
}
static inline bool operator!=(const location_t &a, const location_t &b)
{
return !(a == b);
}
static inline location_t create_location(double lat, double lon)

View file

@ -475,7 +475,7 @@ void LocationFilterDelegate::paint(QPainter *painter, const QStyleOptionViewItem
if (dive_site_has_gps_location(ds) && currentDiveHasGPS) {
// so we are showing a completion and both the current dive site and the completion
// have a GPS fix... so let's show the distance
if (same_location(&ds->location, &currentLocation)) {
if (ds->location == currentLocation) {
bottomText += tr(" (same GPS fix)");
} else {
int distanceMeters = get_distance(&ds->location, &currentLocation);

View file

@ -294,7 +294,7 @@ bool GPSLocationInformationModel::filterAcceptsRow(int sourceRow, const QModelIn
if (!ds || ds == ignoreDs || ds == RECENTLY_ADDED_DIVESITE || !has_location(&ds->location))
return false;
return distance <= 0 ? same_location(&ds->location, &location)
return distance <= 0 ? ds->location == location
: (int64_t)get_distance(&ds->location, &location) * 1000 <= distance; // We need 64 bit to represent distances in mm
}