summaryrefslogtreecommitdiff
path: root/src/libtracker-data/tracker-class.c
diff options
context:
space:
mode:
authorPhilip Van Hoof <philip@codeminded.be>2010-11-10 14:11:10 +0100
committerPhilip Van Hoof <philip@codeminded.be>2010-11-10 14:11:10 +0100
commit1b0fc655257efd05e1d6714ce70243b11d84164a (patch)
tree8f58a325ab1e6e81005fff081212b9723c6d0123 /src/libtracker-data/tracker-class.c
parent00199c35d704a39981c6c3f7345acdcf071427bc (diff)
downloadtracker-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.c32
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)
{