diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2022-01-02 15:37:37 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-01-18 09:00:10 +0000 |
commit | bfb66970f2f1ebb0f3f3af6667bd8443967a339d (patch) | |
tree | fe564b072733c13e47d5e635c3f5f12425945ce7 /libmm-glib | |
parent | 3ca720144440111af9b3c74d346c61c8eab8275f (diff) |
libmm-glib,cell-info: new helpers to implement subclasses
Diffstat (limited to 'libmm-glib')
-rw-r--r-- | libmm-glib/mm-cell-info.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/libmm-glib/mm-cell-info.h b/libmm-glib/mm-cell-info.h index b41c677e..07205521 100644 --- a/libmm-glib/mm-cell-info.h +++ b/libmm-glib/mm-cell-info.h @@ -86,6 +86,38 @@ MMCellInfo *mm_cell_info_new_from_dictionary (GVariant *dictionary, GError **error); gchar *mm_cell_info_build_string (MMCellInfo *self); +/* helpers to implement methods */ + +#define MM_CELL_INFO_NEW_FROM_DICTIONARY_STRING_SET(celltype,NAME,name) do { \ + GVariant *aux; \ + \ + aux = g_variant_dict_lookup_value (dict, PROPERTY_##NAME, G_VARIANT_TYPE_STRING); \ + if (aux) { \ + mm_cell_info_##celltype##_set_##name (self, g_variant_get_string (aux, NULL)); \ + g_variant_unref (aux); \ + } \ + } while (0) + +#define MM_CELL_INFO_NEW_FROM_DICTIONARY_NUM_SET(celltype,NAME,name,NUMTYPE,numtype) do { \ + GVariant *aux; \ + \ + aux = g_variant_dict_lookup_value (dict, PROPERTY_##NAME, G_VARIANT_TYPE_##NUMTYPE); \ + if (aux) { \ + mm_cell_info_##celltype##_set_##name (self, g_variant_get_##numtype (aux)); \ + g_variant_unref (aux); \ + } \ + } while (0) + +#define MM_CELL_INFO_GET_DICTIONARY_INSERT(NAME,name,vartype,INVALID) do { \ + if (self->priv->name != INVALID) \ + g_variant_dict_insert_value (dict, PROPERTY_##NAME, g_variant_new_##vartype (self->priv->name)); \ + } while (0) + +#define MM_CELL_INFO_BUILD_STRING_APPEND(STR,FORMAT,name,INVALID) do { \ + if (self->priv->name != INVALID) \ + g_string_append_printf (str, ", " STR ": " FORMAT, self->priv->name); \ + } while (0) + #endif G_END_DECLS |