diff options
author | Max Kellermann <max@duempel.org> | 2013-01-09 08:12:44 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-01-09 08:12:44 +0100 |
commit | 2564f763d7c206f36d6c10c16b78590e4a47714d (patch) | |
tree | 39786632609607cce887b4fa5d55ce73dfd9e32d /src/ClientList.cxx | |
parent | 377a2b9e077d19501b89f4347afa78baa6c32f5f (diff) | |
download | mpd-2564f763d7c206f36d6c10c16b78590e4a47714d.tar.gz mpd-2564f763d7c206f36d6c10c16b78590e4a47714d.tar.xz mpd-2564f763d7c206f36d6c10c16b78590e4a47714d.zip |
ClientList: don't use GLib
Use std::list instead of GList.
Diffstat (limited to '')
-rw-r--r-- | src/ClientList.cxx | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/ClientList.cxx b/src/ClientList.cxx index ffefc7c05..b45be34c3 100644 --- a/src/ClientList.cxx +++ b/src/ClientList.cxx @@ -21,9 +21,12 @@ #include "ClientList.hxx" #include "ClientInternal.hxx" +#include <list> +#include <algorithm> + #include <assert.h> -static GList *clients; +static std::list<Client *> clients; static unsigned num_clients; bool @@ -41,30 +44,33 @@ client_list_is_full(void) Client * client_list_get_first(void) { - assert(clients != NULL); + assert(!clients.empty()); - return (Client *)clients->data; + return clients.front(); } void client_list_add(Client *client) { - clients = g_list_prepend(clients, client); + clients.push_front(client); ++num_clients; } void -client_list_foreach(GFunc func, gpointer user_data) +client_list_foreach(void (*callback)(Client *client, void *ctx), void *ctx) { - g_list_foreach(clients, func, user_data); + for (Client *client : clients) + callback(client, ctx); } void client_list_remove(Client *client) { assert(num_clients > 0); - assert(clients != NULL); + assert(!clients.empty()); - clients = g_list_remove(clients, client); + auto i = std::find(clients.begin(), clients.end(), client); + assert(i != clients.end()); + clients.erase(i); --num_clients; } |