library: Add macro to validate and get gvariant without explicit 'return' 37/279137/3
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Tue, 2 Aug 2022 11:11:01 +0000 (13:11 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 4 Aug 2022 22:12:06 +0000 (00:12 +0200)
This allows more flexible handling of type errors, without creating
new macro for each new case.

Change-Id: I6ea3311ed24da9021e6a2b65eab31cea894ae0c0

libsessiond/src/lib.h

index 2915b55df0b61af8dc83f74c303ad65f66d8948d..a57d81d82b0b08ee77fc78b97a1da5a6cf099226 100644 (file)
@@ -41,6 +41,9 @@ typedef struct {
 #define COMPARATOR_RESULT_SAME_ 0
 #define COMPARATOR_RESULT_DIFFERENT_ -1
 
+// Implementation note: g_variant_get() returns void, hence ", true"
+#define typechecked_g_variant_get(var, type, args...) (g_variant_is_of_type(var, G_VARIANT_TYPE(type)) ? (g_variant_get(var, type, args), true) : false)
+
 //use when function return err value
 #define maybe_g_variant_get_or_ret_diff_(var, c_str_, args...) \
        if (!g_variant_is_of_type(var, G_VARIANT_TYPE(c_str_) )) { return COMPARATOR_RESULT_DIFFERENT_ ; } \