[gnome-builder] snippets: add count helper to IdeSourceSnippets
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] snippets: add count helper to IdeSourceSnippets
- Date: Sun, 23 Aug 2015 04:00:33 +0000 (UTC)
commit 0d06ca24a7c2d825638bca1ed9c59126399825c1
Author: Christian Hergert <christian hergert me>
Date: Fri Aug 21 21:56:04 2015 -0700
snippets: add count helper to IdeSourceSnippets
Convenience helper to get the number of snippets.
libide/ide-source-snippets.c | 37 +++++++++++++++++++++++++++++++++----
libide/ide-source-snippets.h | 26 +++++++++++++-------------
2 files changed, 46 insertions(+), 17 deletions(-)
---
diff --git a/libide/ide-source-snippets.c b/libide/ide-source-snippets.c
index dd4ffc4..a8235b4 100644
--- a/libide/ide-source-snippets.c
+++ b/libide/ide-source-snippets.c
@@ -99,11 +99,11 @@ ide_source_snippets_add (IdeSourceSnippets *snippets,
trie_insert (snippets->snippets, trigger, g_object_ref (snippet));
}
-gboolean
+static gboolean
ide_source_snippets_foreach_cb (Trie *trie,
- const gchar *key,
- gpointer value,
- gpointer user_data)
+ const gchar *key,
+ gpointer value,
+ gpointer user_data)
{
gpointer *closure = user_data;
@@ -164,3 +164,32 @@ ide_source_snippets_init (IdeSourceSnippets *snippets)
{
snippets->snippets = trie_new (g_object_unref);
}
+
+static gboolean
+increment_count (Trie *trie,
+ const gchar *key,
+ gpointer value,
+ gpointer user_data)
+{
+ guint *count = user_data;
+ (*count)++;
+ return FALSE;
+}
+
+guint
+ide_source_snippets_count (IdeSourceSnippets *self)
+{
+ guint count = 0;
+
+ g_return_val_if_fail (IDE_IS_SOURCE_SNIPPETS (self), 0);
+
+ trie_traverse (self->snippets,
+ "",
+ G_PRE_ORDER,
+ G_TRAVERSE_LEAVES,
+ -1,
+ increment_count,
+ &count);
+
+ return count;
+}
diff --git a/libide/ide-source-snippets.h b/libide/ide-source-snippets.h
index 008b4f7..c72f171 100644
--- a/libide/ide-source-snippets.h
+++ b/libide/ide-source-snippets.h
@@ -27,19 +27,19 @@ G_BEGIN_DECLS
#define IDE_TYPE_SOURCE_SNIPPETS (ide_source_snippets_get_type())
-G_DECLARE_FINAL_TYPE (IdeSourceSnippets, ide_source_snippets,
- IDE, SOURCE_SNIPPETS, GObject)
-
-void ide_source_snippets_add (IdeSourceSnippets *snippets,
- IdeSourceSnippet *snippet);
-void ide_source_snippets_clear (IdeSourceSnippets *snippets);
-void ide_source_snippets_merge (IdeSourceSnippets *snippets,
- IdeSourceSnippets *other);
-IdeSourceSnippets *ide_source_snippets_new (void);
-void ide_source_snippets_foreach (IdeSourceSnippets *snippets,
- const gchar *prefix,
- GFunc foreach_func,
- gpointer user_data);
+G_DECLARE_FINAL_TYPE (IdeSourceSnippets, ide_source_snippets, IDE, SOURCE_SNIPPETS, GObject)
+
+void ide_source_snippets_add (IdeSourceSnippets *snippets,
+ IdeSourceSnippet *snippet);
+void ide_source_snippets_clear (IdeSourceSnippets *snippets);
+void ide_source_snippets_merge (IdeSourceSnippets *snippets,
+ IdeSourceSnippets *other);
+guint ide_source_snippets_count (IdeSourceSnippets *self);
+IdeSourceSnippets *ide_source_snippets_new (void);
+void ide_source_snippets_foreach (IdeSourceSnippets *snippets,
+ const gchar *prefix,
+ GFunc foreach_func,
+ gpointer user_data);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]