aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-11-03 18:24:00 +0100
committerMax Kellermann <max@duempel.org>2008-11-03 18:24:00 +0100
commit8bb2da063f59e7586c61f88c1fb2d268e6191e5c (patch)
treec992c72e96fadc9400bc416b765c23f320b1f138
parentb9d456a041a3cc11e8bb7e6a9500e2c5f2fa4ee2 (diff)
tag: added function tag_has_type()
tag_has_type() checks whether the tag contains one or more items with the specified type.
-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 2ec4986a..5e2a3620 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 10801d9e..899768e2 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