mirror of
https://gitlab.freedesktop.org/upower/upower.git
synced 2025-12-20 04:20:04 +01:00
Add two remove functions to the generic object list
This commit is contained in:
parent
4fb995f784
commit
73d5bcb4c0
2 changed files with 61 additions and 2 deletions
|
|
@ -190,6 +190,61 @@ egg_obj_list_add (EggObjList *list, const gpointer obj)
|
|||
list->len = list->priv->array->len;
|
||||
}
|
||||
|
||||
/**
|
||||
* egg_obj_list_remove:
|
||||
* @list: a valid #EggObjList instance
|
||||
* @obj: a valid #gpointer object
|
||||
*
|
||||
* Return value: TRUE is we removed something
|
||||
*
|
||||
* Removes an item from a list
|
||||
**/
|
||||
gboolean
|
||||
egg_obj_list_remove (EggObjList *list, const gpointer obj)
|
||||
{
|
||||
gboolean ret;
|
||||
gpointer obj_new;
|
||||
|
||||
g_return_val_if_fail (EGG_IS_OBJ_LIST (list), FALSE);
|
||||
g_return_val_if_fail (obj != NULL, FALSE);
|
||||
g_return_val_if_fail (list->priv->func_free != NULL, FALSE);
|
||||
|
||||
/* the pointers point to the same thing */
|
||||
obj_new = (gpointer) obj;
|
||||
ret = g_ptr_array_remove (list->priv->array, obj_new);
|
||||
if (!ret)
|
||||
return FALSE;
|
||||
list->priv->func_free (obj_new);
|
||||
list->len = list->priv->array->len;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* egg_obj_list_remove_index:
|
||||
* @list: a valid #EggObjList instance
|
||||
* @index: the number to remove
|
||||
*
|
||||
* Return value: TRUE is we removed something
|
||||
*
|
||||
* Removes an item from a list
|
||||
**/
|
||||
gboolean
|
||||
egg_obj_list_remove_index (EggObjList *list, guint index)
|
||||
{
|
||||
gpointer obj;
|
||||
|
||||
g_return_val_if_fail (EGG_IS_OBJ_LIST (list), FALSE);
|
||||
g_return_val_if_fail (list->priv->func_free != NULL, FALSE);
|
||||
|
||||
/* get the object */
|
||||
obj = g_ptr_array_remove_index (list->priv->array, index);
|
||||
if (obj == NULL)
|
||||
return FALSE;
|
||||
list->priv->func_free (obj);
|
||||
list->len = list->priv->array->len;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* egg_obj_list_to_file:
|
||||
* @list: a valid #EggObjList instance
|
||||
|
|
@ -324,7 +379,7 @@ out:
|
|||
* Gets an object from the list
|
||||
**/
|
||||
const gpointer
|
||||
egg_obj_list_index (EggObjList *list, guint index)
|
||||
egg_obj_list_index (const EggObjList *list, guint index)
|
||||
{
|
||||
gpointer obj;
|
||||
|
||||
|
|
|
|||
|
|
@ -74,7 +74,11 @@ gboolean egg_obj_list_from_file (EggObjList *list,
|
|||
const gchar *filename);
|
||||
void egg_obj_list_add (EggObjList *list,
|
||||
const gpointer data);
|
||||
const gpointer egg_obj_list_index (EggObjList *list,
|
||||
gboolean egg_obj_list_remove (EggObjList *list,
|
||||
const gpointer data);
|
||||
gboolean egg_obj_list_remove_index (EggObjList *list,
|
||||
guint index);
|
||||
const gpointer egg_obj_list_index (const EggObjList *list,
|
||||
guint index);
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue