[evolution-data-server] [ENamedParameters] Be able to read/write values from/to a simple string



commit ca19935d9aa8e54cea8a0f812a4781985ed382d0
Author: Milan Crha <mcrha redhat com>
Date:   Tue Jun 23 19:51:51 2015 +0200

    [ENamedParameters] Be able to read/write values from/to a simple string

 docs/reference/eds/eds-sections.txt |    2 +
 libedataserver/e-data-server-util.c |   71 +++++++++++++++++++++++++++++++++++
 libedataserver/e-data-server-util.h |    3 +
 3 files changed, 76 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/eds/eds-sections.txt b/docs/reference/eds/eds-sections.txt
index bc77cb6..5619287 100644
--- a/docs/reference/eds/eds-sections.txt
+++ b/docs/reference/eds/eds-sections.txt
@@ -2122,6 +2122,7 @@ e_util_get_localedir
 e_util_replace_prefix
 E_TYPE_NAMED_PARAMETERS
 e_named_parameters_new
+e_named_parameters_new_string
 e_named_parameters_new_strv
 e_named_parameters_new_clone
 e_named_parameters_free
@@ -2129,6 +2130,7 @@ e_named_parameters_clear
 e_named_parameters_assign
 e_named_parameters_set
 e_named_parameters_get
+e_named_parameters_to_string
 e_named_parameters_to_strv
 e_named_parameters_test
 e_named_timeout_add
diff --git a/libedataserver/e-data-server-util.c b/libedataserver/e-data-server-util.c
index 1e0e47c..60ce101 100644
--- a/libedataserver/e-data-server-util.c
+++ b/libedataserver/e-data-server-util.c
@@ -2097,6 +2097,45 @@ e_named_parameters_new_strv (const gchar * const *strv)
 }
 
 /**
+ * e_named_parameters_new_string:
+ * @str: a string to be used as a content of a newly created #ENamedParameters
+ *
+ * Creates a new instance of an #ENamedParamters, with initial content being
+ * taken from @str. This should be freed with e_named_parameters_free(),
+ * when no longer needed. Names are compared case insensitively.
+ *
+ * The @str should be created with e_named_parameters_to_string(), to be
+ * properly encoded.
+ *
+ * The structure is not thread safe, if the caller requires thread safety,
+ * then it should provide it on its own.
+ *
+ * Returns: (transfer full): newly allocated #ENamedParameters
+ *
+ * Since: 3.18
+ **/
+ENamedParameters *
+e_named_parameters_new_string (const gchar *str)
+{
+       ENamedParameters *parameters;
+       gchar **split;
+       gint ii;
+
+       g_return_val_if_fail (str != NULL, NULL);
+
+       split = g_strsplit (str, "\n", -1);
+
+       parameters = e_named_parameters_new ();
+       for (ii = 0; split && split[ii]; ii++) {
+               g_ptr_array_add ((GPtrArray *) parameters, g_strcompress (split[ii]));
+       }
+
+       g_strfreev (split);
+
+       return parameters;
+}
+
+/**
  * e_named_parameters_new_clone:
  * @parameters: an #ENamedParameters to be used as a content of a newly
  *    created #ENamedParameters
@@ -2365,6 +2404,38 @@ e_named_parameters_to_strv (const ENamedParameters *parameters)
 }
 
 /**
+ * e_named_parameters_to_string:
+ * @parameters: an #ENamedParameters
+ *
+ * Returns: (transfer full): Contents of @parameters as a string
+ *
+ * Since: 3.18
+ */
+gchar *
+e_named_parameters_to_string (const ENamedParameters *parameters)
+{
+       gchar **strv, *str;
+       gint ii;
+
+       strv = e_named_parameters_to_strv (parameters);
+       if (!strv)
+               return NULL;
+
+       for (ii = 0; strv[ii]; ii++) {
+               gchar *name_and_value = strv[ii];
+
+               strv[ii] = g_strescape (name_and_value, "");
+               g_free (name_and_value);
+       }
+
+       str = g_strjoinv ("\n", strv);
+
+       g_strfreev (strv);
+
+       return str;
+}
+
+/**
  * e_named_parameters_exists:
  * @parameters: an #ENamedParameters
  * @name: name of the parameter whose existence to check
diff --git a/libedataserver/e-data-server-util.h b/libedataserver/e-data-server-util.h
index ddcba0a..42115a2 100644
--- a/libedataserver/e-data-server-util.h
+++ b/libedataserver/e-data-server-util.h
@@ -177,6 +177,8 @@ ENamedParameters *
 ENamedParameters *
                e_named_parameters_new_strv     (const gchar * const *strv);
 ENamedParameters *
+               e_named_parameters_new_string   (const gchar *str);
+ENamedParameters *
                e_named_parameters_new_clone    (const ENamedParameters *parameters);
 void           e_named_parameters_free         (ENamedParameters *parameters);
 void           e_named_parameters_clear        (ENamedParameters *parameters);
@@ -188,6 +190,7 @@ void                e_named_parameters_set          (ENamedParameters *parameters,
 const gchar *  e_named_parameters_get          (const ENamedParameters *parameters,
                                                 const gchar *name);
 gchar **       e_named_parameters_to_strv      (const ENamedParameters *parameters);
+gchar *                e_named_parameters_to_string    (const ENamedParameters *parameters);
 gboolean       e_named_parameters_test         (const ENamedParameters *parameters,
                                                 const gchar *name,
                                                 const gchar *value,


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