diff options
Diffstat (limited to 'divesite.h')
-rw-r--r-- | divesite.h | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/divesite.h b/divesite.h index f0cf08067..5b1d1959d 100644 --- a/divesite.h +++ b/divesite.h @@ -46,20 +46,38 @@ static inline struct dive_site *get_dive_site_by_uuid(uint32_t uuid) } /* there could be multiple sites of the same name - return the first one */ -static inline uint32_t get_dive_site_uuid_by_name(const char *name) +static inline uint32_t get_dive_site_uuid_by_name(const char *name, struct dive_site **dsp) { int i; struct dive_site *ds; - for_each_dive_site (i, ds) - if (ds->name == name) + for_each_dive_site (i, ds) { + if (ds->name == name) { + if (dsp) + *dsp = ds; + return ds->uuid; + } + } + return 0; +} + +/* there could be multiple sites at the same GPS fix - return the first one */ +static inline uint32_t get_dive_site_uuid_by_gps(degrees_t latitude, degrees_t longitude, struct dive_site **dsp) +{ + int i; + struct dive_site *ds; + for_each_dive_site (i, ds) { + if (ds->latitude.udeg == latitude.udeg && ds->longitude.udeg == longitude.udeg) { + if (dsp) + *dsp = ds; return ds->uuid; + } + } return 0; } struct dive_site *alloc_dive_site(); uint32_t create_dive_site(const char *name); uint32_t create_dive_site_with_gps(const char *name, degrees_t latitude, degrees_t longitude); -uint32_t dive_site_uuid_by_name(const char *name); struct dive_site *get_or_create_dive_site_by_uuid(uint32_t uuid); #ifdef __cplusplus |