diff options
author | Max Kellermann <max@duempel.org> | 2013-09-05 09:37:54 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-09-05 09:40:55 +0200 |
commit | 8929f88e6d78d538d943e80b66fcf21706e53974 (patch) | |
tree | 01232fd55f40dfa1cded59cb28a79b257ebb19e4 /src/playlist/M3uPlaylistPlugin.cxx | |
parent | 5348808bf594de927cc64eebae9118d6971343b1 (diff) | |
download | mpd-8929f88e6d78d538d943e80b66fcf21706e53974.tar.gz mpd-8929f88e6d78d538d943e80b66fcf21706e53974.tar.xz mpd-8929f88e6d78d538d943e80b66fcf21706e53974.zip |
PlaylistPlugin: add interface SongEnumerator
Replaces struct playlist_provider.
Diffstat (limited to '')
-rw-r--r-- | src/playlist/M3uPlaylistPlugin.cxx | 32 |
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, |