aboutsummaryrefslogtreecommitdiffstats
path: root/src/tag/Tag.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/tag/Tag.cxx')
-rw-r--r--src/tag/Tag.cxx20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/tag/Tag.cxx b/src/tag/Tag.cxx
index 6bf070429..0fb7ea93b 100644
--- a/src/tag/Tag.cxx
+++ b/src/tag/Tag.cxx
@@ -223,3 +223,23 @@ Tag::AddItem(TagType type, const char *value)
{
AddItem(type, value, strlen(value));
}
+
+void
+Tag::RemoveType(TagType type)
+{
+ auto dest = items, src = items, end = items + num_items;
+
+ tag_pool_lock.lock();
+ while (src != end) {
+ TagItem *item = *src++;
+ if (item->type == type)
+ /* remove it */
+ tag_pool_put_item(item);
+ else
+ /* keep it */
+ *dest++ = item;
+ }
+ tag_pool_lock.unlock();
+
+ num_items = dest - items;
+}