diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2015-07-13 15:13:48 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-07-13 15:42:35 -0700 |
commit | ca5606d3e9783edbd3012684eff1a829088870b5 (patch) | |
tree | 49c088687bb73d4639894b281af2cd88fd341269 | |
parent | 3b2a02dffaeaa788e08c7ba07af14df7ef055489 (diff) | |
download | subsurface-ca5606d3e9783edbd3012684eff1a829088870b5.tar.gz |
Create/retrieve dive_site by name.
When we are working on the location management, we want to get a new
dive_site if the dive_site name changed unless there's no dive_site by
that name, then we create it.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | divesite.c | 16 | ||||
-rw-r--r-- | divesite.h | 2 |
2 files changed, 17 insertions, 1 deletions
diff --git a/divesite.c b/divesite.c index 998fe23bf..800ccc9bd 100644 --- a/divesite.c +++ b/divesite.c @@ -200,3 +200,19 @@ void clear_dive_site(struct dive_site *ds) ds->taxonomy.nr = 0; free_taxonomy(&ds->taxonomy); } + +uint32_t find_or_create_dive_site_with_name(const char *name) +{ + int i; + struct dive_site *ds; + bool found = false; + for_each_dive_site(i,ds) { + if (same_string(name, ds->name)) { + found = true; + break; + } + } + if (ds) + return ds->uuid; + return create_dive_site(name); +} diff --git a/divesite.h b/divesite.h index 306272e96..8801ddce9 100644 --- a/divesite.h +++ b/divesite.h @@ -59,7 +59,7 @@ uint32_t get_dive_site_uuid_by_gps_proximity(degrees_t latitude, degrees_t longi bool dive_site_is_empty(struct dive_site *ds); void copy_dive_site(struct dive_site *orig, struct dive_site *copy); void clear_dive_site(struct dive_site *ds); - +uint32_t find_or_create_dive_site_with_name(const char *name); #ifdef __cplusplus } #endif |