diff options
-rw-r--r-- | src/tag.c | 12 | ||||
-rw-r--r-- | src/tag.h | 7 |
2 files changed, 19 insertions, 0 deletions
@@ -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; @@ -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 |