X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-pair.c;h=208ce9a6da6036ce2ad7af40d80e67db3350ade4;hp=4d5adca3fea5b8c9baad4b08ebdeae39ed2dd5ee;hb=HEAD;hpb=259b2c3a417dba1c9170c5353d1740e5c29bf246 diff --git a/src/modest-pair.c b/src/modest-pair.c index 4d5adca..208ce9a 100644 --- a/src/modest-pair.c +++ b/src/modest-pair.c @@ -28,24 +28,26 @@ */ #include "modest-pair.h" +#include /* For strcmp() */ +#include ModestPair* modest_pair_new (gpointer first, gpointer second, gboolean own) { ModestPair *pair; - pair = g_new (ModestPair, 1); + pair = g_slice_new (ModestPair); - pair->first = first; + pair->first = first; pair->second = second; - pair->own = own; + pair->own = own; return pair; } void -modest_pair_destroy (ModestPair *pair) +modest_pair_free (ModestPair *pair) { if (!pair) return; @@ -54,20 +56,38 @@ modest_pair_destroy (ModestPair *pair) g_free (pair->first); g_free (pair->second); } - g_free (pair); + + g_slice_free (ModestPair, pair); } - -GSList* -modest_pair_gslist_destroy (GSList *pairs) +void +modest_pair_list_free (ModestPairList *pairs) { - GSList *cursor = pairs; + ModestPairList *cursor = pairs; while (cursor) { - modest_pair_destroy ((ModestPair*)cursor->data); + modest_pair_free ((ModestPair*)cursor->data); cursor = cursor->next; } g_slist_free (pairs); - return NULL; +} + +static gint on_pair_compare_as_string(gconstpointer a, gconstpointer b) +{ + const ModestPair* pair_a = (const ModestPair*)a; + const gchar* target = (const gchar*)b; + + return strcmp ((const gchar*)pair_a->first, target); +} + +ModestPair* modest_pair_list_find_by_first_as_string (ModestPairList *pairs, + const gchar* first) +{ + GSList *matching = g_slist_find_custom (pairs, (gconstpointer)first, + on_pair_compare_as_string); + if (matching) + return (ModestPair*)matching->data; + else + return NULL; }