bin: compile lttng-sessiond as C++
[lttng-tools.git] / src / common / optional.h
index 0d99fe3224f4e419679d22627a0f4899f0c2a9d2..0501904cbc4d1cfa52a926be158afe5219712646 100644 (file)
@@ -9,7 +9,6 @@
 #define LTTNG_OPTIONAL_H
 
 #include <stdint.h>
-#include <assert.h>
 
 /*
  * Define wrapper structure representing an optional value.
 
 /*
  * This macro is available as a 'convenience' to allow sites that assume
- * an optional value is set to assert() that it is set when accessing it.
+ * an optional value is set to LTTNG_ASSERT() that it is set when accessing it.
  *
  * Since this returns the 'optional' by value, it is not suitable for all
  * wrapped optional types. It is meant to be used with PODs.
  */
 #define LTTNG_OPTIONAL_GET(optional)                   \
-        ({                                             \
-               assert((optional).is_set);              \
+       ({                                              \
+               LTTNG_ASSERT((optional).is_set);                \
                (optional).value;                       \
        })
 
 /*
  * This macro is available as a 'convenience' to allow sites that assume
- * an optional value is set to assert() that it is set when fecthing the
+ * an optional value is set to LTTNG_ASSERT() that it is set when fecthing the
  * underlying value's address.
  */
 #define LTTNG_OPTIONAL_GET_PTR(optional)                       \
        ({                                              \
-               assert((optional).is_set);              \
+               LTTNG_ASSERT((optional).is_set);                \
                &(optional).value;                      \
        })
 
 /*
- * Initialize an optional field.
+ * Initialize an optional field as unset.
  *
  * The wrapped field is set to the value it would gave if it had static storage
  * duration.
  */
-#define LTTNG_OPTIONAL_INIT { .is_set = 0 }
+#define LTTNG_OPTIONAL_INIT_UNSET { .is_set = 0 }
+
+/*
+ * Initialize an optional field as 'set' with a given value.
+ */
+#define LTTNG_OPTIONAL_INIT_VALUE(val) { .is_set = 1, .value = val }
 
 /* Set the value of an optional field. */
 #define LTTNG_OPTIONAL_SET(field_ptr, val)     \
        do {                                    \
-               (field_ptr)->value = (val);     \
                (field_ptr)->is_set = 1;        \
+               (field_ptr)->value = (val);     \
        } while (0)
 
 /* Put an optional field in the "unset" (NULL-ed) state. */
This page took 0.024527 seconds and 4 git commands to generate.