Optimize KatzeArray a little

This commit is contained in:
Christian Dywan 2008-12-24 04:44:02 +01:00
parent 7c3cb9a1bd
commit 770b6d9e11

View file

@ -47,8 +47,11 @@ _katze_array_add_item (KatzeList* list,
{ {
if (katze_array_is_a ((KatzeArray*)list, G_TYPE_OBJECT)) 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); 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_item_set_parent (item, list);
} }
KATZE_LIST_CLASS (katze_array_parent_class)->add_item (list, item); 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. * Creates a new #KatzeArray for @type items.
* *
* You may only add items of the given type or inherited * 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 * The array will keep a reference on each object until
* it is removed from the array. * it is removed from the array.
* *
* Note: While you *can* (currently) use #KatzeList accessors * If @type is *not* a #GObject type, #KatzeArray behaves
* to circumvent type safety, you are *encouraged* to use * pretty much like #KatzeList.
* only #KatzeArray accessors, or behaviour is undefined. *
* Note: Since 0.1.2 you may use #KatzeList accessors to
* work with #KatzeArray if you want to.
* *
* Return value: a new #KatzeArray * Return value: a new #KatzeArray
**/ **/
@ -164,11 +168,9 @@ void
katze_array_add_item (KatzeArray* array, katze_array_add_item (KatzeArray* array,
gpointer item) gpointer item)
{ {
g_return_if_fail (KATZE_IS_ARRAY (array)); /* 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_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, katze_array_remove_item (KatzeArray* array,
gpointer item) gpointer item)
{ {
g_return_if_fail (KATZE_IS_ARRAY (array)); /* 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_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, katze_array_get_nth_item (KatzeArray* array,
guint n) 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); return katze_list_get_nth_item (KATZE_LIST (array), n);
} }
@ -220,7 +220,7 @@ katze_array_get_nth_item (KatzeArray* array,
gboolean gboolean
katze_array_is_empty (KatzeArray* array) 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)); return katze_list_is_empty (KATZE_LIST (array));
} }
@ -238,9 +238,7 @@ gint
katze_array_get_item_index (KatzeArray* array, katze_array_get_item_index (KatzeArray* array,
gpointer item) gpointer item)
{ {
g_return_val_if_fail (KATZE_IS_ARRAY (array), -1); /* 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);
return katze_list_get_item_index (KATZE_LIST (array), item); return katze_list_get_item_index (KATZE_LIST (array), item);
} }
@ -297,7 +295,7 @@ katze_array_find_token (KatzeArray* array,
guint guint
katze_array_get_length (KatzeArray* array) 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)); return katze_list_get_length (KATZE_LIST (array));
} }
@ -311,7 +309,7 @@ katze_array_get_length (KatzeArray* array)
void void
katze_array_clear (KatzeArray* array) 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)); katze_list_clear (KATZE_LIST (array));
} }