aboutsummaryrefslogtreecommitdiff
path: root/libmm-glib
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2022-01-02 15:37:37 +0100
committerAleksander Morgado <aleksander@aleksander.es>2022-01-18 09:00:10 +0000
commitbfb66970f2f1ebb0f3f3af6667bd8443967a339d (patch)
treefe564b072733c13e47d5e635c3f5f12425945ce7 /libmm-glib
parent3ca720144440111af9b3c74d346c61c8eab8275f (diff)
libmm-glib,cell-info: new helpers to implement subclasses
Diffstat (limited to 'libmm-glib')
-rw-r--r--libmm-glib/mm-cell-info.h32
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