summaryrefslogtreecommitdiff
path: root/libdevkit-power
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2009-02-26 12:15:20 +0000
committerRichard Hughes <richard@hughsie.com>2009-02-26 12:15:20 +0000
commit55db60ef820c1cb0fafc54f8d530a5f448e5e48f (patch)
treeb0e90e7dad9fbca46c03357b079ebdecf353df65 /libdevkit-power
parent39ba30a4b4ad5ca753239120f653c7a6a6365174 (diff)
bugfix: remove use of EggObjList, which was pretty hacky, and try to make the library more sane
Diffstat (limited to 'libdevkit-power')
-rw-r--r--libdevkit-power/Makefile.am5
-rw-r--r--libdevkit-power/dkp-client.h8
-rw-r--r--libdevkit-power/dkp-device.c42
-rw-r--r--libdevkit-power/dkp-device.h13
-rw-r--r--libdevkit-power/dkp-enum.h4
-rw-r--r--libdevkit-power/dkp-history-obj.h6
-rw-r--r--libdevkit-power/dkp-object.h6
-rw-r--r--libdevkit-power/dkp-qos-obj.h6
-rw-r--r--libdevkit-power/dkp-stats-obj.h6
-rw-r--r--libdevkit-power/dkp-wakeups-obj.h6
-rw-r--r--libdevkit-power/dkp-wakeups.h10
-rw-r--r--libdevkit-power/egg-obj-list.c668
-rw-r--r--libdevkit-power/egg-obj-list.h97
13 files changed, 70 insertions, 807 deletions
diff --git a/libdevkit-power/Makefile.am b/libdevkit-power/Makefile.am
index 433f6e5..cc7370f 100644
--- a/libdevkit-power/Makefile.am
+++ b/libdevkit-power/Makefile.am
@@ -1,7 +1,9 @@
INCLUDES = \
$(GLIB_CFLAGS) \
$(DBUS_GLIB_CFLAGS) \
+ -I$(top_srcdir) \
-I$(top_srcdir)/libdevkit-power \
+ -DDKP_COMPILATION \
-DEGG_LOG_FILE=\""$(DKP_LOG_DIR)/DeviceKit-power"\" \
-DEGG_VERBOSE="\"DKP_VERBOSE\"" \
-DEGG_LOGGING="\"DKP_LOGGING\"" \
@@ -17,8 +19,7 @@ libdevkit_power_la_SOURCES = \
egg-debug.h \
egg-string.c \
egg-string.h \
- egg-obj-list.c \
- egg-obj-list.h \
+ devicekit-power.h \
dkp-client.c \
dkp-client.h \
dkp-device.c \
diff --git a/libdevkit-power/dkp-client.h b/libdevkit-power/dkp-client.h
index 785f240..4c62b1e 100644
--- a/libdevkit-power/dkp-client.h
+++ b/libdevkit-power/dkp-client.h
@@ -19,12 +19,16 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
+#error "Only <devicekit-power.h> can be included directly."
+#endif
+
#ifndef __DKP_CLIENT_H
#define __DKP_CLIENT_H
#include <glib-object.h>
-#include <dkp-enum.h>
-#include "dkp-device.h"
+#include <libdevkit-power/dkp-enum.h>
+#include <libdevkit-power/dkp-device.h>
G_BEGIN_DECLS
diff --git a/libdevkit-power/dkp-device.c b/libdevkit-power/dkp-device.c
index 46f5d59..21656e0 100644
--- a/libdevkit-power/dkp-device.c
+++ b/libdevkit-power/dkp-device.c
@@ -27,7 +27,6 @@
#include <dbus/dbus-glib.h>
#include "egg-debug.h"
-#include "egg-obj-list.h"
#include "dkp-device.h"
#include "dkp-object.h"
@@ -201,8 +200,8 @@ static gboolean
dkp_device_print_history (const DkpDevice *device, const gchar *type)
{
guint i;
- EggObjList *array;
- DkpHistoryObj *obj;
+ GPtrArray *array;
+ const DkpHistoryObj *obj;
gboolean ret = FALSE;
/* get a fair chunk of data */
@@ -213,10 +212,11 @@ dkp_device_print_history (const DkpDevice *device, const gchar *type)
/* pretty print */
g_print (" History (%s):\n", type);
for (i=0; i<array->len; i++) {
- obj = (DkpHistoryObj *) egg_obj_list_index (array, i);
+ obj = (const DkpHistoryObj *) g_ptr_array_index (array, i);
g_print (" %i\t%.3f\t%s\n", obj->time, obj->value, dkp_device_state_to_text (obj->state));
}
- g_object_unref (array);
+ g_ptr_array_foreach (array, (GFunc) dkp_history_obj_free, NULL);
+ g_ptr_array_free (array, TRUE);
ret = TRUE;
out:
return ret;
@@ -269,7 +269,7 @@ out:
*
* Returns an array of %DkpHistoryObj's
**/
-EggObjList *
+GPtrArray *
dkp_device_get_history (const DkpDevice *device, const gchar *type, guint timespec, guint resolution)
{
GError *error = NULL;
@@ -279,11 +279,11 @@ dkp_device_get_history (const DkpDevice *device, const gchar *type, guint timesp
GValue *gv;
guint i;
DkpHistoryObj *obj;
- EggObjList *array = NULL;
+ GPtrArray *array = NULL;
gboolean ret;
- g_return_val_if_fail (DKP_IS_DEVICE (device), FALSE);
- g_return_val_if_fail (device->priv->proxy_device != NULL, FALSE);
+ g_return_val_if_fail (DKP_IS_DEVICE (device), NULL);
+ g_return_val_if_fail (device->priv->proxy_device != NULL, NULL);
g_type_gvalue_array = dbus_g_type_get_collection ("GPtrArray",
dbus_g_type_get_struct("GValueArray",
@@ -312,9 +312,7 @@ dkp_device_get_history (const DkpDevice *device, const gchar *type, guint timesp
goto out;
/* convert */
- array = egg_obj_list_new ();
- egg_obj_list_set_copy (array, (EggObjListCopyFunc) dkp_history_obj_copy);
- egg_obj_list_set_free (array, (EggObjListFreeFunc) dkp_history_obj_free);
+ array = g_ptr_array_new ();
for (i=0; i<gvalue_ptr_array->len; i++) {
gva = (GValueArray *) g_ptr_array_index (gvalue_ptr_array, i);
@@ -331,8 +329,7 @@ dkp_device_get_history (const DkpDevice *device, const gchar *type, guint timesp
gv = g_value_array_get_nth (gva, 2);
obj->state = dkp_device_state_from_text (g_value_get_string (gv));
g_value_unset (gv);
- egg_obj_list_add (array, obj);
- dkp_history_obj_free (obj);
+ g_ptr_array_add (array, obj);
g_value_array_free (gva);
}
@@ -347,7 +344,7 @@ out:
*
* Returns an array of %DkpStatsObj's
**/
-EggObjList *
+GPtrArray *
dkp_device_get_statistics (const DkpDevice *device, const gchar *type)
{
GError *error = NULL;
@@ -357,11 +354,11 @@ dkp_device_get_statistics (const DkpDevice *device, const gchar *type)
GValue *gv;
guint i;
DkpStatsObj *obj;
- EggObjList *array = NULL;
+ GPtrArray *array = NULL;
gboolean ret;
- g_return_val_if_fail (DKP_IS_DEVICE (device), FALSE);
- g_return_val_if_fail (device->priv->proxy_device != NULL, FALSE);
+ g_return_val_if_fail (DKP_IS_DEVICE (device), NULL);
+ g_return_val_if_fail (device->priv->proxy_device != NULL, NULL);
g_type_gvalue_array = dbus_g_type_get_collection ("GPtrArray",
dbus_g_type_get_struct("GValueArray",
@@ -387,11 +384,7 @@ dkp_device_get_statistics (const DkpDevice *device, const gchar *type)
goto out;
/* convert */
- array = egg_obj_list_new ();
- egg_obj_list_set_copy (array, (EggObjListCopyFunc) dkp_stats_obj_copy);
- egg_obj_list_set_free (array, (EggObjListFreeFunc) dkp_stats_obj_free);
- egg_obj_list_set_to_string (array, (EggObjListToStringFunc) dkp_stats_obj_to_string);
- egg_obj_list_set_from_string (array, (EggObjListFromStringFunc) dkp_stats_obj_from_string);
+ array = g_ptr_array_new ();
for (i=0; i<gvalue_ptr_array->len; i++) {
gva = (GValueArray *) g_ptr_array_index (gvalue_ptr_array, i);
@@ -405,8 +398,7 @@ dkp_device_get_statistics (const DkpDevice *device, const gchar *type)
obj->accuracy = g_value_get_double (gv);
g_value_unset (gv);
/* 2 */
- egg_obj_list_add (array, obj);
- dkp_stats_obj_free (obj);
+ g_ptr_array_add (array, obj);
g_value_array_free (gva);
}
out:
diff --git a/libdevkit-power/dkp-device.h b/libdevkit-power/dkp-device.h
index 3171d91..a6c444e 100644
--- a/libdevkit-power/dkp-device.h
+++ b/libdevkit-power/dkp-device.h
@@ -19,13 +19,16 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
+#error "Only <devicekit-power.h> can be included directly."
+#endif
+
#ifndef __DKP_DEVICE_H
#define __DKP_DEVICE_H
#include <glib-object.h>
-#include <dkp-enum.h>
-#include <dkp-object.h>
-#include "egg-obj-list.h"
+#include <libdevkit-power/dkp-enum.h>
+#include <libdevkit-power/dkp-object.h>
G_BEGIN_DECLS
@@ -63,11 +66,11 @@ gboolean dkp_device_set_object_path (DkpDevice *device,
gboolean dkp_device_print (const DkpDevice *device);
gboolean dkp_device_refresh (DkpDevice *device);
-EggObjList *dkp_device_get_history (const DkpDevice *device,
+GPtrArray *dkp_device_get_history (const DkpDevice *device,
const gchar *type,
guint timespec,
guint resolution);
-EggObjList *dkp_device_get_statistics (const DkpDevice *device,
+GPtrArray *dkp_device_get_statistics (const DkpDevice *device,
const gchar *type);
G_END_DECLS
diff --git a/libdevkit-power/dkp-enum.h b/libdevkit-power/dkp-enum.h
index dc198fa..166b3b1 100644
--- a/libdevkit-power/dkp-enum.h
+++ b/libdevkit-power/dkp-enum.h
@@ -19,6 +19,10 @@
*
*/
+#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
+#error "Only <devicekit-power.h> can be included directly."
+#endif
+
#ifndef __DKP_ENUM_H__
#define __DKP_ENUM_H__
diff --git a/libdevkit-power/dkp-history-obj.h b/libdevkit-power/dkp-history-obj.h
index d98abbb..a676889 100644
--- a/libdevkit-power/dkp-history-obj.h
+++ b/libdevkit-power/dkp-history-obj.h
@@ -18,11 +18,15 @@
*
*/
+#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
+#error "Only <devicekit-power.h> can be included directly."
+#endif
+
#ifndef __DKP_HISTORY_OBJ_H__
#define __DKP_HISTORY_OBJ_H__
#include <glib.h>
-#include "dkp-enum.h"
+#include <libdevkit-power/dkp-enum.h>
G_BEGIN_DECLS
diff --git a/libdevkit-power/dkp-object.h b/libdevkit-power/dkp-object.h
index c836360..55946c9 100644
--- a/libdevkit-power/dkp-object.h
+++ b/libdevkit-power/dkp-object.h
@@ -18,11 +18,15 @@
*
*/
+#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
+#error "Only <devicekit-power.h> can be included directly."
+#endif
+
#ifndef __DKP_OBJECT_H__
#define __DKP_OBJECT_H__
#include <glib.h>
-#include "dkp-enum.h"
+#include <libdevkit-power/dkp-enum.h>
G_BEGIN_DECLS
diff --git a/libdevkit-power/dkp-qos-obj.h b/libdevkit-power/dkp-qos-obj.h
index 63b5fb8..4e2b36c 100644
--- a/libdevkit-power/dkp-qos-obj.h
+++ b/libdevkit-power/dkp-qos-obj.h
@@ -18,11 +18,15 @@
*
*/
+#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
+#error "Only <devicekit-power.h> can be included directly."
+#endif
+
#ifndef __DKP_QOS_OBJ_H__
#define __DKP_QOS_OBJ_H__
#include <glib.h>
-#include "dkp-enum.h"
+#include <libdevkit-power/dkp-enum.h>
G_BEGIN_DECLS
diff --git a/libdevkit-power/dkp-stats-obj.h b/libdevkit-power/dkp-stats-obj.h
index f29c09a..8daa68a 100644
--- a/libdevkit-power/dkp-stats-obj.h
+++ b/libdevkit-power/dkp-stats-obj.h
@@ -18,11 +18,15 @@
*
*/
+#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
+#error "Only <devicekit-power.h> can be included directly."
+#endif
+
#ifndef __DKP_STATS_OBJ_H__
#define __DKP_STATS_OBJ_H__
#include <glib.h>
-#include "dkp-enum.h"
+#include <libdevkit-power/dkp-enum.h>
G_BEGIN_DECLS
diff --git a/libdevkit-power/dkp-wakeups-obj.h b/libdevkit-power/dkp-wakeups-obj.h
index 7939cfd..52d48dc 100644
--- a/libdevkit-power/dkp-wakeups-obj.h
+++ b/libdevkit-power/dkp-wakeups-obj.h
@@ -18,11 +18,15 @@
*
*/
+#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
+#error "Only <devicekit-power.h> can be included directly."
+#endif
+
#ifndef __DKP_WAKEUPS_OBJ_H__
#define __DKP_WAKEUPS_OBJ_H__
#include <glib.h>
-#include "dkp-enum.h"
+#include <libdevkit-power/dkp-enum.h>
G_BEGIN_DECLS
diff --git a/libdevkit-power/dkp-wakeups.h b/libdevkit-power/dkp-wakeups.h
index 770e5bc..890920f 100644
--- a/libdevkit-power/dkp-wakeups.h
+++ b/libdevkit-power/dkp-wakeups.h
@@ -19,13 +19,17 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
+#error "Only <devicekit-power.h> can be included directly."
+#endif
+
#ifndef __DKP_WAKEUPS_H
#define __DKP_WAKEUPS_H
#include <glib-object.h>
-#include <dkp-enum.h>
-#include "dkp-device.h"
-#include "dkp-wakeups-obj.h"
+#include <libdevkit-power/dkp-enum.h>
+#include <libdevkit-power/dkp-device.h>
+#include <libdevkit-power/dkp-wakeups-obj.h>
G_BEGIN_DECLS
diff --git a/libdevkit-power/egg-obj-list.c b/libdevkit-power/egg-obj-list.c
deleted file mode 100644
index 6e3fd25..0000000
--- a/libdevkit-power/egg-obj-list.c
+++ /dev/null
@@ -1,668 +0,0 @@
-/* -*- 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)
-{
- GPtrArray *array;
- EggObjListFreeFunc func_free;
-
- g_return_if_fail (EGG_IS_OBJ_LIST (list));
-
- array = list->priv->array;
- func_free = list->priv->func_free;
- if (func_free != NULL)
- g_ptr_array_foreach (array, (GFunc) func_free, NULL);
- g_ptr_array_remove_range (array, 0, array->len);
-
- 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
diff --git a/libdevkit-power/egg-obj-list.h b/libdevkit-power/egg-obj-list.h
deleted file mode 100644
index ced0e79..0000000
--- a/libdevkit-power/egg-obj-list.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -*- 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);
-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 */