gnome-power-manager r3054 - in trunk: . src



Author: rhughes
Date: Mon Nov  3 17:13:53 2008
New Revision: 3054
URL: http://svn.gnome.org/viewvc/gnome-power-manager?rev=3054&view=rev

Log:
2008-11-03  Richard Hughes  <richard hughsie com>

* src/egg-obj-list.c: (egg_obj_list_set_new),
(egg_obj_list_set_copy), (egg_obj_list_set_free),
(egg_obj_list_set_compare), (egg_obj_list_set_to_string),
(egg_obj_list_set_from_string), (egg_obj_list_clear),
(egg_obj_list_print), (egg_obj_list_to_string), (egg_obj_list_add),
(egg_obj_list_add_list), (egg_obj_list_remove_list),
(egg_obj_list_obj_equal), (egg_obj_list_remove_duplicate),
(egg_obj_list_find_obj), (egg_obj_list_remove),
(egg_obj_list_remove_index), (egg_obj_list_to_file),
(egg_obj_list_from_file), (egg_obj_list_index),
(egg_obj_list_finalize), (egg_obj_list_class_init),
(egg_obj_list_init), (egg_obj_list_new), (egg_obj_list_test):
* src/egg-obj-list.h:
Add some collection object I use in other projects.


Added:
   trunk/src/egg-obj-list.c
   trunk/src/egg-obj-list.h
Modified:
   trunk/ChangeLog

