From 9f4e96fdfa0967fa83444a44c8e6fdbda14b96c3 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 3 Dec 2013 12:56:36 +0100 Subject: PaylistTag: use class TagBuilder --- src/tag/TagBuilder.cxx | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) (limited to 'src/tag/TagBuilder.cxx') diff --git a/src/tag/TagBuilder.cxx b/src/tag/TagBuilder.cxx index 2d3b49eb5..5c7da2a1a 100644 --- a/src/tag/TagBuilder.cxx +++ b/src/tag/TagBuilder.cxx @@ -108,13 +108,7 @@ TagBuilder::Clear() { time = -1; has_playlist = false; - - tag_pool_lock.lock(); - for (auto i : items) - tag_pool_put_item(i); - tag_pool_lock.unlock(); - - items.clear(); + RemoveAll(); } void @@ -216,3 +210,29 @@ TagBuilder::AddItem(TagType type, const char *value) AddItem(type, value, strlen(value)); } + +void +TagBuilder::RemoveAll() +{ + tag_pool_lock.lock(); + for (auto i : items) + tag_pool_put_item(i); + tag_pool_lock.unlock(); + + items.clear(); +} + +void +TagBuilder::RemoveType(TagType type) +{ + const auto begin = items.begin(), end = items.end(); + + items.erase(std::remove_if(begin, end, + [type](TagItem *item) { + if (item->type != type) + return false; + tag_pool_put_item(item); + return true; + }), + end); +} -- cgit v1.2.3