tag/Tag: Merge() returns std::unique_ptr<Tag>
This commit is contained in:
parent
cb3042ffb2
commit
c6a95395b5
@ -450,13 +450,11 @@ DecoderBridge::SubmitData(InputStream *is,
|
|||||||
/* send stream tags */
|
/* send stream tags */
|
||||||
|
|
||||||
if (UpdateStreamTag(is)) {
|
if (UpdateStreamTag(is)) {
|
||||||
if (decoder_tag != nullptr) {
|
if (decoder_tag != nullptr)
|
||||||
/* merge with tag from decoder plugin */
|
/* merge with tag from decoder plugin */
|
||||||
Tag *tag = Tag::Merge(*decoder_tag,
|
cmd = DoSendTag(*Tag::Merge(*decoder_tag,
|
||||||
*stream_tag);
|
*stream_tag));
|
||||||
cmd = DoSendTag(*tag);
|
else
|
||||||
delete tag;
|
|
||||||
} else
|
|
||||||
/* send only the stream tag */
|
/* send only the stream tag */
|
||||||
cmd = DoSendTag(*stream_tag);
|
cmd = DoSendTag(*stream_tag);
|
||||||
|
|
||||||
@ -559,14 +557,10 @@ DecoderBridge::SubmitTag(InputStream *is, Tag &&tag)
|
|||||||
|
|
||||||
/* send tag to music pipe */
|
/* send tag to music pipe */
|
||||||
|
|
||||||
if (stream_tag != nullptr) {
|
if (stream_tag != nullptr)
|
||||||
/* merge with tag from input stream */
|
/* merge with tag from input stream */
|
||||||
Tag *merged;
|
cmd = DoSendTag(*Tag::Merge(*stream_tag, *decoder_tag));
|
||||||
|
else
|
||||||
merged = Tag::Merge(*stream_tag, *decoder_tag);
|
|
||||||
cmd = DoSendTag(*merged);
|
|
||||||
delete merged;
|
|
||||||
} else
|
|
||||||
/* send only the decoder tag */
|
/* send only the decoder tag */
|
||||||
cmd = DoSendTag(*decoder_tag);
|
cmd = DoSendTag(*decoder_tag);
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ IcyInputStream::ReadTag()
|
|||||||
if (icy_tag == nullptr)
|
if (icy_tag == nullptr)
|
||||||
return new Tag(*input_tag);
|
return new Tag(*input_tag);
|
||||||
|
|
||||||
return Tag::Merge(*input_tag, *icy_tag);
|
return Tag::Merge(*input_tag, *icy_tag).release();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
|
@ -55,12 +55,12 @@ Tag::Tag(const Tag &other)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Tag *
|
std::unique_ptr<Tag>
|
||||||
Tag::Merge(const Tag &base, const Tag &add)
|
Tag::Merge(const Tag &base, const Tag &add) noexcept
|
||||||
{
|
{
|
||||||
TagBuilder builder(add);
|
TagBuilder builder(add);
|
||||||
builder.Complement(base);
|
builder.Complement(base);
|
||||||
return builder.CommitNew().release();
|
return builder.CommitNew();
|
||||||
}
|
}
|
||||||
|
|
||||||
Tag *
|
Tag *
|
||||||
@ -72,7 +72,7 @@ Tag::MergeReplace(Tag *base, Tag *add)
|
|||||||
if (base == nullptr)
|
if (base == nullptr)
|
||||||
return add;
|
return add;
|
||||||
|
|
||||||
Tag *tag = Merge(*base, *add);
|
Tag *tag = Merge(*base, *add).release();
|
||||||
delete base;
|
delete base;
|
||||||
delete add;
|
delete add;
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "Compiler.h"
|
#include "Compiler.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The meta information about a song file. It is a MPD specific
|
* The meta information about a song file. It is a MPD specific
|
||||||
@ -116,8 +117,8 @@ struct Tag {
|
|||||||
*
|
*
|
||||||
* @return a newly allocated tag
|
* @return a newly allocated tag
|
||||||
*/
|
*/
|
||||||
gcc_malloc gcc_returns_nonnull
|
static std::unique_ptr<Tag> Merge(const Tag &base,
|
||||||
static Tag *Merge(const Tag &base, const Tag &add);
|
const Tag &add) noexcept;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Merges the data from two tags. Any of the two may be nullptr. Both
|
* Merges the data from two tags. Any of the two may be nullptr. Both
|
||||||
|
Loading…
Reference in New Issue
Block a user