Added: trunk/src/egg-obj-list.c
==============================================================================
--- (empty file)
+++ trunk/src/egg-obj-list.c	Mon Nov  3 17:13:53 2008
@@ -0,0 +1,672 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Richard Hughes <richard hughsie com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <glib/gi18n.h>
+#include <glib.h>
+
+#include "egg-debug.h"
+#include "egg-obj-list.h"
+
+#define EGG_OBJ_LIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), EGG_TYPE_OBJ_LIST, EggObjListPrivate))
+
+struct EggObjListPrivate
+{
+	EggObjListNewFunc	 func_new;
+	EggObjListCopyFunc	 func_copy;
+	EggObjListFreeFunc	 func_free;
+	EggObjListCompareFunc	 func_compare;
+	EggObjListToStringFunc	 func_to_string;
+	EggObjListFromStringFunc func_from_string;
+	GPtrArray		*array;
+};
+
+G_DEFINE_TYPE (EggObjList, egg_obj_list, G_TYPE_OBJECT)
+
+/**
+ * egg_obj_list_set_new:
+ * @list: a valid #EggObjList instance
+ * @func: typedef'd function
+ *
+ * Adds a creation func
+ **/
+void
+egg_obj_list_set_new (EggObjList *list, EggObjListNewFunc func)
+{
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+	list->priv->func_new = func;
+}
+
+/**
+ * egg_obj_list_set_copy:
+ * @list: a valid #EggObjList instance
+ * @func: typedef'd function
+ *
+ * Adds a copy func
+ **/
+void
+egg_obj_list_set_copy (EggObjList *list, EggObjListCopyFunc func)
+{
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+	list->priv->func_copy = func;
+}
+
+/**
+ * egg_obj_list_set_free:
+ * @list: a valid #EggObjList instance
+ * @func: typedef'd function
+ *
+ * Adds a free func
+ **/
+void
+egg_obj_list_set_free (EggObjList *list, EggObjListFreeFunc func)
+{
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+	list->priv->func_free = func;
+}
+
+/**
+ * egg_obj_list_set_compare:
+ * @list: a valid #EggObjList instance
+ * @func: typedef'd function
+ *
+ * Adds a compare func
+ **/
+void
+egg_obj_list_set_compare (EggObjList *list, EggObjListCompareFunc func)
+{
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+	list->priv->func_compare = func;
+}
+
+/**
+ * egg_obj_list_set_to_string:
+ * @list: a valid #EggObjList instance
+ * @func: typedef'd function
+ *
+ * Adds a to string func
+ **/
+void
+egg_obj_list_set_to_string (EggObjList *list, EggObjListToStringFunc func)
+{
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+	list->priv->func_to_string = func;
+}
+
+/**
+ * egg_obj_list_set_from_string:
+ * @list: a valid #EggObjList instance
+ * @func: typedef'd function
+ *
+ * Adds a from string func
+ **/
+void
+egg_obj_list_set_from_string (EggObjList *list, EggObjListFromStringFunc func)
+{
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+	list->priv->func_from_string = func;
+}
+
+/**
+ * egg_obj_list_clear:
+ * @list: a valid #EggObjList instance
+ *
+ * Clears the package list
+ **/
+void
+egg_obj_list_clear (EggObjList *list)
+{
+	guint i;
+	gpointer obj;
+	GPtrArray *array;
+	EggObjListFreeFunc func_free;
+
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+
+	array = list->priv->array;
+	func_free = list->priv->func_free;
+	for (i=0; i<array->len; i++) {
+		obj = g_ptr_array_index (array, i);
+		if (func_free != NULL)
+			func_free (obj);
+		g_ptr_array_remove (array, obj);
+	}
+	list->len = 0;
+}
+
+/**
+ * egg_obj_list_print:
+ * @list: a valid #EggObjList instance
+ *
+ * Prints the package list
+ **/
+void
+egg_obj_list_print (EggObjList *list)
+{
+	guint i;
+	gpointer obj;
+	GPtrArray *array;
+	gchar *text;
+	EggObjListToStringFunc func_to_string;
+
+	g_return_if_fail (list->priv->func_to_string != NULL);
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+
+	array = list->priv->array;
+	func_to_string = list->priv->func_to_string;
+	for (i=0; i<array->len; i++) {
+		obj = g_ptr_array_index (array, i);
+		text = func_to_string (obj);
+		g_print ("(%i)\t%s\n", i, text);
+		g_free (text);
+	}
+}
+
+/**
+ * egg_obj_list_to_string:
+ * @list: a valid #EggObjList instance
+ *
+ * Converts the list to a newline delimited string
+ **/
+gchar *
+egg_obj_list_to_string (EggObjList *list)
+{
+	guint i;
+	gpointer obj;
+	GPtrArray *array;
+	gchar *text;
+	EggObjListToStringFunc func_to_string;
+	GString *string;
+
+	g_return_val_if_fail (list->priv->func_to_string != NULL, NULL);
+	g_return_val_if_fail (EGG_IS_OBJ_LIST (list), NULL);
+
+	array = list->priv->array;
+	func_to_string = list->priv->func_to_string;
+	string = g_string_new ("");
+	for (i=0; i<array->len; i++) {
+		obj = g_ptr_array_index (array, i);
+		text = func_to_string (obj);
+		g_string_append_printf (string, "%s\n", text);
+		g_free (text);
+	}
+	/* remove trailing newline */
+	if (string->len != 0)
+		g_string_set_size (string, string->len-1);
+
+	return g_string_free (string, FALSE);
+}
+
+/**
+ * egg_obj_list_add:
+ * @list: a valid #EggObjList instance
+ * @obj: a valid #gpointer object
+ *
+ * Adds a copy of the object to the list
+ **/
+void
+egg_obj_list_add (EggObjList *list, gconstpointer obj)
+{
+	gpointer obj_new;
+
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+	g_return_if_fail (obj != NULL);
+	g_return_if_fail (list->priv->func_copy != NULL);
+
+	/* TODO: are we already in the list? */
+	obj_new = list->priv->func_copy (obj);
+	g_ptr_array_add (list->priv->array, obj_new);
+	list->len = list->priv->array->len;
+}
+
+/**
+ * egg_obj_list_add_list:
+ *
+ * Makes a deep copy of the list
+ **/
+void
+egg_obj_list_add_list (EggObjList *list, const EggObjList *data)
+{
+	guint i;
+	gconstpointer obj;
+
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+	g_return_if_fail (EGG_IS_OBJ_LIST (data));
+
+	/* add data items to list */
+	for (i=0; i < data->len; i++) {
+		obj = egg_obj_list_index (data, i);
+		egg_obj_list_add (list, obj);
+	}
+}
+
+/**
+ * egg_obj_list_remove_list:
+ *
+ * Makes a deep copy of the list
+ **/
+void
+egg_obj_list_remove_list (EggObjList *list, const EggObjList *data)
+{
+	guint i;
+	gconstpointer obj;
+
+	g_return_if_fail (EGG_IS_OBJ_LIST (list));
+	g_return_if_fail (EGG_IS_OBJ_LIST (data));
+
+	/* remove data items from list */
+	for (i=0; i < data->len; i++) {
+		obj = egg_obj_list_index (data, i);
+		egg_obj_list_remove (list, obj);
+	}
+}
+
+/**
+ * egg_obj_list_find_obj:
+ * @list: a valid #EggObjList instance
+ * @obj: a valid #gpointer object
+ *
+ * Return value: the object
+ *
+ * Removes an item from a list
+ **/
+static gboolean
+egg_obj_list_obj_equal (EggObjList *list, gconstpointer obj1, gconstpointer obj2)
+{
+	EggObjListCompareFunc func_compare;
+
+	/* two less pointer deferences... */
+	func_compare = list->priv->func_compare;
+
+	/* trivial case */
+	if (func_compare == NULL)
+		return obj1 == obj2;
+
+	/* use helper function */
+	return func_compare (obj1, obj2) == 0;
+}
+
+/**
+ * egg_obj_list_remove_duplicate:
+ *
+ * Removes duplicate entries
+ **/
+void
+egg_obj_list_remove_duplicate (EggObjList *list)
+{
+	guint i, j;
+	gconstpointer obj1;
+	gconstpointer obj2;
+
+	for (i=0; i<list->len; i++) {
+		obj1 = egg_obj_list_index (list, i);
+		for (j=0; j<list->len; j++) {
+			if (i == j)
+				break;
+			obj2 = egg_obj_list_index (list, j);
+			if (egg_obj_list_obj_equal (list, obj1, obj2))
+				egg_obj_list_remove_index (list, i);
+		}
+	}
+}
+
+/**
+ * egg_obj_list_find_obj:
+ * @list: a valid #EggObjList instance
+ * @obj: a valid #gpointer object
+ *
+ * Return value: the object
+ *
+ * Removes an item from a list
+ **/
+static gpointer
+egg_obj_list_find_obj (EggObjList *list, gconstpointer obj)
+{
+	guint i;
+	gconstpointer obj_tmp;
+	EggObjListCompareFunc func_compare;
+
+	/* the pointers point to the same thing */
+	func_compare = list->priv->func_compare;
+	if (func_compare == NULL)
+		return (gpointer) obj;
+
+	/* remove data items from list */
+	for (i=0; i < list->len; i++) {
+		obj_tmp = egg_obj_list_index (list, i);
+		if (func_compare (obj_tmp, obj) == 0)
+			return (gpointer) obj_tmp;
+	}
+
+	/* nothing found */
+	return NULL;
+}
+
+/**
+ * egg_obj_list_remove:
+ * @list: a valid #EggObjList instance
+ * @obj: a valid #gpointer object
+ *
+ * Return value: TRUE is we removed something
+ *
+ * Removes all the items from a list matching obj
+ **/
+gboolean
+egg_obj_list_remove (EggObjList *list, gconstpointer obj)
+{
+	gboolean ret;
+	gpointer obj_new;
+	gboolean found = FALSE;
+
+	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);
+
+	do {
+		/* get the object */
+		obj_new = egg_obj_list_find_obj (list, obj);
+		if (obj_new == NULL)
+			break;
+
+		/* try to remove */
+		ret = g_ptr_array_remove (list->priv->array, obj_new);
+
+		/* no compare function, and pointer not found */
+		if (!ret)
+			break;
+
+		found = TRUE;
+		list->priv->func_free (obj_new);
+		list->len = list->priv->array->len;
+	} while (ret);
+
+	return found;
+}
+
+/**
+ * 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
+ * @filename: a filename
+ *
+ * Saves a copy of the list to a file
+ **/
+gboolean
+egg_obj_list_to_file (EggObjList *list, const gchar *filename)
+{
+	guint i;
+	gconstpointer obj;
+	gchar *part;
+	GString *string;
+	gboolean ret = TRUE;
+	GError *error = NULL;
+	EggObjListFreeFunc func_free;
+	EggObjListToStringFunc func_to_string;
+
+	g_return_val_if_fail (EGG_IS_OBJ_LIST (list), FALSE);
+	g_return_val_if_fail (list->priv->func_to_string != NULL, FALSE);
+	g_return_val_if_fail (list->priv->func_free != NULL, FALSE);
+
+	func_free = list->priv->func_free;
+	func_to_string = list->priv->func_to_string;
+
+	/* generate data */
+	string = g_string_new ("");
+	for (i=0; i<list->len; i++) {
+		obj = egg_obj_list_index (list, i);
+		part = func_to_string (obj);
+		if (part == NULL) {
+			ret = FALSE;
+			break;
+		}
+		g_string_append_printf (string, "%s\n", part);
+		g_free (part);
+	}
+	part = g_string_free (string, FALSE);
+
+	/* we failed to convert to string */
+	if (!ret) {
+		egg_warning ("failed to convert");
+		goto out;
+	}
+
+	/* save to disk */
+	ret = g_file_set_contents (filename, part, -1, &error);
+	if (!ret) {
+		egg_warning ("failed to set data: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+	egg_debug ("saved %s", filename);
+
+out:
+	g_free (part);
+	return ret;
+}
+
+/**
+ * egg_obj_list_from_file:
+ * @list: a valid #EggObjList instance
+ * @filename: a filename
+ *
+ * Appends the list from a file
+ **/
+gboolean
+egg_obj_list_from_file (EggObjList *list, const gchar *filename)
+{
+	gboolean ret;
+	GError *error = NULL;
+	gchar *data = NULL;
+	gchar **parts = NULL;
+	guint i;
+	guint length;
+	gpointer obj;
+	EggObjListFreeFunc func_free;
+	EggObjListFromStringFunc func_from_string;
+
+	g_return_val_if_fail (EGG_IS_OBJ_LIST (list), FALSE);
+	g_return_val_if_fail (list->priv->func_from_string != NULL, FALSE);
+	g_return_val_if_fail (list->priv->func_free != NULL, FALSE);
+
+	func_free = list->priv->func_free;
+	func_from_string = list->priv->func_from_string;
+
+	/* do we exist */
+	ret = g_file_test (filename, G_FILE_TEST_EXISTS);
+	if (!ret) {
+		egg_debug ("failed to get data from %s as file does not exist", filename);
+		goto out;
+	}
+
+	/* get contents */
+	ret = g_file_get_contents (filename, &data, NULL, &error);
+	if (!ret) {
+		egg_warning ("failed to get data: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* split by line ending */
+	parts = g_strsplit (data, "\n", 0);
+	length = g_strv_length (parts);
+	if (length == 0) {
+		egg_debug ("no data in %s", filename);
+		goto out;
+	}
+
+	/* add valid entries */
+	egg_debug ("loading %i items of data from %s", length, filename);
+	for (i=0; i<length-1; i++) {
+		obj = func_from_string (parts[i]);
+		if (obj != NULL)
+			egg_obj_list_add (list, obj);
+		func_free (obj);
+	}
+
+out:
+	g_strfreev (parts);
+	g_free (data);
+
+	return ret;
+}
+
+/**
+ * egg_obj_list_index:
+ * @list: a valid #EggObjList instance
+ * @index: the element to return
+ *
+ * Gets an object from the list
+ **/
+gconstpointer
+egg_obj_list_index (const EggObjList *list, guint index)
+{
+	gconstpointer obj;
+
+	g_return_val_if_fail (EGG_IS_OBJ_LIST (list), NULL);
+
+	obj = g_ptr_array_index (list->priv->array, index);
+	return obj;
+}
+
+/**
+ * egg_obj_list_finalize:
+ * @object: a valid #EggObjList instance
+ **/
+static void
+egg_obj_list_finalize (GObject *object)
+{
+	EggObjListFreeFunc func_free;
+	gpointer obj;
+	guint i;
+	EggObjList *list;
+	GPtrArray *array;
+	g_return_if_fail (EGG_IS_OBJ_LIST (object));
+	list = EGG_OBJ_LIST (object);
+
+	array = list->priv->array;
+	func_free = list->priv->func_free;
+	for (i=0; i<array->len; i++) {
+		obj = g_ptr_array_index (array, i);
+		if (func_free != NULL)
+			func_free (obj);
+	}
+	g_ptr_array_free (array, TRUE);
+
+	G_OBJECT_CLASS (egg_obj_list_parent_class)->finalize (object);
+}
+
+/**
+ * egg_obj_list_class_init:
+ * @klass: a valid #EggObjListClass instance
+ **/
+static void
+egg_obj_list_class_init (EggObjListClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+	object_class->finalize = egg_obj_list_finalize;
+	g_type_class_add_private (klass, sizeof (EggObjListPrivate));
+}
+
+/**
+ * egg_obj_list_init:
+ * @list: a valid #EggObjList instance
+ *
+ * Initializes the obj_list class.
+ **/
+static void
+egg_obj_list_init (EggObjList *list)
+{
+	list->priv = EGG_OBJ_LIST_GET_PRIVATE (list);
+	list->priv->func_new = NULL;
+	list->priv->func_copy = NULL;
+	list->priv->func_free = NULL;
+	list->priv->func_compare = NULL;
+	list->priv->func_to_string = NULL;
+	list->priv->func_from_string = NULL;
+	list->priv->array = g_ptr_array_new ();
+	list->len = list->priv->array->len;
+}
+
+/**
+ * egg_obj_list_new:
+ *
+ * Return value: A new list class instance.
+ **/
+EggObjList *
+egg_obj_list_new (void)
+{
+	EggObjList *list;
+	list = g_object_new (EGG_TYPE_OBJ_LIST, NULL);
+	return EGG_OBJ_LIST (list);
+}
+
+/***************************************************************************
+ ***                          MAKE CHECK TESTS                           ***
+ ***************************************************************************/
+#ifdef EGG_TEST
+#include "egg-test.h"
+
+void
+egg_obj_list_test (EggTest *test)
+{
+	EggObjList *list;
+
+	if (!egg_test_start (test, "EggObjList"))
+		return;
+
+	/************************************************************/
+	egg_test_title (test, "get an instance");
+	list = egg_obj_list_new ();
+	egg_test_assert (test, list != NULL);
+
+	g_object_unref (list);
+
+	egg_test_end (test);
+}
+#endif

Added: trunk/src/egg-obj-list.h
==============================================================================
--- (empty file)
+++ trunk/src/egg-obj-list.h	Mon Nov  3 17:13:53 2008
@@ -0,0 +1,97 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Richard Hughes <richard hughsie com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __EGG_OBJ_LIST_H
+#define __EGG_OBJ_LIST_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define EGG_TYPE_OBJ_LIST		(egg_obj_list_get_type ())
+#define EGG_OBJ_LIST(o)			(G_TYPE_CHECK_INSTANCE_CAST ((o), EGG_TYPE_OBJ_LIST, EggObjList))
+#define EGG_OBJ_LIST_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST((k), EGG_TYPE_OBJ_LIST, EggObjListClass))
+#define EGG_IS_OBJ_LIST(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), EGG_TYPE_OBJ_LIST))
+#define EGG_IS_OBJ_LIST_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), EGG_TYPE_OBJ_LIST))
+#define EGG_OBJ_LIST_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), EGG_TYPE_OBJ_LIST, EggObjListClass))
+
+typedef struct EggObjListPrivate EggObjListPrivate;
+
+typedef struct
+{
+	GObject		     	 parent;
+	EggObjListPrivate	*priv;
+	guint			 len;
+} EggObjList;
+
+typedef struct
+{
+	GObjectClass			 parent_class;
+} EggObjListClass;
+
+typedef gpointer (*EggObjListNewFunc)		(void);
+typedef gpointer (*EggObjListCopyFunc)		(gconstpointer		 data);
+typedef void	 (*EggObjListFreeFunc)		(gpointer		 data);
+typedef gint	 (*EggObjListCompareFunc)	(gconstpointer		 data1,
+						 gconstpointer		 data2);
+typedef gpointer (*EggObjListFromStringFunc)	(const gchar		*data);
+typedef gchar	*(*EggObjListToStringFunc)	(gconstpointer		 data);
+
+GType		 egg_obj_list_get_type		(void) G_GNUC_CONST;
+EggObjList	*egg_obj_list_new		(void);
+
+void		 egg_obj_list_set_new		(EggObjList		*list,
+						 EggObjListNewFunc	 func);
+void		 egg_obj_list_set_copy		(EggObjList		*list,
+						 EggObjListCopyFunc	 func);
+void		 egg_obj_list_set_free		(EggObjList		*list,
+						 EggObjListFreeFunc	 func);
+void		 egg_obj_list_set_compare	(EggObjList		*list,
+						 EggObjListCompareFunc	 func);
+void		 egg_obj_list_set_to_string	(EggObjList		*list,
+						 EggObjListToStringFunc	 func);
+void		 egg_obj_list_set_from_string	(EggObjList		*list,
+						 EggObjListFromStringFunc func);
+void		 egg_obj_list_clear		(EggObjList		*list);
+void		 egg_obj_list_print		(EggObjList		*list);
+gchar		*egg_obj_list_to_string		(EggObjList		*list)
+						 G_GNUC_WARN_UNUSED_RESULT;
+gboolean	 egg_obj_list_to_file		(EggObjList		*list,
+						 const gchar		*filename);
+gboolean	 egg_obj_list_from_file		(EggObjList		*list,
+						 const gchar		*filename);
+void		 egg_obj_list_add		(EggObjList		*list,
+						 gconstpointer		 data);
+void		 egg_obj_list_add_list		(EggObjList		*list,
+						 const EggObjList	*data);
+void		 egg_obj_list_remove_list	(EggObjList		*list,
+						 const EggObjList	*data);
+void		 egg_obj_list_remove_duplicate	(EggObjList		*list);
+gboolean	 egg_obj_list_remove		(EggObjList		*list,
+						 gconstpointer		 data);
+gboolean	 egg_obj_list_remove_index	(EggObjList		*list,
+						 guint			 index);
+gconstpointer	 egg_obj_list_index		(const EggObjList	*list,
+						 guint			 index);
+
+G_END_DECLS
+
+#endif /* __EGG_OBJ_LIST_H */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]