From: Martin Mares Date: Mon, 14 Mar 2022 16:14:10 +0000 (+0100) Subject: Added an interface for overriding tags X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=24ac36285cb171a0e124e1c5189b5849de8cd43c;p=leo.git Added an interface for overriding tags --- diff --git a/osm.c b/osm.c index 6c11e67..17f2001 100644 --- a/osm.c +++ b/osm.c @@ -146,6 +146,23 @@ void osm_obj_add_tag(struct osm_object *o, const char *key, const char *val) osm_obj_add_tag_raw(o, osm_key_encode(key), osm_val_encode(val)); } +void osm_obj_set_tag_raw(struct osm_object *o, osm_key_t key, osm_val_t val) +{ + CLIST_FOR_EACH(struct osm_tag *, t, o->tags) + if (t->key == key) + { + t->val = val; + return; + } + + osm_obj_add_tag_raw(o, key, val); +} + +void osm_obj_set_tag(struct osm_object *o, const char *key, const char *val) +{ + osm_obj_set_tag_raw(o, osm_key_encode(key), osm_val_encode(val)); +} + osm_val_t osm_obj_find_tag(struct osm_object *o, osm_key_t key) { CLIST_FOR_EACH(struct osm_tag *, t, o->tags) diff --git a/osm.h b/osm.h index d0df0c6..e7b8168 100644 --- a/osm.h +++ b/osm.h @@ -95,6 +95,8 @@ osm_id_t osm_parse_id(const char *str); struct osm_object *osm_obj_find_by_id(enum osm_object_type type, osm_id_t id); void osm_obj_add_tag(struct osm_object *o, const char *key, const char *val); void osm_obj_add_tag_raw(struct osm_object *o, osm_key_t key, osm_val_t val); +void osm_obj_set_tag(struct osm_object *o, const char *key, const char *val); +void osm_obj_set_tag_raw(struct osm_object *o, osm_key_t key, osm_val_t val); osm_val_t osm_obj_find_tag(struct osm_object *o, osm_val_t key); void osm_obj_dump(struct osm_object *o); void osm_obj_warn(struct osm_object *o, const char *msg, ...);