Code

main.c: fix compiler warning
[ncmpc.git] / src / playlist.h
index 77983f6ed6ec1b2a0beccd4e52d808e282dde286..5b7aeee33842bff67ce37ffa64fbadb30ada2444 100644 (file)
@@ -1,5 +1,5 @@
 /* ncmpc (Ncurses MPD Client)
- * (c) 2004-2009 The Music Player Daemon Project
+ * (c) 2004-2010 The Music Player Daemon Project
  * Project homepage: http://musicpd.org
  
  * This program is free software; you can redistribute it and/or modify
 #ifndef MPDCLIENT_PLAYLIST_H
 #define MPDCLIENT_PLAYLIST_H
 
-#include "libmpdclient.h"
+#include <mpd/client.h>
 
 #include <assert.h>
 #include <glib.h>
 
-struct mpdclient;
-
-typedef struct mpdclient_playlist {
-       /* playlist id */
-       long long id;
+struct mpdclient_playlist {
+       /* queue version number (obtained from mpd_status) */
+       unsigned version;
 
        /* the list */
        GPtrArray *list;
-} mpdclient_playlist_t;
+};
 
 void
 playlist_init(struct mpdclient_playlist *playlist);
@@ -43,7 +41,8 @@ void
 playlist_clear(struct mpdclient_playlist *playlist);
 
 /* free a playlist */
-gint mpdclient_playlist_free(mpdclient_playlist_t *playlist);
+gint
+mpdclient_playlist_free(struct mpdclient_playlist *playlist);
 
 static inline guint
 playlist_length(const struct mpdclient_playlist *playlist)
@@ -69,25 +68,25 @@ playlist_get(const struct mpdclient_playlist *playlist, guint idx)
 }
 
 static inline void
-playlist_append(struct mpdclient_playlist *playlist, const mpd_Song *song)
+playlist_append(struct mpdclient_playlist *playlist, const struct mpd_song *song)
 {
-       g_ptr_array_add(playlist->list, mpd_songDup(song));
+       g_ptr_array_add(playlist->list, mpd_song_dup(song));
 }
 
 static inline void
 playlist_set(const struct mpdclient_playlist *playlist, guint idx,
-            const mpd_Song *song)
+            const struct mpd_song *song)
 {
        assert(idx < playlist_length(playlist));
 
-       g_ptr_array_index(playlist->list, idx) = mpd_songDup(song);
+       g_ptr_array_index(playlist->list, idx) = mpd_song_dup(song);
 }
 
 static inline void
 playlist_replace(struct mpdclient_playlist *playlist, guint idx,
-                const mpd_Song *song)
+                const struct mpd_song *song)
 {
-       mpd_freeSong(playlist_get(playlist, idx));
+       mpd_song_free(playlist_get(playlist, idx));
        playlist_set(playlist, idx, song);
 }
 
@@ -100,37 +99,47 @@ playlist_remove_reuse(struct mpdclient_playlist *playlist, guint idx)
 static inline void
 playlist_remove(struct mpdclient_playlist *playlist, guint idx)
 {
-       mpd_freeSong(playlist_remove_reuse(playlist, idx));
+       mpd_song_free(playlist_remove_reuse(playlist, idx));
 }
 
-static inline void
-playlist_swap(struct mpdclient_playlist *playlist, guint idx1, guint idx2)
-{
-       mpd_Song *song1 = playlist_get(playlist, idx1);
-       mpd_Song *song2 = playlist_get(playlist, idx2);
-       gint n;
-
-       /* update the songs position field */
-       n = song1->pos;
-       song1->pos = song2->pos;
-       song2->pos = n;
-
-       /* update the array */
-       g_ptr_array_index(playlist->list, idx1) = song2;
-       g_ptr_array_index(playlist->list, idx2) = song1;
-}
+void
+playlist_move(struct mpdclient_playlist *playlist,
+             unsigned dest, unsigned src);
+
+const struct mpd_song *
+playlist_lookup_song(const struct mpdclient_playlist *playlist, unsigned id);
 
-struct mpd_song *playlist_lookup_song(struct mpdclient *c, gint id);
+const struct mpd_song *
+playlist_get_song(const struct mpdclient_playlist *playlist, gint index);
 
-struct mpd_song *playlist_get_song(struct mpdclient *c, gint index);
+gint
+playlist_get_index(const struct mpdclient_playlist *playlist,
+                  const struct mpd_song *song);
 
 gint
-playlist_get_index(const struct mpdclient *c, const struct mpd_song *song);
+playlist_get_index_from_id(const struct mpdclient_playlist *playlist,
+                          unsigned id);
 
 gint
-playlist_get_index_from_id(const struct mpdclient *c, gint id);
+playlist_get_index_from_file(const struct mpdclient_playlist *playlist,
+                            const gchar *filename);
+
+static inline gint
+playlist_get_index_from_same_song(const struct mpdclient_playlist *playlist,
+                                 const struct mpd_song *song)
+{
+       return playlist_get_index_from_file(playlist, mpd_song_get_uri(song));
+}
 
 gint
-playlist_get_index_from_file(const struct mpdclient *c, const gchar *filename);
+playlist_get_id_from_uri(const struct mpdclient_playlist *playlist,
+                        const gchar *uri);
+
+static inline gint
+playlist_get_id_from_same_song(const struct mpdclient_playlist *playlist,
+                              const struct mpd_song *song)
+{
+       return playlist_get_id_from_uri(playlist, mpd_song_get_uri(song));
+}
 
 #endif