Commit d99bdca0 authored by Max Kellermann's avatar Max Kellermann

playlist/xspf: use class TagBuilder

parent 187069be
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#include "PlaylistPlugin.hxx" #include "PlaylistPlugin.hxx"
#include "MemorySongEnumerator.hxx" #include "MemorySongEnumerator.hxx"
#include "InputStream.hxx" #include "InputStream.hxx"
#include "tag/Tag.hxx" #include "tag/TagBuilder.hxx"
#include "util/Error.hxx" #include "util/Error.hxx"
#include "util/Domain.hxx" #include "util/Domain.hxx"
#include "Log.hxx" #include "Log.hxx"
...@@ -64,6 +64,8 @@ struct XspfParser { ...@@ -64,6 +64,8 @@ struct XspfParser {
*/ */
Song *song; Song *song;
TagBuilder tag_builder;
XspfParser() XspfParser()
:state(ROOT) {} :state(ROOT) {}
}; };
...@@ -147,8 +149,11 @@ xspf_end_element(gcc_unused GMarkupParseContext *context, ...@@ -147,8 +149,11 @@ xspf_end_element(gcc_unused GMarkupParseContext *context,
case XspfParser::TRACK: case XspfParser::TRACK:
if (strcmp(element_name, "track") == 0) { if (strcmp(element_name, "track") == 0) {
if (parser->song != nullptr) if (parser->song != nullptr) {
assert(parser->song->tag == nullptr);
parser->song->tag = parser->tag_builder.Commit();
parser->songs.emplace_front(parser->song); parser->songs.emplace_front(parser->song);
}
parser->state = XspfParser::TRACKLIST; parser->state = XspfParser::TRACKLIST;
} else } else
...@@ -177,11 +182,9 @@ xspf_text(gcc_unused GMarkupParseContext *context, ...@@ -177,11 +182,9 @@ xspf_text(gcc_unused GMarkupParseContext *context,
case XspfParser::TRACK: case XspfParser::TRACK:
if (parser->song != nullptr && if (parser->song != nullptr &&
parser->tag_type != TAG_NUM_OF_ITEM_TYPES) { parser->tag_type != TAG_NUM_OF_ITEM_TYPES)
if (parser->song->tag == nullptr) parser->tag_builder.AddItem(parser->tag_type,
parser->song->tag = new Tag(); text, text_len);
parser->song->tag->AddItem(parser->tag_type, text, text_len);
}
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment