From 2564f763d7c206f36d6c10c16b78590e4a47714d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 9 Jan 2013 08:12:44 +0100 Subject: ClientList: don't use GLib Use std::list instead of GList. --- src/ClientList.cxx | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/ClientList.cxx') 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 +#include + #include -static GList *clients; +static std::list 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; } -- cgit v1.2.3