[tracker] libtracker-data: Factor out function string_to_gvalue
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-data: Factor out function string_to_gvalue
- Date: Mon, 26 Oct 2009 15:21:35 +0000 (UTC)
commit 5c06c6f92381bccc3beec63c931515538c7373d2
Author: Jürg Billeter <j bitron ch>
Date: Mon Oct 26 16:21:05 2009 +0100
libtracker-data: Factor out function string_to_gvalue
src/libtracker-data/tracker-data-update.c | 76 ++++++++++++++++------------
1 files changed, 43 insertions(+), 33 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 9531b91..ced18a4 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -757,11 +757,52 @@ get_old_property_values (TrackerProperty *property,
}
static void
+string_to_gvalue (const gchar *value,
+ TrackerPropertyType type,
+ GValue *gvalue)
+{
+ guint32 object_id;
+
+ switch (type) {
+ case TRACKER_PROPERTY_TYPE_STRING:
+ g_value_init (gvalue, G_TYPE_STRING);
+ g_value_set_string (gvalue, value);
+ break;
+ case TRACKER_PROPERTY_TYPE_INTEGER:
+ g_value_init (gvalue, G_TYPE_INT);
+ g_value_set_int (gvalue, atoi (value));
+ break;
+ case TRACKER_PROPERTY_TYPE_BOOLEAN:
+ /* use G_TYPE_INT to be compatible with value stored in DB
+ (important for value_equal function) */
+ g_value_init (gvalue, G_TYPE_INT);
+ g_value_set_int (gvalue, strcmp (value, "true") == 0);
+ break;
+ case TRACKER_PROPERTY_TYPE_DOUBLE:
+ g_value_init (gvalue, G_TYPE_DOUBLE);
+ g_value_set_double (gvalue, atof (value));
+ break;
+ case TRACKER_PROPERTY_TYPE_DATE:
+ case TRACKER_PROPERTY_TYPE_DATETIME:
+ g_value_init (gvalue, G_TYPE_INT);
+ g_value_set_int (gvalue, tracker_string_to_date (value));
+ break;
+ case TRACKER_PROPERTY_TYPE_RESOURCE:
+ object_id = ensure_resource_id (value);
+ g_value_init (gvalue, G_TYPE_INT);
+ g_value_set_int (gvalue, object_id);
+ break;
+ default:
+ g_warn_if_reached ();
+ break;
+ }
+}
+
+static void
cache_set_metadata_decomposed (TrackerProperty *property,
const gchar *value,
GError **error)
{
- guint32 object_id;
gboolean multiple_values, fts;
gchar *table_name;
const gchar *field_name;
@@ -798,38 +839,7 @@ cache_set_metadata_decomposed (TrackerProperty *property,
return;
}
- switch (tracker_property_get_data_type (property)) {
- case TRACKER_PROPERTY_TYPE_STRING:
- g_value_init (&gvalue, G_TYPE_STRING);
- g_value_set_string (&gvalue, value);
- break;
- case TRACKER_PROPERTY_TYPE_INTEGER:
- g_value_init (&gvalue, G_TYPE_INT);
- g_value_set_int (&gvalue, atoi (value));
- break;
- case TRACKER_PROPERTY_TYPE_BOOLEAN:
- /* use G_TYPE_INT to be compatible with value stored in DB
- (important for value_equal function) */
- g_value_init (&gvalue, G_TYPE_INT);
- g_value_set_int (&gvalue, strcmp (value, "true") == 0);
- break;
- case TRACKER_PROPERTY_TYPE_DOUBLE:
- g_value_init (&gvalue, G_TYPE_DOUBLE);
- g_value_set_double (&gvalue, atof (value));
- break;
- case TRACKER_PROPERTY_TYPE_DATE:
- case TRACKER_PROPERTY_TYPE_DATETIME:
- g_value_init (&gvalue, G_TYPE_INT);
- g_value_set_int (&gvalue, tracker_string_to_date (value));
- break;
- case TRACKER_PROPERTY_TYPE_RESOURCE:
- object_id = ensure_resource_id (value);
- g_value_init (&gvalue, G_TYPE_INT);
- g_value_set_int (&gvalue, object_id);
- break;
- default:
- return;
- }
+ string_to_gvalue (value, tracker_property_get_data_type (property), &gvalue);
if (!value_set_add_value (old_values, &gvalue)) {
/* value already inserted */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]