diff options
author | Max Kellermann <max@duempel.org> | 2013-12-03 12:08:54 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-12-03 12:09:21 +0100 |
commit | a5574f9189f67e673463cde3d4aa629e638cf298 (patch) | |
tree | 96cc5034729fbc05537feba411ce621b5e55b4c8 | |
parent | ba61a928971f248620a71663ab8d5a42dc31cc90 (diff) | |
download | mpd-a5574f9189f67e673463cde3d4aa629e638cf298.tar.gz mpd-a5574f9189f67e673463cde3d4aa629e638cf298.tar.xz mpd-a5574f9189f67e673463cde3d4aa629e638cf298.zip |
TagBuilder: implement the assignment operator
-rw-r--r-- | src/tag/TagBuilder.cxx | 17 | ||||
-rw-r--r-- | src/tag/TagBuilder.hxx | 3 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/tag/TagBuilder.cxx b/src/tag/TagBuilder.cxx index 6ba8c12db..b114e882b 100644 --- a/src/tag/TagBuilder.cxx +++ b/src/tag/TagBuilder.cxx @@ -54,6 +54,23 @@ TagBuilder::TagBuilder(Tag &&other) other.items = nullptr; } +TagBuilder & +TagBuilder::operator=(const TagBuilder &other) +{ + /* copy all attributes */ + time = other.time; + has_playlist = other.has_playlist; + items = other.items; + + /* increment the tag pool refcounters */ + tag_pool_lock.lock(); + for (auto i : items) + tag_pool_dup_item(i); + tag_pool_lock.unlock(); + + return *this; +} + void TagBuilder::Clear() { diff --git a/src/tag/TagBuilder.hxx b/src/tag/TagBuilder.hxx index 52ccf466c..f21b818bb 100644 --- a/src/tag/TagBuilder.hxx +++ b/src/tag/TagBuilder.hxx @@ -63,11 +63,12 @@ public: } TagBuilder(const TagBuilder &other) = delete; - TagBuilder &operator=(const TagBuilder &other) = delete; TagBuilder(const Tag &other); TagBuilder(Tag &&other); + TagBuilder &operator=(const TagBuilder &other); + /** * Returns true if the tag contains no items. This ignores the "time" * attribute. |