From cd28e88bee085b1f12561764b87a9b8ffc0a8212 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Thu, 12 Feb 2015 01:59:16 -0800 Subject: Improve helper functions Sometimes we want to create a dive site just based on a name, sometimes we have both a name and GPS coordinates. Let's make a helper for either case. Signed-off-by: Dirk Hohndel --- divesite.c | 14 ++++++++++++-- divesite.h | 10 +++++++++- parse-xml.c | 10 +++++----- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/divesite.c b/divesite.c index 21efaf2e6..c3bb45950 100644 --- a/divesite.c +++ b/divesite.c @@ -37,7 +37,17 @@ struct dive_site *alloc_dive_site() } /* allocate a new site and add it to the table */ -uint32_t create_dive_site(const char *name, degrees_t latitude, degrees_t longitude) +uint32_t create_dive_site(const char *name) +{ + struct dive_site *ds = alloc_dive_site(); + ds->uuid = dive_site_getUniqId(); + ds->name = copy_string(name); + + return ds->uuid; +} + +/* same as before, but with GPS data */ +uint32_t create_dive_site_with_gps(const char *name, degrees_t latitude, degrees_t longitude) { struct dive_site *ds = alloc_dive_site(); ds->uuid = dive_site_getUniqId(); @@ -53,7 +63,7 @@ uint32_t dive_site_uuid_by_name(const char *name) { uint32_t id = get_dive_site_uuid_by_name(name); if (id == 0) - id = create_dive_site(name, (degrees_t){0}, (degrees_t){0}); + id = create_dive_site(name); return id; } diff --git a/divesite.h b/divesite.h index 2a4d8c616..b3487c341 100644 --- a/divesite.h +++ b/divesite.h @@ -4,6 +4,10 @@ #include "units.h" #include +#ifdef __cplusplus +extern "C" { +#endif + struct dive_site { uint32_t uuid; @@ -53,7 +57,11 @@ static inline uint32_t get_dive_site_uuid_by_name(const char *name) } struct dive_site *alloc_dive_site(); -uint32_t create_dive_site(const char *name, degrees_t latitude, degrees_t longitude); +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); +#ifdef __cplusplus +} +#endif #endif // DIVESITE_H diff --git a/parse-xml.c b/parse-xml.c index 4377a32cb..54e74b953 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -983,7 +983,7 @@ static void divinglog_place(char *place, uint32_t *uuid) country ? country : ""); *uuid = get_dive_site_uuid_by_name(buffer); if (*uuid == 0) - *uuid = create_dive_site(buffer, (degrees_t){0}, (degrees_t){0}); + *uuid = create_dive_site(buffer); city = NULL; country = NULL; @@ -1156,7 +1156,7 @@ static void gps_in_dive(char *buffer, struct dive *dive) uint32_t uuid = dive->dive_site_uuid; if (uuid == 0) { fprintf(stderr, "found no uuid in dive, creating a divesite without name and above GPS\n"); - dive->dive_site_uuid = create_dive_site("", latitude, longitude); + dive->dive_site_uuid = create_dive_site_with_gps("", latitude, longitude); } else { fprintf(stderr, "found uuid in dive, checking to see if we should add GPS\n"); struct dive_site *ds = get_dive_site_by_uuid(uuid); @@ -1193,7 +1193,7 @@ static void add_dive_site(char *buffer, struct dive *dive) exit(1); } } else { - dive->dive_site_uuid = create_dive_site(buffer, (degrees_t){0}, (degrees_t){0}); + dive->dive_site_uuid = create_dive_site(buffer); } } } @@ -1437,7 +1437,7 @@ static void dive_site_end(void) if (!cur_dive_site) return; if (cur_dive_site->uuid) { - uint32_t tmp = create_dive_site(cur_dive_site->name, cur_dive_site->latitude, cur_dive_site->longitude); + uint32_t tmp = create_dive_site_with_gps(cur_dive_site->name, cur_dive_site->latitude, cur_dive_site->longitude); struct dive_site *ds = get_dive_site_by_uuid(tmp); ds->uuid = cur_dive_site->uuid; ds->notes = cur_dive_site->notes; @@ -2502,7 +2502,7 @@ extern int cobalt_location(void *handle, int columns, char **data, char **column sprintf(tmp, "%s / %s", location, data[0]); free(location); location = NULL; - cur_dive->dive_site_uuid = create_dive_site(tmp, (degrees_t){0}, (degrees_t){0}); + cur_dive->dive_site_uuid = create_dive_site(tmp); } else { location = strdup(data[0]); } -- cgit v1.2.3-70-g09d2