aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/tag.c12
-rw-r--r--src/tag.h7
2 files changed, 19 insertions, 0 deletions
diff --git a/src/tag.c b/src/tag.c
index 2ec4986ab..5e2a3620e 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -319,6 +319,18 @@ struct tag *tag_dup(const struct tag *tag)
return ret;
}
+bool tag_has_type(const struct tag *tag, enum tag_type type)
+{
+ assert(tag != NULL);
+ assert(type < TAG_NUM_OF_ITEM_TYPES);
+
+ for (unsigned i = 0; i < tag->numOfItems; i++)
+ if (tag->items[i]->type == type)
+ return true;
+
+ return false;
+}
+
int tag_equal(const struct tag *tag1, const struct tag *tag2)
{
int i;
diff --git a/src/tag.h b/src/tag.h
index 10801d9e5..899768e2b 100644
--- a/src/tag.h
+++ b/src/tag.h
@@ -23,6 +23,7 @@
#include <stdint.h>
#include <stddef.h>
+#include <stdbool.h>
#include <string.h>
enum tag_type {
@@ -88,6 +89,12 @@ static inline void tag_add_item(struct tag *tag, enum tag_type itemType,
struct tag *tag_dup(const struct tag *tag);
+/**
+ * Checks whether the tag contains one or more items with
+ * the specified type.
+ */
+bool tag_has_type(const struct tag *tag, enum tag_type type);
+
int tag_equal(const struct tag *tag1, const struct tag *tag2);
#endif