]> spindle.queued.net Git - midori/commitdiff
Implement katze_array_find_uri for finding duplicates
authorChristian Dywan <christian@twotoasts.de>
Fri, 2 Oct 2009 19:27:31 +0000 (21:27 +0200)
committerChristian Dywan <christian@twotoasts.de>
Fri, 2 Oct 2009 19:27:31 +0000 (21:27 +0200)
katze/katze-array.c
katze/katze-array.h

index 5df9291f40da4db89f6c6a9396197de6f5e18457..93a3f5697813fc907517b9d725b77f3db384fd48 100644 (file)
@@ -375,13 +375,56 @@ katze_array_find_token (KatzeArray*  array,
     i = 0;
     while ((item = g_list_nth_data (array->items, i++)))
     {
-        const gchar* found_token = katze_item_get_token ((KatzeItem*)item);
+        const gchar* found_token;
+
+        if (!KATZE_IS_ITEM (item))
+            continue;
+        found_token = ((KatzeItem*)item)->token;
         if (!g_strcmp0 (found_token, token))
             return item;
     }
     return NULL;
 }
 
+/**
+ * katze_array_find_uri:
+ * @array: a #KatzeArray
+ * @uri: an URI
+ *
+ * Looks up an item in the array which has the specified URI.
+ *
+ * This function will silently fail if the type of the list
+ * is not based on #GObject and only #KatzeItem children
+ * are checked for their token, any other objects are skipped.
+ *
+ * Return value: an item, or %NULL
+ *
+ * Since: 0.2.0
+ **/
+gpointer
+katze_array_find_uri (KatzeArray*  array,
+                      const gchar* uri)
+{
+    guint i;
+    gpointer item;
+
+    if (!katze_array_is_a (array, G_TYPE_OBJECT))
+        return NULL;
+
+    i = 0;
+    while ((item = g_list_nth_data (array->items, i++)))
+    {
+        const gchar* found_uri;
+
+        if (!KATZE_IS_ITEM (item))
+            continue;
+        found_uri = ((KatzeItem*)item)->uri;
+        if (!g_strcmp0 (found_uri, uri))
+            return item;
+    }
+    return NULL;
+}
+
 /**
  * katze_array_get_length:
  * @array: a #KatzeArray
index 89bfea9c6f10a62b29f5517afab22fe8da2eaa6d..af3370d5425da0fb5b22328caeba528d88d79ffa 100644 (file)
@@ -65,6 +65,10 @@ gpointer
 katze_array_find_token             (KatzeArray*   array,
                                     const gchar*  token);
 
+gpointer
+katze_array_find_uri               (KatzeArray*   array,
+                                    const gchar*  uri);
+
 guint
 katze_array_get_length             (KatzeArray*   array);