[evolution-data-server] [ENamedParameters] Be able to read/write values from/to a simple string
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] [ENamedParameters] Be able to read/write values from/to a simple string
- Date: Tue, 23 Jun 2015 17:52:26 +0000 (UTC)
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]