aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist/M3uPlaylistPlugin.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-09-05 09:37:54 +0200
committerMax Kellermann <max@duempel.org>2013-09-05 09:40:55 +0200
commit8929f88e6d78d538d943e80b66fcf21706e53974 (patch)
tree01232fd55f40dfa1cded59cb28a79b257ebb19e4 /src/playlist/M3uPlaylistPlugin.cxx
parent5348808bf594de927cc64eebae9118d6971343b1 (diff)
downloadmpd-8929f88e6d78d538d943e80b66fcf21706e53974.tar.gz
mpd-8929f88e6d78d538d943e80b66fcf21706e53974.tar.xz
mpd-8929f88e6d78d538d943e80b66fcf21706e53974.zip
PlaylistPlugin: add interface SongEnumerator
Replaces struct playlist_provider.
Diffstat (limited to 'src/playlist/M3uPlaylistPlugin.cxx')
-rw-r--r--src/playlist/M3uPlaylistPlugin.cxx32
1 files changed, 10 insertions, 22 deletions
diff --git a/src/playlist/M3uPlaylistPlugin.cxx b/src/playlist/M3uPlaylistPlugin.cxx
index d9f1e4737..8854be8d7 100644
--- a/src/playlist/M3uPlaylistPlugin.cxx
+++ b/src/playlist/M3uPlaylistPlugin.cxx
@@ -20,47 +20,37 @@
#include "config.h"
#include "M3uPlaylistPlugin.hxx"
#include "PlaylistPlugin.hxx"
+#include "SongEnumerator.hxx"
#include "Song.hxx"
#include "TextInputStream.hxx"
#include <glib.h>
-struct M3uPlaylist {
- struct playlist_provider base;
-
+class M3uPlaylist final : public SongEnumerator {
TextInputStream tis;
+public:
M3uPlaylist(input_stream *is)
:tis(is) {
- playlist_provider_init(&base, &m3u_playlist_plugin);
}
+
+ virtual Song *NextSong() override;
};
-static struct playlist_provider *
+static SongEnumerator *
m3u_open_stream(struct input_stream *is)
{
- M3uPlaylist *playlist = new M3uPlaylist(is);
-
- return &playlist->base;
-}
-
-static void
-m3u_close(struct playlist_provider *_playlist)
-{
- M3uPlaylist *playlist = (M3uPlaylist *)_playlist;
-
- delete playlist;
+ return new M3uPlaylist(is);
}
-static Song *
-m3u_read(struct playlist_provider *_playlist)
+Song *
+M3uPlaylist::NextSong()
{
- M3uPlaylist *playlist = (M3uPlaylist *)_playlist;
std::string line;
const char *line_s;
do {
- if (!playlist->tis.ReadLine(line))
+ if (!tis.ReadLine(line))
return NULL;
line_s = line.c_str();
@@ -89,8 +79,6 @@ const struct playlist_plugin m3u_playlist_plugin = {
nullptr,
nullptr,
m3u_open_stream,
- m3u_close,
- m3u_read,
nullptr,
m3u_suffixes,