*/
#include "modest-pair.h"
+#include <string.h> /* For strcmp() */
+#include <stdio.h>
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;
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;
}