+/*!
+@defgroup api-common-types Common C types
+
+@brief
+ C types common to many parts of the API.
+*/
+
+/*! @{ */
+
+/*!
+@brief
+ \em True value for #bt_bool.
+*/
+#define BT_TRUE 1
+
+/*!
+@brief
+ \em False value for #bt_bool.
+*/
+#define BT_FALSE 0
+
+/*!
+@brief
+ \bt_name boolean type.
+
+The API uses #bt_bool instead of the C99 \c bool type for
+<a href="https://en.wikipedia.org/wiki/Application_binary_interface">application binary interface</a>
+reasons.
+
+Use #BT_TRUE and #BT_FALSE to set and compare #bt_bool variables.
+*/
+typedef int bt_bool;
+
+/*!
+@brief
+ Numeric ID which identifies a user listener function.
+
+Some functions, such as bt_trace_add_destruction_listener(), return a
+listener ID when you add a user listener function to some object. You
+can then use this listener ID to remove the listener from the object.
+*/
+typedef uint64_t bt_listener_id;
+
+/*!
+@brief
+ A
+ <a href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a>,
+ that is, an array of 16 constant bytes.
+*/
+typedef uint8_t const *bt_uuid;
+
+/*!
+@brief
+ Availability of an object's property.
+
+Some getter functions of the API, such as
+bt_event_class_get_log_level(), return, by output parameter, an optional
+object property which is not a pointer. In that case, the function
+either:
+
+- Returns #BT_PROPERTY_AVAILABILITY_AVAILABLE and sets an output
+ parameter to the property's value.
+- Returns #BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE.
+*/
+typedef enum bt_property_availability {
+ /*!
+ @brief
+ Property is available.
+ */
+ BT_PROPERTY_AVAILABILITY_AVAILABLE = 1,
+
+ /*!
+ @brief
+ Property is not available.
+ */
+ BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE = 0,
+} bt_property_availability;
+
+/*!
+@brief
+ Array of constant \bt_p_msg.
+
+Such an array is filled by the
+\link api-msg-iter-cls-meth-next "next" method\endlink of a
+\bt_msg_iter and consumed with bt_message_iterator_next() by another
+message iterator or by a \bt_sink_comp.
+*/
+typedef bt_message const **bt_message_array_const;