Commit 20ebacf4 authored by Max Kellermann's avatar Max Kellermann

Tag: add methods RemoveAll(), RemoveType()

parent c6ef0e88
......@@ -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;
}
......@@ -122,6 +122,18 @@ struct Tag {
void AddItem(TagType type, const char *value);
/**
* Removes all tag items.
*/
void RemoveAll() {
num_items = 0;
}
/**
* Removes all tag items of the specified type.
*/
void RemoveType(TagType type);
/**
* Merges the data from two tags. If both tags share data for the
* same TagType, only data from "add" is used.
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment