]> mj.ucw.cz Git - leo.git/commitdiff
Added an interface for overriding tags
authorMartin Mares <mj@ucw.cz>
Mon, 14 Mar 2022 16:14:10 +0000 (17:14 +0100)
committerMartin Mares <mj@ucw.cz>
Mon, 14 Mar 2022 16:14:10 +0000 (17:14 +0100)
osm.c
osm.h

diff --git a/osm.c b/osm.c
index 6c11e67a6d035289c396f1c143c9622daa67983e..17f2001ec10e6ea69a4cfa2ad2a84ceb167047e2 100644 (file)
--- 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 d0df0c6240512d8e1bea999b2e1e32dfc584e6b4..e7b81684bea39ff6a0c214f56d6832eeaf88448d 100644 (file)
--- 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, ...);