[gnome-builder] code-index: code style cleanup for persistent map
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] code-index: code style cleanup for persistent map
- Date: Thu, 18 Jan 2018 14:43:37 +0000 (UTC)
commit 3e516161220b07145d8fa5cede7b8f8f5b9caaf8
Author: Christian Hergert <chergert redhat com>
Date: Tue Jan 16 22:47:26 2018 -0800
code-index: code style cleanup for persistent map
src/plugins/code-index/ide-persistent-map.c | 153 ++++++++++++++--------------
src/plugins/code-index/ide-persistent-map.h | 36 +++----
2 files changed, 94 insertions(+), 95 deletions(-)
---
diff --git a/src/plugins/code-index/ide-persistent-map.c b/src/plugins/code-index/ide-persistent-map.c
index afae07763..4b3725776 100644
--- a/src/plugins/code-index/ide-persistent-map.c
+++ b/src/plugins/code-index/ide-persistent-map.c
@@ -50,9 +50,12 @@ struct _IdePersistentMap
gint32 byte_order;
+ guint load_called : 1;
guint loaded : 1;
};
+G_STATIC_ASSERT (sizeof (KVPair) == 8);
+
G_DEFINE_TYPE (IdePersistentMap, ide_persistent_map, G_TYPE_OBJECT)
static void
@@ -70,24 +73,16 @@ ide_persistent_map_load_file_worker (GTask *task,
g_autoptr(GVariant) values = NULL;
g_autoptr(GVariant) metadata = NULL;
g_autoptr(GVariant) kvpairs = NULL;
- GVariantDict dict;
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GVariantDict) dict = NULL;
gint32 version;
gsize n_elements;
- g_autoptr(GError) error = NULL;
g_assert (G_IS_TASK (task));
g_assert (IDE_IS_PERSISTENT_MAP (self));
g_assert (G_IS_FILE (file));
g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
-
- if (self->loaded)
- {
- g_task_return_new_error (task,
- G_IO_ERROR,
- G_IO_ERROR_INVAL,
- "Index already loaded");
- return;
- }
+ g_assert (self->loaded == FALSE);
self->loaded = TRUE;
@@ -100,7 +95,9 @@ ide_persistent_map_load_file_worker (GTask *task,
return;
}
- if (NULL == (mapped_file = g_mapped_file_new (path, FALSE, &error)))
+ mapped_file = g_mapped_file_new (path, FALSE, &error);
+
+ if (mapped_file == NULL)
{
g_task_return_error (task, g_steal_pointer (&error));
return;
@@ -120,13 +117,12 @@ ide_persistent_map_load_file_worker (GTask *task,
return;
}
- g_variant_ref_sink (data);
+ g_variant_take_ref (data);
- g_variant_dict_init (&dict, data);
+ dict = g_variant_dict_new (data);
- if (!g_variant_dict_lookup (&dict, "version", "i", &version) || version != 2)
+ if (!g_variant_dict_lookup (dict, "version", "i", &version) || version != 2)
{
- g_variant_dict_clear (&dict);
g_task_return_new_error (task,
G_IO_ERROR,
G_IO_ERROR_INVAL,
@@ -135,15 +131,13 @@ ide_persistent_map_load_file_worker (GTask *task,
return;
}
- keys = g_variant_dict_lookup_value (&dict, "keys", G_VARIANT_TYPE_ARRAY);
- values = g_variant_dict_lookup_value (&dict, "values", G_VARIANT_TYPE_ARRAY);
- kvpairs = g_variant_dict_lookup_value (&dict, "kvpairs", G_VARIANT_TYPE_ARRAY);
- metadata = g_variant_dict_lookup_value (&dict, "metadata", G_VARIANT_TYPE_VARDICT);
-
- if (!g_variant_dict_lookup (&dict, "byte-order", "i", &self->byte_order))
- self->byte_order = 0;
+ keys = g_variant_dict_lookup_value (dict, "keys", G_VARIANT_TYPE_ARRAY);
+ values = g_variant_dict_lookup_value (dict, "values", G_VARIANT_TYPE_ARRAY);
+ kvpairs = g_variant_dict_lookup_value (dict, "kvpairs", G_VARIANT_TYPE_ARRAY);
+ metadata = g_variant_dict_lookup_value (dict, "metadata", G_VARIANT_TYPE_VARDICT);
- g_variant_dict_clear (&dict);
+ if (!g_variant_dict_lookup (dict, "byte-order", "i", &self->byte_order))
+ self->byte_order = G_BYTE_ORDER;
if (keys == NULL || values == NULL || kvpairs == NULL || metadata == NULL || !self->byte_order)
{
@@ -154,13 +148,8 @@ ide_persistent_map_load_file_worker (GTask *task,
return;
}
- self->keys = g_variant_get_fixed_array (keys,
- &n_elements,
- sizeof (guint8));
-
- self->kvpairs = g_variant_get_fixed_array (kvpairs,
- &self->n_kvpairs,
- sizeof (KVPair));
+ self->keys = g_variant_get_fixed_array (keys, &n_elements, sizeof (guint8));
+ self->kvpairs = g_variant_get_fixed_array (kvpairs, &self->n_kvpairs, sizeof (KVPair));
self->mapped_file = g_steal_pointer (&mapped_file);
self->data = g_steal_pointer (&data);
@@ -169,6 +158,14 @@ ide_persistent_map_load_file_worker (GTask *task,
self->kvpairs_var = g_steal_pointer (&kvpairs);
self->metadata = g_variant_dict_new (metadata);
+ g_assert (!g_variant_is_floating (self->data));
+ g_assert (!g_variant_is_floating (self->keys_var));
+ g_assert (!g_variant_is_floating (self->values));
+ g_assert (!g_variant_is_floating (self->kvpairs_var));
+ g_assert (self->keys != NULL);
+ g_assert (self->kvpairs != NULL);
+ g_assert (self->metadata != NULL);
+
g_task_return_boolean (task, TRUE);
}
@@ -181,60 +178,61 @@ ide_persistent_map_load_file (IdePersistentMap *self,
g_autoptr(GTask) task = NULL;
g_return_val_if_fail (IDE_IS_PERSISTENT_MAP (self), FALSE);
+ g_return_val_if_fail (self->load_called == FALSE, FALSE);
g_return_val_if_fail (G_IS_FILE (file), FALSE);
g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), FALSE);
- task = g_task_new (self, cancellable, NULL, NULL);
+ self->load_called = TRUE;
- g_task_set_priority (task, G_PRIORITY_LOW);
+ task = g_task_new (self, cancellable, NULL, NULL);
g_task_set_source_tag (task, ide_persistent_map_load_file);
+ g_task_set_priority (task, G_PRIORITY_LOW);
g_task_set_task_data (task, g_object_ref (file), g_object_unref);
-
- ide_persistent_map_load_file_worker (task, self, file, cancellable);
+ g_task_run_in_thread_sync (task, ide_persistent_map_load_file_worker);
return g_task_propagate_boolean (task, error);
}
void
-ide_persistent_map_load_file_async (IdePersistentMap *self,
- GFile *file,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
+ide_persistent_map_load_file_async (IdePersistentMap *self,
+ GFile *file,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
g_autoptr(GTask) task = NULL;
g_return_if_fail (IDE_IS_PERSISTENT_MAP (self));
+ g_return_if_fail (self->load_called == FALSE);
g_return_if_fail (G_IS_FILE (file));
g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
- task = g_task_new (self, cancellable, callback, user_data);
+ self->load_called = TRUE;
+ task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, ide_persistent_map_load_file_async);
g_task_set_priority (task, G_PRIORITY_LOW);
g_task_set_task_data (task, g_object_ref (file), g_object_unref);
- g_task_set_source_tag (task, ide_persistent_map_load_file_async);
-
g_task_run_in_thread (task, ide_persistent_map_load_file_worker);
}
/**
* ide_persistent_map_load_file_finish:
- * @self: An #IdePersistentMap instance.
- * @result: result of loading process
- * @error: error in loading process
+ * @self: an #IdePersistentMap
+ * @result: a #GAsyncResult provided to callback
+ * @error: a location for a #GError, or %NULL
*
* Returns: Whether file is loaded or not.
*/
gboolean
-ide_persistent_map_load_file_finish (IdePersistentMap *self,
+ide_persistent_map_load_file_finish (IdePersistentMap *self,
GAsyncResult *result,
GError **error)
{
- GTask *task = (GTask *)result;
-
- g_return_val_if_fail (G_IS_TASK (task), FALSE);
+ g_return_val_if_fail (IDE_IS_PERSISTENT_MAP (self), FALSE);
+ g_return_val_if_fail (G_IS_TASK (result), FALSE);
- return g_task_propagate_boolean (task, error);
+ return g_task_propagate_boolean (G_TASK (result), error);
}
/**
@@ -253,22 +251,23 @@ ide_persistent_map_lookup_value (IdePersistentMap *self,
gint64 r;
g_return_val_if_fail (IDE_IS_PERSISTENT_MAP (self), NULL);
- g_return_val_if_fail (key != NULL, NULL);
-
+ g_return_val_if_fail (self->loaded, NULL);
+ g_return_val_if_fail (self != NULL, NULL);
+ g_return_val_if_fail (self->kvpairs != NULL, NULL);
+ g_return_val_if_fail (self->keys != NULL, NULL);
+ g_return_val_if_fail (self->values != NULL, NULL);
+ g_return_val_if_fail (self->n_kvpairs < G_MAXINT64, NULL);
+
+ /* unsigned long to signed long */
+ r = (gint64)self->n_kvpairs - 1;
l = 0;
- r = (gint64)self->n_kvpairs - 1; /* unsigned long to signed long */
while (l <= r)
{
- gint64 m;
- gint cmp;
-
- m = (l + r)/2;
-
- cmp = g_strcmp0 (key, &self->keys [self->kvpairs [m].key]);
+ gint64 m = (l + r) / 2;
+ gint cmp = g_strcmp0 (key, &self->keys [self->kvpairs [m].key]);
if (cmp < 0)
-
r = m - 1;
else if (cmp > 0)
l = m + 1;
@@ -277,19 +276,14 @@ ide_persistent_map_lookup_value (IdePersistentMap *self,
value = g_variant_get_child_value (self->values, self->kvpairs [m].value);
break;
}
+
+ g_assert (l >= 0);
+ g_assert (r >= 0);
+ g_assert (r >= l);
}
if (value != NULL && self->byte_order != G_BYTE_ORDER)
- {
- g_autoptr(GVariant) new_value = NULL;
- GVariant *t;
-
- new_value = g_variant_byteswap (value);
- /* swap new_value with value */
- t = value;
- value = new_value;
- new_value = t;
- }
+ return g_variant_byteswap (value);
return g_steal_pointer (&value);
}
@@ -298,15 +292,16 @@ gint64
ide_persistent_map_builder_get_metadata_int64 (IdePersistentMap *self,
const gchar *key)
{
- guint64 value;
+ guint64 value = 0;
g_return_val_if_fail (IDE_IS_PERSISTENT_MAP (self), 0);
g_return_val_if_fail (key != NULL, 0);
+ g_return_val_if_fail (self->metadata != NULL, 0);
- if (g_variant_dict_lookup (self->metadata, key, "x", &value))
- return value;
+ if (!g_variant_dict_lookup (self->metadata, key, "x", &value))
+ return 0;
- return 0;
+ return value;
}
static void
@@ -314,11 +309,15 @@ ide_persistent_map_finalize (GObject *object)
{
IdePersistentMap *self = (IdePersistentMap *)object;
- g_clear_pointer (&self->mapped_file, g_mapped_file_unref);
+ self->keys = NULL;
+ self->kvpairs = NULL;
+
+ g_clear_pointer (&self->data, g_variant_unref);
g_clear_pointer (&self->keys_var, g_variant_unref);
g_clear_pointer (&self->values, g_variant_unref);
g_clear_pointer (&self->kvpairs_var, g_variant_unref);
g_clear_pointer (&self->metadata, g_variant_dict_unref);
+ g_clear_pointer (&self->mapped_file, g_mapped_file_unref);
G_OBJECT_CLASS (ide_persistent_map_parent_class)->finalize (object);
}
@@ -336,7 +335,7 @@ ide_persistent_map_class_init (IdePersistentMapClass *self)
object_class->finalize = ide_persistent_map_finalize;
}
-IdePersistentMap*
+IdePersistentMap *
ide_persistent_map_new (void)
{
return g_object_new (IDE_TYPE_PERSISTENT_MAP, NULL);
diff --git a/src/plugins/code-index/ide-persistent-map.h b/src/plugins/code-index/ide-persistent-map.h
index 9c095b120..459a37d4b 100644
--- a/src/plugins/code-index/ide-persistent-map.h
+++ b/src/plugins/code-index/ide-persistent-map.h
@@ -18,26 +18,26 @@
#pragma once
-#include <glib-object.h>
+#include <gio/gio.h>
#define IDE_TYPE_PERSISTENT_MAP (ide_persistent_map_get_type ())
G_DECLARE_FINAL_TYPE (IdePersistentMap, ide_persistent_map, IDE, PERSISTENT_MAP, GObject)
-IdePersistentMap *ide_persistent_map_new (void);
-gboolean ide_persistent_map_load_file (IdePersistentMap *self,
- GFile *file,
- GCancellable *cancellable,
- GError **error);
-void ide_persistent_map_load_file_async (IdePersistentMap *self,
- GFile *file,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gboolean ide_persistent_map_load_file_finish (IdePersistentMap *self,
- GAsyncResult *result,
- GError **error);
-GVariant *ide_persistent_map_lookup_value (IdePersistentMap *self,
- const gchar *key);
-gint64 ide_persistent_map_builder_get_metadata_int64 (IdePersistentMap *self,
- const gchar *key);
+IdePersistentMap *ide_persistent_map_new (void);
+gboolean ide_persistent_map_load_file (IdePersistentMap *self,
+ GFile *file,
+ GCancellable *cancellable,
+ GError **error);
+void ide_persistent_map_load_file_async (IdePersistentMap *self,
+ GFile *file,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean ide_persistent_map_load_file_finish (IdePersistentMap *self,
+ GAsyncResult *result,
+ GError **error);
+GVariant *ide_persistent_map_lookup_value (IdePersistentMap *self,
+ const gchar *key);
+gint64 ide_persistent_map_builder_get_metadata_int64 (IdePersistentMap *self,
+ const gchar *key);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]