[gnome-logs] Define structs for query API



commit 06546ec2708283388cc7f8ae5e329fa69e931c77
Author: Pranav Ganorkar <pranavg189 gmail com>
Date:   Mon May 30 18:22:32 2016 +0530

    Define structs for query API
    
    These structs will be used for passing data from eventviewlist (view)
    to journal model. Also, the functions for allocating and freeing
    them are defined.

 src/gl-journal-model.c |   52 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/gl-journal-model.h |    8 +++++++
 2 files changed, 60 insertions(+), 0 deletions(-)
---
diff --git a/src/gl-journal-model.c b/src/gl-journal-model.c
index b9c19ac..41b445b 100644
--- a/src/gl-journal-model.c
+++ b/src/gl-journal-model.c
@@ -19,6 +19,13 @@
 #include "gl-journal-model.h"
 #include "gl-journal.h"
 
+/* Details of match fields */
+typedef struct GlQueryItem
+{
+    gchar *field_name;
+    gchar *field_value;
+} GlQueryItem;
+
 struct _GlJournalModel
 {
     GObject parent_instance;
@@ -224,6 +231,51 @@ gl_journal_model_set_matches (GlJournalModel      *model,
     gl_journal_model_fetch_more_entries (model, FALSE);
 }
 
+/* Free the given @queryitem */
+static void
+gl_query_item_free (GlQueryItem *queryitem)
+{
+    g_free (queryitem->field_name);
+    g_free (queryitem->field_value);
+
+    g_slice_free (GlQueryItem, queryitem);
+}
+
+/* Free the given @query */
+static void
+gl_query_free (GlQuery *query)
+{
+    g_ptr_array_free (query->queryitems, TRUE);
+
+    g_slice_free (GlQuery, query);
+}
+
+GlQuery *
+gl_query_new (void)
+{
+    GlQuery *query;
+
+    query = g_slice_new (GlQuery);
+
+    query->queryitems = g_ptr_array_new_with_free_func ((GDestroyNotify) gl_query_item_free);
+
+    return query;
+}
+
+static GlQueryItem *
+gl_query_item_new (const gchar *field_name,
+                   const gchar *field_value)
+{
+    GlQueryItem *queryitem;
+
+    queryitem = g_slice_new (GlQueryItem);
+
+    queryitem->field_name = g_strdup (field_name);
+    queryitem->field_value = g_strdup (field_value);
+
+    return queryitem;
+}
+
 gchar *
 gl_journal_model_get_current_boot_time (GlJournalModel *model,
                                         const gchar *boot_match)
diff --git a/src/gl-journal-model.h b/src/gl-journal-model.h
index c793b0a..1d0686d 100644
--- a/src/gl-journal-model.h
+++ b/src/gl-journal-model.h
@@ -21,11 +21,19 @@
 
 #include <gio/gio.h>
 
+/* Resultant query passed to journal model from eventviewlist */
+typedef struct GlQuery
+{
+    GPtrArray *queryitems;   /* array of GlQueryItem structs */
+} GlQuery;
+
 #define GL_TYPE_JOURNAL_MODEL gl_journal_model_get_type()
 G_DECLARE_FINAL_TYPE (GlJournalModel, gl_journal_model, GL, JOURNAL_MODEL, GObject)
 
 GlJournalModel *        gl_journal_model_new                            (void);
 
+GlQuery *               gl_query_new                                    (void);
+
 void                    gl_journal_model_set_matches                    (GlJournalModel      *model,
                                                                          const gchar * const *matches);
 


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