db/LightSong: pass URI to constructor

This commit is contained in:
Max Kellermann
2018-07-06 16:56:12 +02:00
parent 80cb680fca
commit 45139f94bb
5 changed files with 20 additions and 19 deletions

View File

@@ -48,18 +48,24 @@
static const char *const rootid = "0";
class UpnpSong : public LightSong {
std::string uri2, real_uri2;
class UpnpSongData {
protected:
std::string uri;
Tag tag;
Tag tag2;
template<typename U, typename T>
UpnpSongData(U &&_uri, T &&_tag) noexcept
:uri(std::forward<U>(_uri)), tag(std::forward<T>(_tag)) {}
};
class UpnpSong : UpnpSongData, public LightSong {
std::string real_uri2;
public:
UpnpSong(UPnPDirObject &&object, std::string &&_uri)
:LightSong(tag2),
uri2(std::move(_uri)),
real_uri2(std::move(object.url)),
tag2(std::move(object.tag)) {
uri = uri2.c_str();
:UpnpSongData(std::move(_uri), std::move(object.tag)),
LightSong(UpnpSongData::uri.c_str(), UpnpSongData::tag),
real_uri2(std::move(object.url)) {
real_uri = real_uri2.c_str();
}
};
@@ -318,8 +324,7 @@ visitSong(const UPnPDirObject &meta, const char *path,
if (!visit_song)
return;
LightSong song(meta.tag);
song.uri = path;
LightSong song(path, meta.tag);
song.real_uri = meta.url.c_str();
if (selection.Match(song))