You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			40 lines
		
	
	
		
			970 B
		
	
	
	
		
			C++
		
	
			
		
		
	
	
			40 lines
		
	
	
		
			970 B
		
	
	
	
		
			C++
		
	
// 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();
 | 
						|
}
 |