diff options
author | Philip Van Hoof <philip@codeminded.be> | 2010-11-10 14:11:10 +0100 |
---|---|---|
committer | Philip Van Hoof <philip@codeminded.be> | 2010-11-10 14:11:10 +0100 |
commit | 1b0fc655257efd05e1d6714ce70243b11d84164a (patch) | |
tree | 8f58a325ab1e6e81005fff081212b9723c6d0123 /src/libtracker-data/tracker-class.c | |
parent | 00199c35d704a39981c6c3f7345acdcf071427bc (diff) | |
download | tracker-1b0fc655257efd05e1d6714ce70243b11d84164a.tar.gz |
libtracker-data: Detect removal of a rdfs:subClassOf in ontology and cope
Diffstat (limited to 'src/libtracker-data/tracker-class.c')
-rw-r--r-- | src/libtracker-data/tracker-class.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/libtracker-data/tracker-class.c b/src/libtracker-data/tracker-class.c index 7486032ad..882ec3935 100644 --- a/src/libtracker-data/tracker-class.c +++ b/src/libtracker-data/tracker-class.c @@ -44,6 +44,7 @@ struct _TrackerClassPrivate { GArray *super_classes; GArray *domain_indexes; GArray *last_domain_indexes; + GArray *last_super_classes; struct { struct { @@ -92,6 +93,7 @@ tracker_class_init (TrackerClass *service) priv->super_classes = g_array_new (TRUE, TRUE, sizeof (TrackerClass *)); priv->domain_indexes = g_array_new (TRUE, TRUE, sizeof (TrackerProperty *)); priv->last_domain_indexes = NULL; + priv->last_super_classes = NULL; priv->deletes.pending.sub_pred_ids = g_array_new (FALSE, FALSE, sizeof (gint64)); priv->deletes.pending.obj_graph_ids = g_array_new (FALSE, FALSE, sizeof (gint64)); @@ -130,9 +132,13 @@ class_finalize (GObject *object) g_array_free (priv->inserts.ready.sub_pred_ids, TRUE); g_array_free (priv->inserts.ready.obj_graph_ids, TRUE); - if (priv->last_domain_indexes) + if (priv->last_domain_indexes) { g_array_free (priv->last_domain_indexes, TRUE); + } + if (priv->last_super_classes) { + g_array_free (priv->last_super_classes, TRUE); + } (G_OBJECT_CLASS (tracker_class_parent_class)->finalize) (object); } @@ -232,6 +238,18 @@ tracker_class_get_last_domain_indexes (TrackerClass *service) return (TrackerProperty **) (priv->last_domain_indexes ? priv->last_domain_indexes->data : NULL); } +TrackerClass ** +tracker_class_get_last_super_classes (TrackerClass *service) +{ + TrackerClassPrivate *priv; + + g_return_val_if_fail (TRACKER_IS_CLASS (service), NULL); + + priv = GET_PRIV (service); + + return (TrackerClass **) (priv->last_super_classes ? priv->last_super_classes->data : NULL); +} + gboolean tracker_class_get_is_new (TrackerClass *service) { @@ -351,6 +369,18 @@ tracker_class_add_super_class (TrackerClass *service, } void +tracker_class_reset_super_classes (TrackerClass *service) +{ + TrackerClassPrivate *priv; + + g_return_if_fail (TRACKER_IS_CLASS (service)); + + priv = GET_PRIV (service); + priv->last_super_classes = priv->super_classes; + priv->super_classes = g_array_new (TRUE, TRUE, sizeof (TrackerClass *)); +} + +void tracker_class_add_domain_index (TrackerClass *service, TrackerProperty *value) { |