Code

po: converted Swedish translation to UTF-8
[ncmpc.git] / src / playlist.c
index e2530435e37bd432c1921cda53caebcc672d0ad0..19a1b419cc08f8ac8f08cce603d647c73bae9606 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * (c) 2004 by Kalle Wallin <kaw@linux.se>
  * (c) 2008 Max Kellermann <max@duempel.org>
  *
@@ -21,7 +19,6 @@
 
 #include "playlist.h"
 #include "mpdclient.h"
-#include "ncmpc.h"
 
 #include <string.h>
 
 
 #define MPD_ERROR(c) (c==NULL || c->connection==NULL || c->connection->error)
 
-gint
-mpdclient_playlist_free(mpdclient_playlist_t *playlist)
+void
+playlist_init(struct mpdclient_playlist *playlist)
+{
+       playlist->id = 0;
+       playlist->list = g_ptr_array_sized_new(1024);
+}
+
+void
+playlist_clear(struct mpdclient_playlist *playlist)
 {
        guint i;
 
+       playlist->id = 0;
+
        for (i = 0; i < playlist->list->len; ++i) {
-               struct mpd_song *song = g_array_index(playlist->list, struct mpd_song *, i);
+               struct mpd_song *song = playlist_get(playlist, i);
+
                mpd_freeSong(song);
        }
 
-       g_array_free(playlist->list, TRUE);
+       g_ptr_array_set_size(playlist->list, 0);
+}
+
+gint
+mpdclient_playlist_free(mpdclient_playlist_t *playlist)
+{
+       if (playlist->list != NULL) {
+               playlist_clear(playlist);
+               g_ptr_array_free(playlist->list, TRUE);
+       }
+
        memset(playlist, 0, sizeof(mpdclient_playlist_t));
        return 0;
 }
@@ -50,7 +67,7 @@ playlist_get_song(mpdclient_t *c, gint idx)
        if (idx < 0 || (guint)idx >= c->playlist.list->len)
                return NULL;
 
-       return g_array_index(c->playlist.list, struct mpd_song *, idx);
+       return playlist_get(&c->playlist, idx);
 }
 
 struct mpd_song *
@@ -59,8 +76,7 @@ playlist_lookup_song(mpdclient_t *c, gint id)
        guint i;
 
        for (i = 0; i < c->playlist.list->len; ++i) {
-               struct mpd_song *song = g_array_index(c->playlist.list,
-                                                     struct mpd_song *, i);
+               struct mpd_song *song = playlist_get(&c->playlist, i);
                if (song->id == id)
                        return song;
        }
@@ -74,8 +90,7 @@ playlist_get_index(mpdclient_t *c, struct mpd_song *song)
        guint i;
 
        for (i = 0; i < c->playlist.list->len; ++i) {
-               if (g_array_index(c->playlist.list, struct mpd_song *, i)
-                   == song)
+               if (playlist_get(&c->playlist, i) == song)
                        return (gint)i;
        }
 
@@ -88,8 +103,7 @@ playlist_get_index_from_id(mpdclient_t *c, gint id)
        guint i;
 
        for (i = 0; i < c->playlist.list->len; ++i) {
-               struct mpd_song *song = g_array_index(c->playlist.list,
-                                                     struct mpd_song *, i);
+               struct mpd_song *song = playlist_get(&c->playlist, i);
                if (song->id == id)
                        return (gint)i;
        }
@@ -103,8 +117,7 @@ playlist_get_index_from_file(mpdclient_t *c, gchar *filename)
        guint i;
 
        for (i = 0; i < c->playlist.list->len; ++i) {
-               struct mpd_song *song = g_array_index(c->playlist.list,
-                                                     struct mpd_song *, i);
+               struct mpd_song *song = playlist_get(&c->playlist, i);
                if(strcmp(song->file, filename) == 0)
                        return (gint)i;
        }