[tracker/wip/carlosg/ontology-race: 1/2] libtracker-data: Make ontology structs more compact




commit cf3fac9e5f70adcd404b24db8987815125b748be
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Nov 24 13:27:52 2020 +0100

    libtracker-data: Make ontology structs more compact
    
    Stuff all those booleans as bitfields, since we have a high-ish
    amount of those in memory at all times (At least with Nepomuk).

 src/libtracker-data/tracker-class.c     | 16 +++++-----
 src/libtracker-data/tracker-namespace.c |  8 ++---
 src/libtracker-data/tracker-property.c  | 52 ++++++++++++++++-----------------
 3 files changed, 38 insertions(+), 38 deletions(-)
---
diff --git a/src/libtracker-data/tracker-class.c b/src/libtracker-data/tracker-class.c
index 47bf8439f..3c87cbabb 100644
--- a/src/libtracker-data/tracker-class.c
+++ b/src/libtracker-data/tracker-class.c
@@ -35,11 +35,11 @@ struct _TrackerClassPrivate {
        gchar *uri;
        gchar *name;
        gint id;
-       gboolean is_new;
-       gboolean db_schema_changed;
-       gboolean notify;
+       guint is_new : 1;
+       guint db_schema_changed : 1;
+       guint notify : 1;
+       guint use_gvdb : 1;
 
-       gboolean use_gvdb;
 
        GArray *super_classes;
        GArray *domain_indexes;
@@ -109,7 +109,7 @@ tracker_class_new (gboolean use_gvdb)
 
        if (use_gvdb) {
                priv = tracker_class_get_instance_private (service);
-               priv->use_gvdb = use_gvdb;
+               priv->use_gvdb = !!use_gvdb;
        }
 
        return service;
@@ -407,7 +407,7 @@ tracker_class_set_is_new (TrackerClass *service,
 
        priv = tracker_class_get_instance_private (service);
 
-       priv->is_new = value;
+       priv->is_new = !!value;
 }
 
 
@@ -421,7 +421,7 @@ tracker_class_set_notify (TrackerClass *service,
 
        priv = tracker_class_get_instance_private (service);
 
-       priv->notify = value;
+       priv->notify = !!value;
 }
 
 void
@@ -434,7 +434,7 @@ tracker_class_set_db_schema_changed (TrackerClass *service,
 
        priv = tracker_class_get_instance_private (service);
 
-       priv->db_schema_changed = value;
+       priv->db_schema_changed = !!value;
 }
 
 void
diff --git a/src/libtracker-data/tracker-namespace.c b/src/libtracker-data/tracker-namespace.c
index 618570062..bb6496e06 100644
--- a/src/libtracker-data/tracker-namespace.c
+++ b/src/libtracker-data/tracker-namespace.c
@@ -32,10 +32,10 @@ typedef struct _TrackerNamespacePrivate TrackerNamespacePrivate;
 struct _TrackerNamespacePrivate {
        gchar *uri;
 
-       gboolean use_gvdb;
+       guint use_gvdb : 1;
+       guint is_new : 1;
 
        gchar *prefix;
-       gboolean is_new;
        TrackerOntologies *ontologies;
 };
 
@@ -79,7 +79,7 @@ tracker_namespace_new (gboolean use_gvdb)
 
        if (use_gvdb) {
                priv = tracker_namespace_get_instance_private (namespace);
-               priv->use_gvdb = use_gvdb;
+               priv->use_gvdb = !!use_gvdb;
        }
 
        return namespace;
@@ -173,7 +173,7 @@ tracker_namespace_set_is_new (TrackerNamespace *namespace,
 
        priv = tracker_namespace_get_instance_private (namespace);
 
-       priv->is_new = value;
+       priv->is_new = !!value;
 }
 
 void
diff --git a/src/libtracker-data/tracker-property.c b/src/libtracker-data/tracker-property.c
index b6f21c0fb..42c7ff931 100644
--- a/src/libtracker-data/tracker-property.c
+++ b/src/libtracker-data/tracker-property.c
@@ -45,32 +45,32 @@ struct _TrackerPropertyPrivate {
        gchar         *name;
        gchar         *table_name;
 
-       gboolean       use_gvdb;
-
        TrackerPropertyType  data_type;
        TrackerClass   *domain;
        TrackerClass   *domain_index;
        TrackerClass   *range;
        gint           weight;
        gint           id;
-       gboolean       indexed;
+       guint          use_gvdb : 1;
+       guint          indexed : 1;
+       guint          orig_fulltext_indexed : 1;
+       guint          fulltext_indexed : 1;
+       guint          multiple_values : 1;
+       guint          last_multiple_values : 1;
+       guint          is_inverse_functional_property : 1;
+       guint          is_new : 1;
+       guint          db_schema_changed : 1;
+       guint          writeback : 1;
+       guint          force_journal : 1;
+       guint          cardinality_changed : 1;
+       guint          orig_multiple_values : 1;
+
        TrackerProperty *secondary_index;
-       gboolean       orig_fulltext_indexed;
-       gboolean       fulltext_indexed;
-       gboolean       multiple_values;
-       gboolean       last_multiple_values;
-       gboolean       is_inverse_functional_property;
-       gboolean       is_new;
-       gboolean       db_schema_changed;
-       gboolean       writeback;
        GPtrArray     *is_new_domain_index;
-       gboolean       force_journal;
 
        GArray        *super_properties;
        GArray        *domain_indexes;
        GArray        *last_super_properties;
-       gboolean       cardinality_changed;
-       gboolean       orig_multiple_values;
 
        TrackerOntologies *ontologies;
 };
@@ -201,7 +201,7 @@ tracker_property_new (gboolean use_gvdb)
 
        if (use_gvdb) {
                priv = tracker_property_get_instance_private (property);
-               priv->use_gvdb = use_gvdb;
+               priv->use_gvdb = !!use_gvdb;
        }
 
        return property;
@@ -858,7 +858,7 @@ tracker_property_set_indexed (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->indexed = value;
+       priv->indexed = !!value;
 }
 
 void
@@ -871,7 +871,7 @@ tracker_property_set_is_new (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->is_new = value;
+       priv->is_new = !!value;
 }
 
 void
@@ -931,7 +931,7 @@ tracker_property_set_writeback (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->writeback = value;
+       priv->writeback = !!value;
 }
 
 void
@@ -944,7 +944,7 @@ tracker_property_set_db_schema_changed (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->db_schema_changed = value;
+       priv->db_schema_changed = !!value;
 }
 
 void
@@ -957,7 +957,7 @@ tracker_property_set_cardinality_changed (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->cardinality_changed = value;
+       priv->cardinality_changed = !!value;
 }
 
 void
@@ -970,7 +970,7 @@ tracker_property_set_orig_fulltext_indexed (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->orig_fulltext_indexed = value;
+       priv->orig_fulltext_indexed = !!value;
 }
 
 void
@@ -983,7 +983,7 @@ tracker_property_set_fulltext_indexed (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->fulltext_indexed = value;
+       priv->fulltext_indexed = !!value;
 }
 
 void
@@ -996,7 +996,7 @@ tracker_property_set_multiple_values (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->multiple_values = value;
+       priv->multiple_values = !!value;
        g_clear_pointer (&priv->table_name, g_free);
 }
 
@@ -1010,7 +1010,7 @@ tracker_property_set_last_multiple_values (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->last_multiple_values = value;
+       priv->last_multiple_values = !!value;
 }
 
 void
@@ -1023,7 +1023,7 @@ tracker_property_set_orig_multiple_values (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->orig_multiple_values = value;
+       priv->orig_multiple_values = !!value;
 }
 
 
@@ -1037,7 +1037,7 @@ tracker_property_set_is_inverse_functional_property (TrackerProperty *property,
 
        priv = tracker_property_get_instance_private (property);
 
-       priv->is_inverse_functional_property = value;
+       priv->is_inverse_functional_property = !!value;
 }
 
 void


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