playlist/lastfm: convert to class

This commit is contained in:
Max Kellermann 2013-08-05 21:29:25 +02:00
parent 6d0ada7f45
commit 409fc837ab
1 changed files with 15 additions and 11 deletions

View File

@ -30,12 +30,22 @@
#include <assert.h>
#include <string.h>
struct lastfm_playlist {
struct LastfmPlaylist {
struct playlist_provider base;
struct input_stream *is;
struct playlist_provider *xspf;
LastfmPlaylist(input_stream *_is, playlist_provider *_xspf)
:is(_is), xspf(_xspf) {
playlist_provider_init(&base, &lastfm_playlist_plugin);
}
~LastfmPlaylist() {
playlist_plugin_close(xspf);
input_stream_close(is);
}
};
static struct {
@ -249,28 +259,22 @@ lastfm_open_uri(const char *uri, Mutex &mutex, Cond &cond)
/* create the playlist object */
const auto playlist = g_new(struct lastfm_playlist, 1);
playlist_provider_init(&playlist->base, &lastfm_playlist_plugin);
playlist->is = is;
playlist->xspf = xspf;
const auto playlist = new LastfmPlaylist(is, xspf);
return &playlist->base;
}
static void
lastfm_close(struct playlist_provider *_playlist)
{
struct lastfm_playlist *playlist = (struct lastfm_playlist *)_playlist;
LastfmPlaylist *playlist = (LastfmPlaylist *)_playlist;
playlist_plugin_close(playlist->xspf);
input_stream_close(playlist->is);
g_free(playlist);
delete playlist;
}
static Song *
lastfm_read(struct playlist_provider *_playlist)
{
struct lastfm_playlist *playlist = (struct lastfm_playlist *)_playlist;
LastfmPlaylist *playlist = (LastfmPlaylist *)_playlist;
return playlist_plugin_read(playlist->xspf);
}