aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Song.cxx8
-rw-r--r--src/Song.hxx2
2 files changed, 10 insertions, 0 deletions
diff --git a/src/Song.cxx b/src/Song.cxx
index 7a11a0611..86a5b4672 100644
--- a/src/Song.cxx
+++ b/src/Song.cxx
@@ -109,6 +109,14 @@ Song::Free()
g_free(this);
}
+void
+Song::ReplaceTag(Tag &&_tag)
+{
+ if (tag == nullptr)
+ tag = new Tag();
+ *tag = std::move(_tag);
+}
+
gcc_pure
static inline bool
directory_equals(const Directory &a, const Directory &b)
diff --git a/src/Song.hxx b/src/Song.hxx
index bd7465013..b74690e77 100644
--- a/src/Song.hxx
+++ b/src/Song.hxx
@@ -126,6 +126,8 @@ struct Song {
return parent == &detached_root;
}
+ void ReplaceTag(Tag &&tag);
+
bool UpdateFile();
bool UpdateFileInArchive();