diff options
-rw-r--r-- | libmm-common/mm-common-helpers.c | 61 | ||||
-rw-r--r-- | libmm-common/mm-common-helpers.h | 7 |
2 files changed, 68 insertions, 0 deletions
diff --git a/libmm-common/mm-common-helpers.c b/libmm-common/mm-common-helpers.c index 1115cbe5..3f48e2f1 100644 --- a/libmm-common/mm-common-helpers.c +++ b/libmm-common/mm-common-helpers.c @@ -72,6 +72,67 @@ mm_common_build_sms_storages_string (const MMSmsStorage *storages, return g_string_free (str, FALSE); } +GArray * +mm_common_sms_storages_variant_to_garray (GVariant *variant) +{ + GArray *array = NULL; + + if (variant) { + GVariantIter iter; + guint n; + + g_variant_iter_init (&iter, variant); + n = g_variant_iter_n_children (&iter); + + if (n > 0) { + guint32 storage; + + array = g_array_sized_new (FALSE, FALSE, sizeof (MMSmsStorage), n); + while (g_variant_iter_loop (&iter, "u", &storage)) + g_array_append_val (array, storage); + } + } + + return array; +} + +MMSmsStorage * +mm_common_sms_storages_variant_to_array (GVariant *variant, + guint *n_storages) +{ + GArray *array; + + array = mm_common_sms_storages_variant_to_garray (variant); + if (n_storages) + *n_storages = array->len; + return (MMSmsStorage *) g_array_free (array, FALSE); +} + +GVariant * +mm_common_sms_storages_array_to_variant (const MMSmsStorage *storages, + guint n_storages) +{ + GVariantBuilder builder; + guint i; + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("au")); + + for (i = 0; i < n_storages; i++) + g_variant_builder_add_value (&builder, + g_variant_new_uint32 ((guint32)storages[i])); + return g_variant_builder_end (&builder); +} + +GVariant * +mm_common_sms_storages_garray_to_variant (GArray *array) +{ + if (array) + return mm_common_sms_storages_array_to_variant ((const MMSmsStorage *)array->data, + array->len); + + return mm_common_sms_storages_array_to_variant (NULL, 0); +} + MMModemMode mm_common_get_modes_from_string (const gchar *str, GError **error) diff --git a/libmm-common/mm-common-helpers.h b/libmm-common/mm-common-helpers.h index b4fb3431..4203af96 100644 --- a/libmm-common/mm-common-helpers.h +++ b/libmm-common/mm-common-helpers.h @@ -41,6 +41,13 @@ MMBearerIpFamily mm_common_get_ip_type_from_string (const gchar *str, MMSmsStorage mm_common_get_sms_storage_from_string (const gchar *str, GError **error); +GArray *mm_common_sms_storages_variant_to_garray (GVariant *variant); +MMSmsStorage *mm_common_sms_storages_variant_to_array (GVariant *variant, + guint *n_storages); +GVariant *mm_common_sms_storages_array_to_variant (const MMSmsStorage *storages, + guint n_storages); +GVariant *mm_common_sms_storages_garray_to_variant (GArray *array); + GArray *mm_common_bands_variant_to_garray (GVariant *variant); MMModemBand *mm_common_bands_variant_to_array (GVariant *variant, guint *n_bands); |