From bc23a6bb05705d5551117528dfcbfcfedfee4c90 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 8 Jan 2014 19:42:04 +0100 Subject: tag/TagBuilder: overload Commit() returning a Tag object --- src/decoder/FlacCommon.cxx | 4 ++-- src/decoder/FlacMetadata.cxx | 8 ++++---- src/decoder/FlacMetadata.hxx | 5 ++--- src/decoder/OpusDecoderPlugin.cxx | 3 +-- src/input/CurlInputPlugin.cxx | 2 +- src/tag/TagBuilder.cxx | 8 ++++++++ src/tag/TagBuilder.hxx | 6 ++++++ 7 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/decoder/FlacCommon.cxx b/src/decoder/FlacCommon.cxx index e355f285a..b0921056a 100644 --- a/src/decoder/FlacCommon.cxx +++ b/src/decoder/FlacCommon.cxx @@ -103,8 +103,8 @@ void flac_metadata_common_cb(const FLAC__StreamMetadata * block, decoder_mixramp(data->decoder, flac_parse_mixramp(block)); - flac_vorbis_comments_to_tag(data->tag, - &block->data.vorbis_comment); + data->tag = flac_vorbis_comments_to_tag(&block->data.vorbis_comment); + break; default: break; diff --git a/src/decoder/FlacMetadata.cxx b/src/decoder/FlacMetadata.cxx index f5aef7309..96dbf2db0 100644 --- a/src/decoder/FlacMetadata.cxx +++ b/src/decoder/FlacMetadata.cxx @@ -24,6 +24,7 @@ #include "tag/TagHandler.hxx" #include "tag/TagTable.hxx" #include "tag/TagBuilder.hxx" +#include "tag/Tag.hxx" #include "ReplayGainInfo.hxx" #include "util/ASCII.hxx" #include "util/SplitString.hxx" @@ -199,13 +200,12 @@ flac_scan_metadata(const FLAC__StreamMetadata *block, } } -void -flac_vorbis_comments_to_tag(Tag &tag, - const FLAC__StreamMetadata_VorbisComment *comment) +Tag +flac_vorbis_comments_to_tag(const FLAC__StreamMetadata_VorbisComment *comment) { TagBuilder tag_builder; flac_scan_comments(comment, &add_tag_handler, &tag_builder); - tag_builder.Commit(tag); + return tag_builder.Commit(); } void diff --git a/src/decoder/FlacMetadata.hxx b/src/decoder/FlacMetadata.hxx index 137101a65..33ef17e72 100644 --- a/src/decoder/FlacMetadata.hxx +++ b/src/decoder/FlacMetadata.hxx @@ -130,9 +130,8 @@ flac_parse_replay_gain(ReplayGainInfo &rgi, MixRampInfo flac_parse_mixramp(const FLAC__StreamMetadata *block); -void -flac_vorbis_comments_to_tag(Tag &tag, - const FLAC__StreamMetadata_VorbisComment *comment); +Tag +flac_vorbis_comments_to_tag(const FLAC__StreamMetadata_VorbisComment *comment); void flac_scan_metadata(const FLAC__StreamMetadata *block, diff --git a/src/decoder/OpusDecoderPlugin.cxx b/src/decoder/OpusDecoderPlugin.cxx index 201d61d96..04f549f4f 100644 --- a/src/decoder/OpusDecoderPlugin.cxx +++ b/src/decoder/OpusDecoderPlugin.cxx @@ -292,8 +292,7 @@ MPDOpusDecoder::HandleTags(const ogg_packet &packet) !tag_builder.IsEmpty()) { decoder_replay_gain(decoder, &rgi); - Tag tag; - tag_builder.Commit(tag); + Tag tag = tag_builder.Commit(); cmd = decoder_tag(decoder, input_stream, std::move(tag)); } else cmd = decoder_get_command(decoder); diff --git a/src/input/CurlInputPlugin.cxx b/src/input/CurlInputPlugin.cxx index 0318d5a5f..b74dc12a9 100644 --- a/src/input/CurlInputPlugin.cxx +++ b/src/input/CurlInputPlugin.cxx @@ -782,7 +782,7 @@ copy_icy_tag(struct input_curl *c) if (!c->meta_name.empty() && !tag->HasType(TAG_NAME)) { TagBuilder tag_builder(std::move(*tag)); tag_builder.AddItem(TAG_NAME, c->meta_name.c_str()); - tag_builder.Commit(*tag); + *tag = tag_builder.Commit(); } c->tag = tag; diff --git a/src/tag/TagBuilder.cxx b/src/tag/TagBuilder.cxx index 190307986..462f5c49a 100644 --- a/src/tag/TagBuilder.cxx +++ b/src/tag/TagBuilder.cxx @@ -133,6 +133,14 @@ TagBuilder::Commit(Tag &tag) Clear(); } +Tag +TagBuilder::Commit() +{ + Tag tag; + Commit(tag); + return tag; +} + Tag * TagBuilder::CommitNew() { diff --git a/src/tag/TagBuilder.hxx b/src/tag/TagBuilder.hxx index 302873ee4..984261ded 100644 --- a/src/tag/TagBuilder.hxx +++ b/src/tag/TagBuilder.hxx @@ -96,6 +96,12 @@ public: */ void Commit(Tag &tag); + /** + * Create a new #Tag instance from data in this object. This + * object is empty afterwards. + */ + Tag Commit(); + /** * Create a new #Tag instance from data in this object. The * returned object is owned by the caller. This object is -- cgit v1.2.3