aboutsummaryrefslogtreecommitdiffstats
path: root/src/tag/TagBuilder.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-12-03 12:56:36 +0100
committerMax Kellermann <max@duempel.org>2013-12-03 12:59:55 +0100
commit9f4e96fdfa0967fa83444a44c8e6fdbda14b96c3 (patch)
tree2f08a42a9c2f70160e892314dbeaf3bf559a8203 /src/tag/TagBuilder.cxx
parentc36af357303891a45fdcb286b99ca8bb5be20693 (diff)
downloadmpd-9f4e96fdfa0967fa83444a44c8e6fdbda14b96c3.tar.gz
mpd-9f4e96fdfa0967fa83444a44c8e6fdbda14b96c3.tar.xz
mpd-9f4e96fdfa0967fa83444a44c8e6fdbda14b96c3.zip
PaylistTag: use class TagBuilder
Diffstat (limited to 'src/tag/TagBuilder.cxx')
-rw-r--r--src/tag/TagBuilder.cxx34
1 files changed, 27 insertions, 7 deletions
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);
+}