]> spindle.queued.net Git - midori/commitdiff
Optimize KatzeArray a little
authorChristian Dywan <christian@twotoasts.de>
Wed, 24 Dec 2008 03:44:02 +0000 (04:44 +0100)
committerChristian Dywan <christian@twotoasts.de>
Wed, 24 Dec 2008 03:44:02 +0000 (04:44 +0100)
katze/katze-array.c

index 66dfcc0c9b2669787604dff59fa1ae36793db342..32e7b892404703c5f26cc832fee0ad0714df2e3b 100644 (file)
@@ -47,8 +47,11 @@ _katze_array_add_item (KatzeList* list,
 {
     if (katze_array_is_a ((KatzeArray*)list, G_TYPE_OBJECT))
     {
+        GType type = G_OBJECT_TYPE (item);
+
+        g_return_if_fail (katze_array_is_a ((KatzeArray*)list, type));
         g_object_ref (item);
-        if (KATZE_IS_ITEM (item))
+        if (g_type_is_a (type, KATZE_TYPE_ITEM))
             katze_item_set_parent (item, list);
     }
     KATZE_LIST_CLASS (katze_array_parent_class)->add_item (list, item);
@@ -111,14 +114,15 @@ katze_array_finalize (GObject* object)
  * Creates a new #KatzeArray for @type items.
  *
  * You may only add items of the given type or inherited
- * from it to this array.
- *
+ * from it to this array *if* @type is an #GObject type.
  * The array will keep a reference on each object until
  * it is removed from the array.
  *
- * Note: While you *can* (currently) use #KatzeList accessors
- * to circumvent type safety, you are *encouraged* to use
- * only #KatzeArray accessors, or behaviour is undefined.
+ * If @type is *not* a #GObject type, #KatzeArray behaves
+ * pretty much like #KatzeList.
+ *
+ * Note: Since 0.1.2 you may use #KatzeList accessors to
+ * work with #KatzeArray if you want to.
  *
  * Return value: a new #KatzeArray
  **/
@@ -164,11 +168,9 @@ void
 katze_array_add_item (KatzeArray* array,
                       gpointer    item)
 {
-    g_return_if_fail (KATZE_IS_ARRAY (array));
-    if (katze_array_is_a (array, G_TYPE_OBJECT))
-        g_return_if_fail (katze_array_is_a (array, G_OBJECT_TYPE (item)));
+    /* g_return_if_fail (KATZE_IS_ARRAY (array)); */
 
-    g_signal_emit_by_name (array, "add-item", item);
+    katze_list_add_item (KATZE_LIST (array), item);
 }
 
 /**
@@ -184,11 +186,9 @@ void
 katze_array_remove_item (KatzeArray* array,
                          gpointer    item)
 {
-    g_return_if_fail (KATZE_IS_ARRAY (array));
-    if (katze_array_is_a (array, G_TYPE_OBJECT))
-        g_return_if_fail (katze_array_is_a (array, G_OBJECT_TYPE (item)));
+    /* g_return_if_fail (KATZE_IS_ARRAY (array)); */
 
-    g_signal_emit_by_name (array, "remove-item", item);
+    katze_list_remove_item (KATZE_LIST (array), item);
 }
 
 /**
@@ -204,7 +204,7 @@ gpointer
 katze_array_get_nth_item (KatzeArray* array,
                           guint       n)
 {
-    g_return_val_if_fail (KATZE_IS_ARRAY (array), NULL);
+    /* g_return_val_if_fail (KATZE_IS_ARRAY (array), NULL); */
 
     return katze_list_get_nth_item (KATZE_LIST (array), n);
 }
@@ -220,7 +220,7 @@ katze_array_get_nth_item (KatzeArray* array,
 gboolean
 katze_array_is_empty (KatzeArray* array)
 {
-    g_return_val_if_fail (KATZE_IS_ARRAY (array), TRUE);
+    /* g_return_val_if_fail (KATZE_IS_ARRAY (array), TRUE); */
 
     return katze_list_is_empty (KATZE_LIST (array));
 }
@@ -238,9 +238,7 @@ gint
 katze_array_get_item_index (KatzeArray* array,
                             gpointer    item)
 {
-    g_return_val_if_fail (KATZE_IS_ARRAY (array), -1);
-    if (katze_array_is_a (array, G_TYPE_OBJECT))
-        g_return_val_if_fail (katze_array_is_a (array, G_OBJECT_TYPE (item)), -1);
+    /* g_return_val_if_fail (KATZE_IS_ARRAY (array), -1); */
 
     return katze_list_get_item_index (KATZE_LIST (array), item);
 }
@@ -297,7 +295,7 @@ katze_array_find_token (KatzeArray*  array,
 guint
 katze_array_get_length (KatzeArray* array)
 {
-    g_return_val_if_fail (KATZE_IS_ARRAY (array), 0);
+    /* g_return_val_if_fail (KATZE_IS_ARRAY (array), 0); */
 
     return katze_list_get_length (KATZE_LIST (array));
 }
@@ -311,7 +309,7 @@ katze_array_get_length (KatzeArray* array)
 void
 katze_array_clear (KatzeArray* array)
 {
-    g_return_if_fail (KATZE_IS_ARRAY (array));
+    /* g_return_if_fail (KATZE_IS_ARRAY (array)); */
 
     katze_list_clear (KATZE_LIST (array));
 }