// SPDX-License-Identifier: GPL-2.0-or-later // Copyright The Music Player Daemon Project #include "PlaylistUtil.hxx" #include "playlist/PlaylistRegistry.hxx" #include "playlist/SongEnumerator.hxx" #include "song/DetachedSong.hxx" #include "input/MemoryInputStream.hxx" #include "input/Ptr.hxx" #include "thread/Mutex.hxx" #include "io/BufferedOutputStream.hxx" #include "io/StringOutputStream.hxx" #include "util/SpanCast.hxx" #include "SongSave.hxx" std::unique_ptr<SongEnumerator> ParsePlaylist(const char *uri, std::string_view contents) { Mutex mutex; InputStreamPtr input{new MemoryInputStream{uri, mutex, AsBytes(contents)}}; return playlist_list_open_stream(std::move(input), uri); } std::string ToString(SongEnumerator &e) { StringOutputStream sos; WithBufferedOutputStream(sos, [&e](auto &bos){ while (const auto song = e.NextSong()) { bos.Write('\n'); song_save(bos, *song); } bos.Write('\n'); }); return std::move(sos).GetValue(); }