[tracker/cursor] Replaced some GValue stuff with better performing get_string



commit 5de47ca9d161300cbbae4a5169341e5c411ceb64
Author: Philip Van Hoof <philip codeminded be>
Date:   Fri Aug 28 16:49:02 2009 +0200

    Replaced some GValue stuff with better performing get_string

 src/libtracker-data/tracker-data-update.c |   63 +++++-----------------------
 1 files changed, 12 insertions(+), 51 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index c45d5fa..f5e14ff 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -1440,19 +1440,6 @@ tracker_data_commit_transaction (void)
 	}
 }
 
-static gchar *
-get_string_for_value (GValue *value)
-{
-	switch (G_VALUE_TYPE (value)) {
-	case G_TYPE_INT:
-		return g_strdup_printf ("%d", g_value_get_int (value));
-	case G_TYPE_DOUBLE:
-		return g_strdup_printf ("%f", g_value_get_double (value));
-	default:
-		return NULL;
-	}
-}
-
 /**
  * Removes the description of a resource (embedded metadata), but keeps
  * annotations (non-embedded/user metadata) stored about the resource.
@@ -1466,10 +1453,9 @@ tracker_data_delete_resource_description (const gchar *uri)
 	TrackerClass	   *class;
 	GString		   *sql;
 	TrackerProperty	  **properties, **property;
-	const gchar	   *class_uri;
+	const gchar	   *class_uri, *value;
 	int		    i;
 	gboolean            first;
-	GValue		    value = { 0 };
 	gint                resource_id;
 
 	resource_id = tracker_data_query_resource_id (uri);
@@ -1548,28 +1534,12 @@ tracker_data_delete_resource_description (const gchar *uri)
 				if (!tracker_property_get_multiple_values (*property)) {
 					/* single value property, value in single_result_set */
 
-					tracker_db_cursor_get_value (single_cursor, i++, &value);
+					value = tracker_db_cursor_get_string (single_cursor, i++);
 
-					if (G_VALUE_TYPE (&value) == 0) {
-						/* NULL, property not set */
-						continue;
-					}
-
-					if (G_VALUE_TYPE (&value) == G_TYPE_STRING) {
-						tracker_data_delete_statement (uri, 
-						                               tracker_property_get_uri (*property), 
-						                               g_value_get_string (&value), 
-						                               NULL);
-					} else {
-						gchar *object = get_string_for_value (&value);
-						tracker_data_delete_statement (uri, 
-						                               tracker_property_get_uri (*property), 
-						                               object, 
-						                               NULL);
-						g_free (object);
-					}
-
-					g_value_unset (&value);
+					tracker_data_delete_statement (uri, 
+					                               tracker_property_get_uri (*property), 
+					                               value, 
+					                               NULL);
 
 				} else {
 					/* multi value property, retrieve values from DB */
@@ -1595,21 +1565,12 @@ tracker_data_delete_resource_description (const gchar *uri)
 					if (multi_cursor) {
 						while (tracker_db_cursor_iter_next (multi_cursor)) {
 
-							tracker_db_cursor_get_value (multi_cursor, 0, &value);
-
-							if (G_VALUE_TYPE (&value) == G_TYPE_STRING) {
-								tracker_data_delete_statement (uri, 
-								                               tracker_property_get_uri (*property), 
-								                               g_value_get_string (&value), NULL);
-							} else {
-								gchar *object = get_string_for_value (&value);
-								tracker_data_delete_statement (uri, 
-								                               tracker_property_get_uri (*property), 
-								                               object, NULL);
-								g_free (object);
-							}
+							value = tracker_db_cursor_get_string (multi_cursor, 0);
 
-							g_value_unset (&value);
+							tracker_data_delete_statement (uri, 
+							                               tracker_property_get_uri (*property), 
+							                               value,
+							                               NULL);
 
 						}
 
@@ -1624,7 +1585,7 @@ tracker_data_delete_resource_description (const gchar *uri)
 				g_object_unref (single_cursor);
 			}
 
-		};
+		}
 
 		g_object_unref (cursor);
 	}



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